Ich baue einen Verkehrssimulator in Unity. Ich muss mein Spiel als Video aufnehmen, damit ich das Video für maschinelles Lernen verwenden kann. Ich habe Fraps für das gleiche verwendet, fand aber nicht, dass es für mich funktioniert, da es nicht in Unity ist. Wie kann ich eine Videoaufnahme des Gameplays machen?
8
Antworten:
Es wird schwierig sein.
Sie müssen eine Bildschirmaufzeichnungssoftware mit einer API finden, damit diese von einer Clientanwendung aktiviert werden kann.
Bandicam ( http://www.bandicam.com/ ) scheint über eine grundlegende API für die Bildschirmaufnahme zu verfügen. Die APIs befinden sich in C / C ++, aber theoretisch können Sie die C-API von einer C # /. NET-Anwendung aus aufrufen.
Auf Ihrem Benutzer muss Bandicam installiert sein, und Sie sind nur auf Windows-Plattformen beschränkt.
Es wäre großartig, ShadowPlay zu aktivieren, oder die anderen vom Hersteller unterstützten Erfassungssysteme verfügen über APIs, aber im Moment sind mir keine bekannt. Sie hätten gedacht, dass die Game Capture-Funktion von Windows 10 ein SDK enthält, aber ich kann keinen Verweis auf eines sehen.
https://www.bandicam.com/company/sdk/bandi_capture_library/help/Chapter3.html
quelle
Ich habe eine etwas vereinfachte Lösung, mit der ich in dieser Frage Videos gemacht habe ....
Zum Aufzeichnen des Bildschirms verwende ich den Iceream-Bildschirmrekorder ( in keiner Weise nur ein zufriedener Benutzer )
Sie können damit einen Abschnitt auf dem Bildschirm auswählen und aufzeichnen. Wenn Sie also manuell arbeiten möchten, ist dies möglicherweise der Fall
quelle
Sie können dazu die Unity-API verwenden. Keine Notwendigkeit für Dritte. Unity rendert einen Frame selbstständig. Warum benötigen Sie etwas, um ihn erneut zu rendern oder die gerenderte Textur aus dem Speicher außerhalb zu speichern, wenn Sie dies in C # tun können? Richtig, das ist nicht nötig. Aber warum ist das so schwer? Warum kann ich diese Textur nicht einfach nehmen? Ich habe nicht wirklich die richtige Antwort darauf, weil ich kein Experte für GPU bin. Aber soweit ich weiß, löscht die GPU, obwohl sie über Speicher verfügt, sehr oft alles von dort, ich denke, jeder Frame. (Bitte, wenn Sie dieses Thema über GPU viel besser verstehen als ich, erklären Sie es in Kommentaren, ich bin sehr dankbar dafür).
Dieses Unity-Forum widmet sich dieser Frage: Wie kann man richtig auf den gerenderten Tiefenpuffer zugreifen?
Mit Unity kann die Kamera manuell gerendert werden: Camera Render .
Mit etwas Code:
Wenn dies VR ist oder nicht, wäre dieser Thread auf jeden Fall hilfreich und spart viel Zeit bei der Suche nach den Performance-Hits: Echtzeit-Bildaufnahme in Unity .
Hier ist der Code aus der Unity-Dokumentation zum Speichern von Rendering in PNG.
quelle