Ich versuche zu lernen, wie man in Unity manuell einen Betrüger macht - ohne vorgefertigte Lösungen.
Meine erste Vermutung ist, dass dies erreicht werden sollte, indem RenderTexture und eine zweite Kamera verwendet werden und dann verschiedene "Schnappschüsse" von verschiedenen Winkeln des Objekts gemacht werden. Wenn es bessere Alternativen in Bezug auf die Leistung gibt (auch wenn dies schwieriger zu implementieren ist), würde ich gerne davon hören.
Falls dies der einzige Pfad ist, habe ich gelernt, wie man per Skript von einer Kamera zu einer Textur rendert, aber ich konnte immer noch nicht herausfinden, wie das Folgende funktioniert, was ich zuerst tun muss: wie man rendert - ein bestimmtes Objekt ohne Hintergrund der Kamera (dh wenn der Rest der Textur transparent ist) auf performante Weise zu texturieren?
Hinweise, Vorschläge oder zumindest Linkempfehlungen sind großartig.
Danke im Voraus.
Antworten:
Es gibt verschiedene Betrügertechniken.
Der Detaillierungsgrad ist wahrscheinlich am einfachsten zu erreichen, weist jedoch zwei Hauptnachteile auf. Der spürbare Pop-Effekt beim Wechsel zwischen Modellen mit niedriger und hoher Auflösung, der durch allmähliche Übergänge zwischen LODs behoben wird. Das zweite Problem ist, dass es VIEL mehr Arbeit für den Künstler ist, LODs für jedes einzelne Modell zu generieren. Es gibt einen GDC-Vortrag über eine automatisierte Methode zur Generierung von LODS - "Automatisierte Detaillierungsstufe für HALO: REACH"
Eine einfachere Technik wäre das Billboarding, bei dem Sie nur ein flaches Polygon anstelle eines Netzes mit niedriger Auflösung verwenden. Dieses Polygon ist der Kamera zugewandt und wird aus einem Render Ihres Modells strukturiert. Diese Methode erfordert mehrere unterschiedliche Ansichten Ihres Objekts, ähnlich wie die Feinde im Untergang. Sie können alle Ihre Ansichten in einen Texturatlas übertragen. Moderne Spiele verwenden diesen Ansatz, wie Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI
Sie können auch mehrere verschiedene statische Werbetafeln verwenden und diese wie in diesem Einheitspaket kombinieren. Https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/
Aber der beste Weg (was ich denke, dass Sie wollen) ist das dynamische Rendern Ihrer Werbetafeln, wie in diesem Gamasutra-Artikel. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php Dies wurde erstmals 1998 von Jurrassic Park: Trespasser durchgeführt, es ist also keine neue Technik. Schauen Sie sich die Codeüberprüfung hier an: http://fabiensanglard.net/trespasser/index.php Scrollen Sie zum Abschnitt über Wavelets, um deren Betrüger zu sehen.
Mit Ausnahme des Standard-LOD-Ansatzes besteht Ihr erster Schritt wahrscheinlich darin, ein Tutorial für die Rendertextur zu finden. Die Ausrichtung der renderTexture-Kamera muss mit der Ihrer Hauptkamera übereinstimmen, jedoch aus Gründen der Effizienz um das gameObject herum zugeschnitten sein. Sie müssen die GameObject (s), die Sie rendern möchten, mit einer Culling-Maske isolieren. Setzen Sie die klaren Flaggen der Kamera so, dass Sie einen transparenten Hintergrund erhalten. Rendern Sie dann eine Betrüger-Werbetafel anstelle des ursprünglichen Objekts.
quelle