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: Billboarding
BeitragVerfasst: Do Mai 06, 2010 16:05 
Offline
DGL Member

Registriert: Do Mai 06, 2010 14:52
Beiträge: 5
hallo DGL Forum! (bin ein neuer und hoffe, dass ihr nachsicht mit mir habt, weil ich kein richtiger OGL Programmierer bin, sondern mit PureData und Gem arbeite, und deshalb in vieler hinsicht wie der ox vorm tor stehe...)

zu meinem problem:
Ich brauche für Partikel eine Look-At funktion, (Billboarding genannt, wie ich beim durchstöbern herausgefunden hab)
Ich habe die rotation der Camera definiert durch 3 Einheitsvectoren , FRONT, RIGHT UND UP sowie die Weltcoordinaten meines Partikels.
Jetzt möchte ich die rotation meiner Partikel nach dieser 3x3 matrix ausrichten, so dass sie immer zur camera schauen.
Ich weiss aber nicht wie ich die Welt Matrix der Objekte setzen kann, und auch nicht wo in dieser 4x4 matrix die 9 rotationscoordinaten reingehören. :oops:

vielen dank
sebastian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Billboarding
BeitragVerfasst: Do Mai 06, 2010 16:50 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Hai

Hab nicht ganz verstanden, ob du das jetzt mit OpenGL machen willst, oder nicht. Wenn nicht, kannst du mich ignorieren.

Also, eine Matrix sollte (soweit ich weiß) so aussehen:
Code:
(  ( Right.x, Right.y, Right.z, Translation.x ),
   ( Up. x,    Up.y,    Up.z,    Translation.y ),
   ( Front.x, Front.y, Front.z, Translation.z ),
   ( 0,        0,        0,        , 1)  )


Die muss man dann wahrscheinlich noch invertieren, weil beim Billboarding die Rotation rückgängig gemacht werden soll.
Wenns keine Translation gibt, ist die einfach = 0.
Hab Billboarding zwar selber noch nie benutzt, aber so sollte es aussehen:

Code:
var Matrix: array[0..3] of array[0..3] of single;
begin
  glPushMatrix;
  Matrix:= [ [ Right.x, Right.y, Right.z, 0],
                [ Up.x, Up.y, Up.z, 0],
                [ Front.x, Front.y, Front.z, 0],
                [ 0, 0, 0, 1] ];
  InvertMatrix(Matrix);
  glMultMatrixf(@Matrix);

  //Billboards zeichnen;

  glPopMatrix;
end;


Also, das ist schon alles, was ich dazu weiß. Bitte erschieß mich nicht, wenns nicht geht :wink:

mfg

Sharkman


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Billboarding
BeitragVerfasst: Do Mai 06, 2010 16:56 
Offline
DGL Member

Registriert: Do Mai 06, 2010 14:52
Beiträge: 5
ok ich hab beim durchsuchen der fabelhaften wiki hier rausgefunden, dass ich die modelview matrix mit glLoadMarix setzen kann, und dass die reihenfolge
der werte in der matrix folgende ist
http://wiki.delphigl.com/index.php/Matr ... nGL-Matrix
+- -+
| 0 4 8 12 |
| 1 5 9 13 |
| 2 6 10 14 |
| 3 7 11 15 |
+- -+

wobei (dass stand da nicht, aber ich sag mal...)
0 = front X
1 = front Y
2 = front Z
3 = 0
4 = right X
5 = right Y
6 = right Z
7 = 0
8 = up X
9 = up Y
10 = up Z
11 = 0
12 = pos X
13 = pos Y
14 = pos Z
15 = 1


Zuletzt geändert von sonsofsol am Do Mai 06, 2010 17:03, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Billboarding
BeitragVerfasst: Do Mai 06, 2010 16:59 
Offline
DGL Member

Registriert: Do Mai 06, 2010 14:52
Beiträge: 5
hi sharkman, danke für die schnelle antwort, werd gleich lospatchen. :P
Pd ist so eine grafische programierumgebung mit so kistchen und strippen...aber da kann amn auch openGL machen...anscheinend...ich schick dann nen screenshot.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Billboarding
BeitragVerfasst: Do Mai 06, 2010 17:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Sollen/Dürfen deine Partikel immer waagerecht zur Kamera ausgerichtet sein? (Also keine 2D-Rotation auf der Bildebene)
Wenn das der Fall ist (die meisten Partikel sind rund => Rotation egal) könntest du einfach statt Dreiecken bzw. Quads einfach GL_POINTS rendern. Statt vier Punkten pro Partikel wird da nur ein einziger Punkt sowie eine PointSize benötigt. Deine Grafikkarte generiert dann daraus zur Laufzeit ein Quad, auf Wunsch auch mit Texturkoordinaten.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Billboarding
BeitragVerfasst: Do Mai 06, 2010 17:52 
Offline
DGL Member

Registriert: Do Mai 06, 2010 14:52
Beiträge: 5
@ Coolcat
danke für den tip mit den Points. aber ich suche eigentlich nach einer möglichkeit, die für alle Arten von objekten funktioniert, weil ich die selbe funktion auch für .obj's und texte brauche, ich werds für die partikel probieren.
nochmals vielen dank euch beiden.
:D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Billboarding
BeitragVerfasst: Mi Mai 12, 2010 12:25 
Offline
DGL Member

Registriert: Do Mai 06, 2010 14:52
Beiträge: 5
habs geschaft. vielen dank für eure tipps...
es hat gereicht mit glpuhsmatrixf die rotationen in der modelviewmatrix mit
1 0 0
0 1 0
0 0 1
zu überschreiben.
:P


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 ]