Workflowoptimierung für multible Objekte

  • Workflowoptimierung für multible Objekte

    Hi,

    seit längerer Zeit beschäftige ich mich nun mit den Thema wie man am besten UV´s für mehrere Objekte vereint.
    Da in der Shoutbox nun der Wunsch kam darüber einmal ausführlicher zu reden habe ich diesen Thread geöffnet.

    Kurz zur Situation.

    Beispiel : Ich habe einen Mech Grundgerüst modelliert und möchte nun diesen Mech mit verschiedenen Waffen oder Hilfsmodulen ausstatten die man auch so im Spiel sehen soll.
    Also fange ich an verschiedene Objekte zu basteln, Laserwaffen, Raketenwerfer, Scanner, Schildgenerator.
    Jetzt nach dem ich VORERST fertig bin stehe ich vor der ersten Frage .... wie bringe ich alles zusammen ?

    Option 1. Jedes Objekt wird für sich selbst unwrapped und texturiert. Somit besteht der Mech nachher aus seinem Material + jeweils ein Material für jedes Modul. Besitzt also der Mech 10 Module habe ich 11 Materialien auf diesen Mech. Das wirkt sich natürlich auf die Drawcalls aus.

    Option 2. Ich schmeiße alle Objekte zusammen also Mech + Module, mache daraus eine einzige UV, texturiere und fertig. Der Mech hat ein Material aber wenn ich die Module für einen anderen Mech verwenden möchte, muss ich erneut texturieren. Kommt ein Modul hinzu, muss ich neu texturieren oder aber ein weiteres Material hinzufügen.

    Option 3. ich erstelle 2 Materialien einen für den Mech und eins für die Module..gleiches Problem wie in Option2 , wenn neue Module hinzukommen muss ich eine neue UV erstellen und ein Material kommt hinzu. Dann kommt auch noch hinzu das ich erst wieder texturieren könnte wenn der nächste Texturatlas vollständig ist.

    Option 4. Ich modelliere und texturiere jedes Modell für sich. Am Ende erstelle ich einen Texturatlas, Dann schiebe ich die einzelnen UV´s blockweise aneinander und wiederhole das mit den Grafiken, so das jeder Objekt UV Block an dem anderen hängt und ich am Ende den Texturatlas fertig habe.
    Problem ist hier das ich nicht neu skalieren kann oder UV Islands verschieben kann, das würde zwar in der UV gehen aber die vorhandenen Grafiken wäre dahin.

    Was ich jetzt gerne machen würde (was aber wohl nicht geht..bisher) ist, Option 4. jedoch mit einem Programm wo ich die UV mit den vorhandenen texturen neu verschieben und skalieren kann.
    Der Vorteil wäre das ich viele einzelne Objekte fertig stellen kann und später diese dann in einzelnen Texturatlanten zusammenschieben und neu skalieren kann.
    Kommt ein neues Objekt dazu dann verschiebe ich die UV Islands oder skaliere sie kleiner und das Programm würde automatisch die Texturen zurecht rücken und anpassen.

    Leider gibt es so ein Tool wohl nicht...schade eigentlich weil es ja fast alles gibt.
    Ich wüsste sogar wie man das programmieren könnte vom Ablauf her, doch leider bin ich nicht so fit in Grafikprogrammierung.


    Falls also jemand einen besseren Weg kennt oder doch so ein Programm...ja dann raus damit
    hier kann man meine Modelle kaufen: cgtrader.com/harlyk
    DAS GRÖSSTE KOMMUNIKATIONSPROBLEM IST,DASS WIR NICHT ZUHÖREN, UM ZU VERSTEHEN. WIR HÖREN ZU, UM ZU ANTWORTEN.
  • Nochmal zum Mitschreiben: Du willst im Prinzip viele Objekte einzeln Mappen (Mehre UVs) dann möchtest du diese vielen UVs je nach Bedarf zusammen machen ? Hierbei sollen sowohl die Shells als auch die bereits vorhanden Texturen an den neuen UV-Space angepasst werden ?

    Du Texturen müssten dann Vector basierend sein damit die Textur Informationen verlustfrei skaliert werden können. Du bräuchtest einen Auto Packer der die Shells Automatisch neu anordnet und gegenfalls die Textur Shells dreht und skaliert.

    Der Gedanke finde ich nicht schlecht aber umso mehr Texturen du in eine packst umso größter müsste dann auch die Resolution werden. Da frage ich mich ob es nicht sinnvoller wäre lieber viele einzelne Materials zu verwenden.
  • Korrekt Sleepy,

    wenn man nur jedes einzelne Objekt auf 4k Texturiert könnte der Autopacker die Texturen gleichzeitig runter skalieren.
    Somit wäre es immer Verlustfrei wenn man etwas doch lieber größer hätte da immer runter und nie hoch skaliert werden würde.

    Das man dann am Ende statt viele 512 eine 4k Map hätte ist klar.
    Die Summe hätte man ja eh an zu ladenen Grafiken nur ist es ja immer besser eine große statt viele kleine zu laden und die Drawcalls würden auch drastisch reduziert werden.

    Das ist ja der Ursprungssinn eines Atlases
    hier kann man meine Modelle kaufen: cgtrader.com/harlyk
    DAS GRÖSSTE KOMMUNIKATIONSPROBLEM IST,DASS WIR NICHT ZUHÖREN, UM ZU VERSTEHEN. WIR HÖREN ZU, UM ZU ANTWORTEN.
  • Wenn du nicht genau sagen kannst, wie viele Waffen und Zusatzmodule letztendlich entstehen sollen ist eine Planung recht schwierig.

    Ich würde mir wohl erstmal darüber klar werden wollen um nicht bei jedem neuen Teil alles wieder von vorne remappen zu müssen.

    Wie ich schon in der Shoutbox vorgeschlagen habe:
    benutz doch xNormal

    Dort die einzelnen Objekte unter Highpoly und die jeweilige Einzeltextur als basetexture reinladen und ein kombiniertes Mesh mit angepassten UVs fürs baking unter Lowpoly laden.

    Wenn du deine Texturemap von vornherein in Quadranten einteilst und dich nach gewissen Größenvorgaben richtest, z.B. Mainbody ist 3072x3072, rechts und unten können eine reihe 1024er oder ne zweierreihe 512er Texturkacheln hinzugefügt werden, dann hast du zumindest etwas Spielraum.



    Der Nachteil ist, das du bewusst UV Platz freilässt für eventuelle spätere Ergänzungen und das auch dieser Platz begrenzt ist.
    Je nachdem wie viele Bauteile da noch dazu kommen könnten, müsste später möglicherweise trotzdem eine zweiter Texturatlas angelegt werden.

    Ich würde mir daher überlegen ob es nicht Sinn macht, die Zusatzmodule an sich etwas modularer zu halten, so das sie viel auf wiederverwendbaren Elementen aufbauen.

    Statt für jedes neue Modul ne extra Textur und neuen UV Space zu brauchen, werden die dann einfach aus Teilen schon vorhandener Module neu zusammengesetzt.
  • Ich mache es im Moment so, dass ich meine Objekte für eine erweiterbare Drohne kenne.
    für diese Objekte habe ich mir ein Texturatlas gebaut. Dieser hat im Moment auch noch etwas Platz
    für das ein oder andere Teil. Die Farbe ist grundsätzlich "Weis" weil ich dann über Masken die
    Farben in der Unreal ändern kann und meine Scratch-Edges behalten kann.

    Da ich die Teile auch im Level liegen habe brauch ich so oder so zwei Materials. Die Drohne hat ihr Grundmaterial.
    Ich bin jetzt am Überlegen, ob ich nicht die Drohne komplett auswechsel wenn ich ein Add-On drauf habe..
    Da ich sonst 4 -5 Objekte hätte. Da wären dann zwei Materials auch wieder egal weil ich einfach zu viel Objekte habe.

    Wichtig ist doch zu wissen ob es wirklich so ein Drama wäre, wenn die DrawCalls steigen ? Plattform usw.
    Genau so, nur anders....
Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.