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

Aktuelle Zeit: Fr Jul 18, 2025 03:53

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL ES 1.0 Kamera
BeitragVerfasst: Do Jun 10, 2010 20:19 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Hallo alle zusammen.

Ich habe wieder ein kleines Problemchen mit Kamera. Wie ich gelesen habe, kann man die Kamera mit lookat von Glut ansteuern oder auch direkt mit push und popMatrix

z.B:
Code:

pushMatrix();
rotateF(..); //Kamera rotieren
popMatrix(..);

pushMatrix();
 // Object bewegen
popMatrix();

pushMatrix();
 // ein anderes Object bewegen
popMatrix();



Sonst hier ein Link wo ich es gelesen habe: http://www.videotutorialsrock.com/openg ... m/text.php


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL ES 1.0 Kamera
BeitragVerfasst: Do Jun 10, 2010 20:30 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
hm, aslso ich würde ja gern auch mal helfen aber du hast deine Frage vergessen^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL ES 1.0 Kamera
BeitragVerfasst: Do Jun 10, 2010 20:43 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Stimmt :D. Sorry.

Also das Problem ist, wenn ich LookAt benutze verändert er die Matrix von Objekten, es heist lookAt macht nichts anderes als die Objekte verschieben oder skalieren oder auch rotieren so dass es für das Auge so aussieht als ob die Kamera sich bewegt, in wirklichkeit bewegen sich die Objekte. Da ich einen Obj-Exporter schreibe und die Matrix von jeden einzelnen objekt brauche ist die lookat keine gute Lösung ist, finde ich.

Kleines Beispiel. Das objekt steht im punkt 0,0,0. Ich verschiebe die Kamera auf 1,1,1. Die Matrix von objekt wird dabei ebenfalls verändert. Ich brauche jedoch eine unverfäschte matrix, so dass mein Objekt auch auf dem 0,0,0 steht. Wenn ich den jedoch exportiere, steht er im Punkt 1,1,1. Ich dachte immer die Kamera sei unabhängig von objekten, wenn ich die lookat benutze, war wohl ein Fehler. Was kann man da machen

PS: Sorry für die Grammatik zu schnell geschrieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL ES 1.0 Kamera
BeitragVerfasst: Do Jun 10, 2010 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Nun, du kannst dir deine Matrix immer auch selbst berechnen. In deinem anderen Thread hatte ich dir ja bereits den Hinweis auf die in WGT enthaltene MatheLib gegeben. (Ist übrigens die Java-Version meiner wesentlich umfangreicheren (und bisher unveröffentlichten) Coolmath-Bibliothek für C++.)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL ES 1.0 Kamera
BeitragVerfasst: Do Jun 10, 2010 20:54 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
eigentlich hatte ich das auch so verstanden

aber in opengl ist es nunmal so das sich nicht die kamera sondern die welt bewegt

das heißt wenn dein object bei 0,0,0 steht und du die kamera verschieben willst, verschiebst du nicht die kamera sondern die welt also verschiebst du sozusagen immer das objekt,

du könntest nun aber damit dein object bei einer kameraverschiebung nach dem exportieren wieder auf 0,0,0 steht umrechnungsfaktoren einbeziehen.

Beispiel:

Dein Objekt steht auf 0,20,-50

du verschiebst die kamera um -5,10,20

nun steht dein objekt also auf -5,30,-30

wenn du nun die umrechnungsfactoren die sich aus der summer aller deiner kammeraverschiebungen ergeben wieder auf die objectposition anwendest erhälst du beim exportieren

X -5+(-5*-1) = 0
Y 30+(10*-1) = 20
Z -30+(20*-1) = -50

korrigier mich falls ich falsch liege oder es einfach falsch verstanden habe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL ES 1.0 Kamera
BeitragVerfasst: Fr Jun 11, 2010 07:07 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Könnte man das nicht lösen, indem man gluLookAt in der Projektionsmatrix nutzt? Nur mal so als generelle Frage. So könnte man Weltkoordinaten und darstellung trennen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL ES 1.0 Kamera
BeitragVerfasst: Fr Jun 11, 2010 08:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
@Flash: Ja, das ist theoretisch möglich, allerdings könnte dies die Lichtberechnung stören. Im View-Space ist die Kameraposition die man für Specularbeleuchtung braucht nämlich einfach (0,0,0). D.h. für korrekte Specular-Beleuchtung muss man Shader einsetzen.

@costan: Mit einer eigenen Mathelib sollte das ganze aber relativ einfach zu lösen sein, du kannst einfach in Model, View und Projectionmatrix aufteilen. Die Klasse MatrixStack von WGT unterstützt das sogar, du kannst die drei Matrizen getrennt verwalten. Immer wenn du rendern willst liest du einfach matrixstack.getModelView() sowie matrixstack.getProjection() aus und übergibst die Matrizen an OpenGL. Mit matrixstack.getModel() kannst du dir die Weltmatrix holen.

_________________
Yeah! :mrgreen:


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 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.007s | 14 Queries | GZIP : On ]