Registriert: Do Dez 06, 2012 19:23 Beiträge: 5
Programmiersprache: C++
Hallo,
ich bin dabei einen Collada-Importer zu programmieren und habe ein Problem. Es gibt Collada Dateien wo ich erst zum sichtbaren Objekt hinein zoomen muss. Dann wiederum welche, wo ich erst aus zoomen muss.
Beispiel : Eine Collada Datei mit den Verticespositionen : -0.5 0.5 0.5 -0.5 -0.5 0.5 ... Eine andere mit den Verticespositionen : -543.522 -45 494.288 -474.935 -45 517.929 ...
Bis jetzt skaliere manuel damit ich das Objekt sehe. Mein Ziel ist es eigentlichen egal welche Collada Datei geladen wird, es soll immer passend der Fenstergröße skaliert werden.
Meine Überlegung wäre, den größten und kleinsten Vertexpositionswert aus der Collada Datei herausfinden und dementsprechend skalieren. Eine Collada Datei kann jedoch sehr sehr viele Vertices haben und den min / max Wert herauszufinden würden entsprechend lange dauern.
Registriert: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Min/Max Werte beschreiben ja eine Bounding Box. Die könntest du doch schon während des Ladens errechnen und fortan benutzen. Dabei wird es kaum auffallen ob du für jedes Vertex einen Min/Max Check machst.
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Eine Collada Datei kann jedoch sehr sehr viele Vertices haben und den min / max Wert herauszufinden würden entsprechend lange dauern.
Wenn du die "sehr sehr vielen" Vertices rendern willst sollte das finden einer BoundingBox dein kleinstes Problem sein. Das kannst du wie schon vorgeschlagen beim laden machen während du die Daten in einen VBO kopierst (oder was immer du machst). Natürlich solltest du die BoundingBox nur einmal berechnen, nicht jedes Frame neu.
(Eine optimale BoundingSphere ist dagegen nicht so einfach...)
Registriert: Do Dez 06, 2012 19:23 Beiträge: 5
Programmiersprache: C++
Ich durchlaufe alle Geometrieobjekte in der Collada Datei und habe nun die Werte: max_X, max_Y, max_Z, min_X, min_Y, min_Z
ich dachte mir mit
Code:
glOrthof(minX, maxX , minY, minY, minZ, maxZ);
und
Code:
glTranslatef(0, 0, (maxZ/2));
habe ich die hälfte der Z-Strecke und somit das Objekt gleichzeitig näher zum Betrachter. Doch das Objekt ist viel zu nah, so das ich es nur abgeschnitt sehe. Ich denke mein Ansatz hier ist falsch. Könnt ihr mir da helfen?
Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.