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

Aktuelle Zeit: Mo Jul 07, 2025 13:49

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Jun 16, 2009 09:37 
Offline
DGL Member

Registriert: Fr Jan 16, 2009 13:36
Beiträge: 75
Hallo,

Ich bin momentan dabei einen kleinen Geometryloader zu schreiben, der mir verschiedene Objekte (Dreiecke,Polygone,Würfel,etc) mit unterschiedlichen Kantenlängen darstellt. Nun möchte ich jedoch, dass es nach dem Darstellen des Objektes die Möglichkeit gibt dieses so zu skalieren, dass es den gesamten Sichtbereich einnimmt und nicht darüber hinausragt. Sprich, dass alle Objekte die ich lade per Mausklick auf dieselbe Grösse gebracht werden. Ich arbeite mit GLScene und habe das bisher versucht über die FocalLength zu lösen. Bin aber gescheitert. Vielleicht kennt jemand dieses Problem und könnte mir helfen.
Ich wäre sehr dankbar für jede Hilfe.


Heavenssake007


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 16, 2009 10:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Sowas habe ich bereits mehrmals gemacht, und an sich ist es sehr einfach zu realisieren. Zuerst ein Objekt mit einer Größe erstellen dass in deinen Viewport passt, bzw. den Viewport so weit anpassen dass dein "Normobjekt" dort hinein passt. Dann beim Laden eines Objektes die Extrempunkte ermitteln (also Minimum und Maximum für X,Y und Z) um damit die Dimensionen der einzelnen Achsen zu bekommen (Dimension X-Achse also Differenz MaxX zu MinX). Jetzt musst du nur noch anhand der längsten Achse das neue Objekt so skalieren dass diese Achsenlänge der des Normobjektes entspricht.

Kleines Beispiel : Normwürfel hat Achsenlänge von 10 für X,Y und Z. Du lädst eine Figur deren größte Achse logischerweise die Y-Achse ist, die jetzt z.B. eine Länge von 25 hat. Also musst du das komplette Objekt um 10/25 skalieren, und zwar auf allen Achsen, damit es in den selben Bildausschnitt passt wie dein Normwürfel.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 18, 2009 10:46 
Offline
DGL Member

Registriert: Fr Jan 16, 2009 13:36
Beiträge: 75
@Sascha Willems
Dankeschön für die schnelle Antwort. Also würde ich in diesem Falle die Grösse des Objektes ändern welches ich betrachte. Gibt es aber auch die Möglichkeit die Sicht per FocalLength so zu ändern, dass ich mein Objekt immer in derselben Grösse sehe?

Mit besten Grüssen

Heavenssake007


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 18, 2009 21:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo heavenssake007,

das Problem hat ich auch schonmal.

Bei einem Kamerawinkel von 60 Grad müsste ( Pi mal Daumen ) das 1 bis 1,5-fache der Diagonale der Boundingbox als Kameraabstand vom Objektmittelpunkt ausreichen.

Viele Grüße
dj3hut1

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 09:41 
Offline
DGL Member

Registriert: Fr Jan 16, 2009 13:36
Beiträge: 75
Vielen Dank für Eure Hilfe,

Ich habe es jetzt doch vorerst über die Objektgrösse geändert. Sieht erstmal gut aus.

Viele Grüsse,

Heavenssake007


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]