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

Paddy

Frischling

  • »Paddy« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Essen

  • Private Nachricht senden

1

05.12.2006, 16:06

Zuordnen von Daten aus OBJ zu Vertexdaten (UV Problem)

Hi Leute,

hab folgendes Problem:

Ich will OBJ Dateien auslesen und diese zum RealTime rendern abspeichern. Mein Problem dabei ist folgendes:

Ich muß ja einen Vertexbuffer und einen Incexbuffer erstellen, doch wenn ich für den Vertexbuffer ein FVF-Format benutze das uv's beinhaltet bekomm ich damit ein ziemliches Problem, denn pro Vertex können ja problemlos mehrere UV-koordinaten pro Vertex vorkommen. Ein normal abgewickelter Würfel hat ja z.B. schon min. 14 UV-Koordinarten bei 8 Vertices...

Muß ich nun im Vertexbuffer je UVSatz ein Vertex anlegen (und damit manche Vertices doppelt) oder gibt es ne Möglichkeit die UVs mit dem IndexBuffer zu speichern (denke nicht, da der Indexbuffer ja nur sagt welche Verices gezeichnet werden sollen)...
...oder gibt es da noch was in der Mitte???

Danke schon mal im Voraus für eure Hilfe

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

2

05.12.2006, 18:05

Zitat

denn pro Vertex können ja problemlos mehrere UV-koordinaten pro Vertex vorkommen. Ein normal abgewickelter Würfel hat ja z.B. schon min. 14 UV-Koordinarten bei 8 Vertices...


Ich versteh nicht ganz was du meinst. Meinst du, dass du mehrere Texturkoordinaten pro Vertex hast? Dann mach doch einfach verschiedene Vertexstrukturen mit verschieden vielen Texturkoordinaten.

Aber afaik unterstützt das OBJ doch nur Texturkoordinaten für eine Textur.

Auch versteh ich nicht, was Texturkoordinaten mit Indexbuffern zu tun haben sollen.

Paddy

Frischling

  • »Paddy« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Essen

  • Private Nachricht senden

3

05.12.2006, 19:01

Zitat

Wümpftlbrümpftl: Auch versteh ich nicht, was Texturkoordinaten mit Indexbuffern zu tun haben sollen


Leider nix; das ist ja das Debakel.
In einem OBJ sind die Faces so notiert:
f 4/3/3 34/3/2 5/23/12
oder v/vt/vn
Das trennt die UVs und die Vertexdaten strickt und so kann man auch anständig unwrappen...Vertexbuffer trennen die beiden aber nicht...

Das Problem ist halt, dass ein nicht planares Objekt im Regelfall auch immer Verts hat, die mehr als einen Texturkoordinatensatz haben (auch bei nur einer Textur!!!!) und das geht auch nicht anders.


(Link)


Guck dir in dem Bild oben mal den Würfel an:
Auf der linken Seite ist nur ein Vertex angewählt, aber beim Unwrappen bekommt der automatisch 2 verschiedene UV Koordinaten. Das ist völlig normal, da kann man auch beim Modeln nix anders machen und dass muß auch so bleiben, ...aber:

Indexbuffer nehmen keine UV-Koordinaten. Daher müssen die UV-Daten in den Vertexbuffer. Und da bis auf 2 Verts (an denen sich 3 Faces treffen) alle mehr als 1 Satz UV-Daten haben?!?
In allen Büchern die ich bisher gesehen hab wird dieser Fall (der in jedem Model auftaucht, das Volumen hat) immer geschickt verschwiegen...

4

05.12.2006, 19:36

Du musst hier bei den entsprechenden Nahtstellen den Vertex mehrfach speichern. Aber wenn du dir dein Bild genau ansiehst ist es gar nicht so schlimm wie es sich erst anhört. Bei komplexen Objekten spaart man trotzdem einiges. Dein Beispiel ist halt ein Extremfall aber selbst hier gibt es 2 Verbindungspunkte an denen man insgesammt 4 Vertieces wegrationalisieren kann.

Were der Würfel etwas komplexer, also sagen wir mal jedes Face wäre in 4 Quadrate eingeteilt, könntest du hier eine Menge spaaren.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

05.12.2006, 21:14

wie chriss schon gesagt hat:
des rätsels lösung ist, mehrmals den gleichen vertex mit anderen texturkoordinaten zu speichern (das gilt für alle vertexattribute, ist nicht immer nur bei texturkoordinaten so)...

Paddy

Frischling

  • »Paddy« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Essen

  • Private Nachricht senden

6

06.12.2006, 02:02

Das mit dem doppelt speichern hab ich mir schon gedacht, aber damit halt auch direkt gemerkt, dass OBJs selbst für Hard-Surface Sachen nicht wirklich was taugt...
Schade, wollte mich eigentlich darum drücken n Maya-Plugin schreiben zu müssen, aber wird mir dann wohl nix anderes übrig bleiben (erst recht wenns dann an Normalmaps geht).

Danke nochmal

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

06.12.2006, 10:39

afaik speichert obj texturkoordinaten...wo liegt also das problem?

Werbeanzeige