Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SwordArt

Treue Seele

  • »SwordArt« ist der Autor dieses Themas

Beiträge: 179

Wohnort: Weimar

Beruf: Schule

  • Private Nachricht senden

1

16.12.2014, 17:27

UV Map für mein Gebäude

Hey Leute. Ich bin momentan dran, meine Gebäude zu texturieren, jedoch mit folgendem Problem: Ich bin zu unsicher ;)

Ich weiß nicht, was besser geeignet wäre. Entweder ich mach 1 UVMap, welche das gesamte Gebäude enthält - oder 2 UVMaps, wo eine für die Wände - und die andere für Kleinkram wie Fenster, Türen, Dachziegel und die Steinumrandungen gedacht ist.

Erzählt mal, für welche Teile des Gebäudes ihr eine UVmap machen würdet, oder ob eine reicht.

Foto:

http://adobe.ly/1qWwITo

Edit: In der Unreal Engine ist es ja möglich, mehre Materialien auf einen Objekt aufzutragen und somit auch mehrere UV Maps.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SwordArt« (17.12.2014, 05:40)


SlinDev

Treue Seele

Beiträge: 142

Wohnort: Lübeck

Beruf: Programmierer

  • Private Nachricht senden

2

18.12.2014, 01:40

Ob ein oder 2 Texturen ist ziemlich egal, wenn du aber viele Häuser hast und eventuell ein paar wenige Kombinationen mehrerer Texturen für alle nutzen kannst, dann könnte es sogar Geschwindigkeitsvorteile haben mehre Texturen zu nutzen (wenn du das alles in eine Textur bekommst ohne extreme Texturgrößen ist es natürlich noch besser). Die Hauptschwierigkeit mit allem in einer Textur ist teile davon sauber zu kacheln, das ist mit zum Beispiel einer kachelbaren Textur für nur die Wand sehr viel einfacher.

SwordArt

Treue Seele

  • »SwordArt« ist der Autor dieses Themas

Beiträge: 179

Wohnort: Weimar

Beruf: Schule

  • Private Nachricht senden

3

18.12.2014, 14:27

Das kacheln ist weniger der Schwerpunkt bei mir...
Bitte benutze nicht immer den Begriff Textur.
Ich weiß nicht wirklich wann du von einer reinen Textur sprichst und wann du von einer UVMap sprichst.

Bist du dir sicher ob es egal ist, wie viele UVMaps man benutzt? Ich kenne mich mit der Performance von Spielen nicht so aus, doch wenn man für jedes Haus 2 verschiedene UVMaps nimmt, die geladen werden müssen, weiß ich nicht ob und wie viel Auswirkung es auf das Game haben wird.
Die eine hätte nämlich eine Aauflösung von 2048 x 2048 und die andere ebenso bzw. vlt auch nur 1024 x 1024.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SwordArt« (18.12.2014, 14:44)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

18.12.2014, 16:07

Ich mag mich irren aber an sich ist eine UV Map eine Textur auf welche das UV Layout gerendert wird. Mit der Hilfe der UV Map kann dann die Textur erstellt werden. Guck mal bei Google Images nach "uv map" dann siehst du verschiedene Beispiele. Die Textur ist dann die Grafik die du um dein Modell wickeln möchtest. Eine Textur kann verschiedene Eigenschaften vom Modell beeinflussen. Oft meint man die Textur für den diffusen Farbkanal, es gibt jedoch noch weitere davon. Ein Beispiel wäre Spec oder Spiegelung.
Besser ist es eine Textur zu verwenden. Mit mehreren Texturen kommt es beim rendern zu Texturwechseln und die kosten eben Zeit. Das heißt, je weniger Texturen/Texturwechsel du benötigst desto besser.
Was würde denn deiner Meinung nach dafür sprechen mehrere Texturen verwenden zu wollen?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

FSA

Community-Fossil

  • Private Nachricht senden

5

18.12.2014, 16:51

Mehrere Texturen sind nicht schneller. Meistens wird das von Renderern als ein einzelnes Material pro Textur interpretiert und somit sind State changes zusätzlich notwendig. Texturatlanten ist hier das Stichwort. Und ließ dir unbedingt durch, was UV Koordinaten, Texturen und UV Maps sind.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

18.12.2014, 18:53

Habe ich quatsch erzählt?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

FSA

Community-Fossil

  • Private Nachricht senden

7

18.12.2014, 21:41

Das ging nicht an dich :)

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

SlinDev

Treue Seele

Beiträge: 142

Wohnort: Lübeck

Beruf: Programmierer

  • Private Nachricht senden

8

19.12.2014, 01:52

Ich habe von Texturen geredet weil dass ist, was du haben möchtest. UV-Map (und damit meine ich das Mapping der 3D Vertices auf 2D) brauchst du eh nur eine, solange du nicht zum Beispiel noch eine Lightmap (und das ist jetzt aber eine Textur :P) mit anderem UV-Mapping über deine eigentliche Textur legen möchtest. Der Unterschied liegt dabei in der Größe der Vertexdaten, da in einem Fall nur eine Texturkoordinate (bestehend aus zwei Werten) im anderen Fall dann aber 2 oder (bei mehr als 2 UV-Maps) mehr benötigt werden.

Du redest aber davon Teilen deines Hauses unterschiedliche Materialien mit unterschiedlichen Texturen zuzuweisen, dabei braucht jeder Vertex trotzdem nur eine UV-Koordinate (die 2D Koordinate des Vertex innerhalb der UV-Map, womit ich die Menge aller UV-Koordinaten meine) und Vertices die mehrere Faces aufspannen mit nicht zusammenhängenden UV-Koordinaten werden dann normalerweise dupliziert.
Beim Rendern funktioniert es jetzt im Prinzip so, dass versucht wird alle Meshes, die das gleiche Material und insbesondere die gleiche Textur haben nacheinander oder sogar in einem einzigen Befehl (API Befehl auf der CPU, der Treiber macht da noch etwas mehr und die Grafikkarte sowiso) gerendert werden, so dass die Materialeinstellungen nur einmal davor gesetzt werden müssen. Dadurch, dass der Treiber intern da noch einiges macht sind diese Befehle zum setzen des Materials und auch zum rendern relativ teuer und ab einem gewissen Punkt langsamer als die Zeit, die deine GPU zum rendern der ihr schon vorliegenden Daten hat, so dass die GPU auf die CPU warten muss, was man nicht will. Eben aus diesem Grund versucht man diese Befehle zum Rendern und Setzen der Materialien auf ein Minimum zu reduzieren.
Am Beispiel deines Hauses mit zwei Materialien bedeutet dass dann zweimal das Material setzen und zweimal rendern oder für nur ein Material muss das beides nur einmal passieren. Wenn du jetzt aber 3 Häuser hast von denen alle drei das gleiche Wandmaterial nutzen, zwei jeweils ihren eigenen Fenstertyp und das dritte eine Kombination der beiden anderen, dann kann es sinnvoll sein die zwei Fenstermaterialien und das Wandmaterial einzeln zu haben (auch wenn das in diesem Beispiel jetzt auf die gleiche Zahl hinausläuft, verdeutlicht es hoffentlich was ich meine). Die Größe der Textur ist dabei hauptsächlich erst relevant, wenn dein Grafikspeicher zu klein ist (was erschreckend schnell gehen kann) oder du kein Mipmapping verwendest.
Der Grund weshalb ich gesagt habe, dass es egal ist ob du ein oder zwei Materials für dein Haus benutzt und du machen solltest was für deine Zwecke einfacher umzusetzen ist, ist der, dass es für die Geschwindigkeit ziemlich scheiß egal ist ob du jetzt ein oder zwei oder auch 100 Materials setzt, solange die Summe in der kompletten Szene sich in Grenzen hält. Was für Grenzen dass dann sind ist vor allem von deiner Zielhardware und genutzten API und Grafiktreiber abhängig. Das Ziel von Grafik APIs wie Mantle, OpenGL Next, DirectX12, Metal oder auch schon einiger neuen OpenGL Erweiterungen ist es, die Zeit die für diese Befehle benötigt wird auf ein Minimum zu reduzieren.
Auf aktueller PC Hardware stellen aber auch ohne neuere APIs so 5000 Texturänderungen und Drawcalls kein Problem da (10-20k können teilweise auch noch gehen). Auf mobilen Geräten oder einfach schwächerer Hardware sind die Einschränkungen kritischer.

Also es ist nicht egal ob du nun ein oder zwei Materialien nutzt, für ein großes Objekt wie ein Haus sind zwei aber noch völlig im Rahmen. Der Besen der irgendwo in der Ecke steht oder ein kleiner Stein sollte dagegen dann vielleicht eher nur eine Textur nutzen oder sogar beides die gleiche.

Ich benutze dabei UV-Layout und UV-Map so ziemlich als synonym, wobei man da die Abgrenzung von Schorsch eventuell machen kann.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SlinDev« (19.12.2014, 01:58)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

19.12.2014, 06:37

Auf aktueller PC Hardware stellen aber auch ohne neuere APIs so 5000 Texturänderungen und Drawcalls kein Problem da (10-20k können teilweise auch noch gehen). Auf mobilen Geräten oder einfach schwächerer Hardware sind die Einschränkungen kritischer.
Woher stammen denn diese Zahlen? Die sind nach meiner Erfahrung absolut nicht verträglich. 5k Texture-Changes und 10k Draw Calls ist absoluter Horror.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

SlinDev

Treue Seele

Beiträge: 142

Wohnort: Lübeck

Beruf: Programmierer

  • Private Nachricht senden

10

19.12.2014, 12:47

Die Zahlen kommen aus meinen eigenen Versuchen mit unoptimiertem Renderer mit OpenGL, kp ob das mit irgendwelchen DirectX Versionen besser oder schlechter läuft!? Es kommt aber natürlich auch darauf an, was man sonst noch so auf der CPU machen will, bei diesen Zahlen ist dafür dann nicht mehr so viel übrig.

Werbeanzeige