Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jun 08, 2024 21:21

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Dez 06, 2012 20:35 
Offline
DGL Member

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.

Gibt es da nicht bessere Methoden?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Dez 06, 2012 21:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
du könntest einfach die modelview matrix skalieren, mit push und pop matrix kannst du es individuel für deine objekt machen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Dez 07, 2012 00:55 
Offline
DGL Member
Benutzeravatar

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"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Dez 07, 2012 18:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
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...)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Dez 08, 2012 04:05 
Offline
DGL Member

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:
  1. glOrthof(minX, maxX , minY, minY, minZ, maxZ);

und
Code:
  1. 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?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Dez 08, 2012 19:01 
Offline
DGL Member

Registriert: Di Aug 21, 2012 19:31
Beiträge: 173
Programmiersprache: C#
Zitat:
Code:
  1. glOrthof(minX, maxX , minY, minY, minZ, maxZ);


Ist minY, minY beabsichtigt?

_________________
ack nack nack nack nack


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Dez 08, 2012 20:44 
Offline
DGL Member

Registriert: Do Dez 06, 2012 19:23
Beiträge: 5
Programmiersprache: C++
nevermind10844 hat geschrieben:
Zitat:
Code:
  1. glOrthof(minX, maxX , minY, minY, minZ, maxZ);


Ist minY, minY beabsichtigt?


Nein, Fehler von mir. Gemeint ist :

Code:
  1. glOrthof(minX, maxX , minY, maxY, minZ, maxZ);


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]