Render Target auf Sprite übertragen ?

    • Offizieller Beitrag

    Nehmen wir mal an ihr möchtet sehr viele (tausende) Charakter aus der Third Person oder Topdown Perspektive Spawnen.


    Mir kam die Idee den 3D Charakter via Rendertarget auf Spirtes zu übertragen die immer zur Kamera ausgerichtet sind.


    Würde dass funktionieren ?


    Geht das auch wenn die unterschiedlichen Charakter aus verschiedenen Richtungen gesehen werden.

    Kann ich so vielleicht auch ein Spritesheet erstellen ?


    So in der Art nur nicht ganz so sehr Pixelart und mehr Perspektiven.

    https://www.pngjoy.com/pngm/23…sheet-transparent-png.png

    • Offizieller Beitrag

    Stell dir ein zb ein Org als 3D Modell vor, auf ihn sind mehre Kamers rund um Gericht. zb 8 Kamera einmal rings rum im 45 Grad Winkel. (8 * 45 grad = 360)


    Ich meine die Top Down oder Thirdperson Perspektive. Läuft der Org nun vorwärts, wird die hintere Kamera verwendet, die auf den Rücken des Orgs gerichtet ist.

    DIeses Bild möchte ich dann auf eine Plane übertragen.


    Somit reduziert sich der Polycount von einen Tausend pro Charakter auf genau zwei Tris.


    Ich frag mich ob man so eine große Org oder Alien Arme realisieren könnte.


    Ich glaube wenn Kamera Winkel stimmt, dann sieht man auch nicht das die Charakter eigentlich Spirtes sind.


    Im Prinzip geht darum ein 3D Charakter zur Runtime abzufilmen und das Bild auf eine Plane zu übertragen.

  • Sowas?

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Packst dein Orga in ein BP mit Scene Capture 2D und dann auf ein oder mehrere RenderTargets+Mat

  • Ich glaube wenn Kamera Winkel stimmt, dann sieht man auch nicht das die Charakter eigentlich Spirtes sind.


    Im Prinzip geht darum ein 3D Charakter zur Runtime abzufilmen und das Bild auf eine Plane zu übertragen.

    Rein theoretisch, natürlich mit einigen Änderungen reicht dir bei meinem Tutorial eine Kamera aus, und du würdest gar nicht sehen, dass es ein Sprite ist. Du kannst in dem Teil wo der Actor abgefilmt wird die Kamera ja schon in die richtige Position bringen und dann eben halt über den Kamera Pawn dafür sorgen, dass die Kamera halt nicht mit dreht.


    Ursprünglich wollte ich das Tutorial ja dafür machen, dass man keine extra Sprites oder Icons für das Inventar erstellen muss. Man könnte dann bei einem Schwert halt das Kamerabild im Inventory abbilden, vielleicht auch mit einer leichten Drehung oder was auch immer. Hat dann noch den Vorteil, dass man zum Beispiel bei einem RPG noch andere Spezial Effects mit einbauen kann, zum Beispiel lodernde und animierte Flammen bei einem ganz besonderem Schwert oder so. Ist alles möglich.


    Ich habe das Tutorial halt nur nicht als Inventory geschrieben, weil ich damals noch kein anständiges Inventorysystem entwickelt hatte, und jetzt eigentlich auch noch nicht. Man selbst ist ja irgendwie immer unzufrieden, von daher kann das auch noch dauern.


    OK, das Tutorial ist inzwischen technisch vielleicht nicht mehr auf meiner besten Wissensbasis entstanden, da kann man noch einiges optimieren. Aber es müsste funktionieren, wenn du den Aktor halt entsprechend umarbeitest, dass sich die Figur halt in die Laufrichtung dreht usw.

    • Offizieller Beitrag

    Von der Theorie gibts meiner Meinung nach zwei Möglichkeiten:


    1. So wie du es gemacht hast, mit einem echt existierenden Charakter der in Runtime abgefilmt wird und das Bild auf eine Plane projiziert wird.


    Der Vorteil hierbei wäre, dass auch alle Animationen in Echtzeit übertragen werden.


    Der Nachteil: Wenn ich das Bild auf sehr viele Charakter wo unterschiedliches passiert

    zb. Der eine Läuft vorwärts, der andere Kämpft, der andere springt usw, dann brauche ich mehre Rendertargets. Im Prinzip für jede Animation. Aber Charakter die gerade das selbe tun, könnte auch der selbe Rendertarget verwendet werden.

    zb 100 Orcs laufen, 150 Kämpfen 20 schwimmen usw. Das wären nun 3 Rendertargets die ich brauche.


    2.Möglichkeit zwei: Ich Filme alle Animationen nicht zur Runtime ab und erstelle ein Spritesheet worin alle Bilder gespeichert sind.


    Vorteil: Vermutlich performanter da es im Prinzip vorgerenderte Spitesheets sind.

    Nachteil: Verpixelt da ja ganz viele Spirtes auf eine Poweroftwo Textur passen müssen.


    Ich werde das beides ausprobieren.

  • Ja, da kann ich dir momentan allerdings auch nicht helfen. Ich sehe da zwar dein Problem, aber irgendwas in mir sagt dass da ein Denkfehler oder Logikfehler vorliegt. Ich weiß nur gerade nicht wo.


    Das einzige, was ich mir dann höchstens noch vorstellen könnte, ist der erste Punkt, dass du verschiedene Modelle hast, einer läuft, einer schwimmt und einer kämpft oder so, und du dann wie bei normalen 3D Animationen halt umstellst welche Animation auf das Rendertarget projiziert werden soll. So funktioniert es ja auch bei Spriteanimationen und irgendwie ja auch bei 3D-Animationen. Die Frage ist dann halt, kannst du das instanzieren? Weil es wird ja nicht jeder in die gleiche Richtung laufen usw.


    Bei Punkt zwei würde ich dir dann aber schon fast zu einem speziellen Programm zur Erstellung von Spriteanimationen raten. Da gibt es bestimmt einige, ich war der Meinung etwas in der Richtung auch schon einmal gesehen zu haben. 3D-Modell rein und Spriteanimation raus. Da brauchst du ja nicht alles in der Engine kompliziert hin und her abfilmen.

    • Offizieller Beitrag

    Die Frage ist dann halt, kannst du das instanzieren? Weil es wird ja nicht jeder in die gleiche Richtung laufen usw

    Ganz genau und ob es dann noch einen Performace Vorteil gibt.

    Mich interessiert wieviele "Männchen" man so anzeigen lassen könnte.


    Reintheoretisch sind es ja nur planes mit 2 Tris. Eine Millionen Tris sollte selbst ein Schlechter Rechner verkraften. (Was explizit der Polycount angeht. Demnach dürfte da einiges möglich sein ohne die Schatten Berechnung.

  • Wie gesagt, ich bin mir nicht ganz sicher, ob du dich da nicht verrennst. Also ob du da wirklich Vorteile von hast. Also vielleicht nicht nur von der Performance her, aber halt auch von der Logik und dem Aufwand her.


    Richtig programmiert ist ja so einiges möglich, und offensichtlich geht es dir um eine gewisse Menge an Orcs usw.


    Nur da stellt sich mir dann wieder die Frage, wie viele Orcs braucht der Spieler als Gegner, bzw. muss er diese auch alle gleichzeitig auf dem Schirm haben?


    Und dann, ich weiß aber nicht ob das jetzt schon mit Niagara möglich ist, aber spätestens ab der Version 5 der Engine, kannst du ja auch Aktoren wie Partikel darstellen.


    Zudem ist ja auch erst kürzlich (oder kommt zumindest bald) ein Zombieshooter raus, den ich mir auf jeden Fall nicht kaufen werde weil er nicht mein Ding ist, wo dann wirklich tausende Zombies auf den Spieler losgehen. Ich habe darüber Videos gesehen, wo dann wirklich so eine Schwämme von Zombies durch die Straßen gefegt ist. Von der Dynamik her sah das fast aus wie eine Flüssigkeitssimulation. Also muss es auch irgendwie mit 3D-Modellen direkt gehen. Allerdings weiß ich nun nicht welche Engine dafür verwendet wurde.


    Ich weiß nicht wie das Spiel heißt, aber ich kann ja mal versuchen ein paar Videos trotzdem zu finden.


    Heißt World War Z... hätte ich mir auch so denken können...

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    • Offizieller Beitrag

    Mein Ziel ist es, da aus einem Spawnpunkt in bestimmten Zeitintervallen Einheiten spawnen die Richtung des Gegners läuft wo ebenfalls EInheiten Spawnen.


    Die Einheiten bekämpfen sich gegenseitig und dafür bekommt man Punkte oder Geld.


    Für das Geld kann man nun die Einheiten Upgraden so das sie mehr Schaden machen oder man verbessert die Schilde so das die Einheiten mehr Damage einstecken könnte. (Wettrüsten)

    Auch die Spawnzeit soll man Updaten können, so das schneller Einheiten aus dem Spawnpunkt kommen.


    Das eigentliche Ziel ist es aber andere Gebiete einzunehmen und dort ebenfalls einen Spawnpunkt einzurichten wo ebenfalls Einheiten Spawnen. Wenn es so 1000 Einheiten gleichzeitig gäbe, wäre das schon nice.

    DIe Masse an Einheiten dezimiert sich dann gegenseitig.


    Das ist meine grobe Idee.

  • Das sollte aber auch normal zu machen sein denke ich. Wie gesagt, ich glaube du denkst da zu kompliziert. Mache ich ja auch häufig, daher kenne ich das zur Genüge.


    Und wenn du in der Topdownperspektive arbeitest, wie detailliert müssen die Modelle denn überhaupt sein? Von daher kannst du an der Stelle vielleicht viel besser einsparen. Denn auch kompliziertes umhergerechne braucht Rechenleistung.

    • Offizieller Beitrag

    Und wenn du in der Topdownperspektive arbeitest, wie detailliert müssen die Modelle denn überhaupt sein?

    Nicht sonderlich. Soll so gut wie möglich aussehen, damit es mit so vielen Einheiten wie möglich flüssig läuft.

    Von daher kannst du an der Stelle vielleicht viel besser einsparen.

    Deswegen die Idee nur Planes zu verwenden. Mein Gedanke ist auch nur theoretisch und der worst case.