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

Aktuelle Zeit: Fr Jul 18, 2025 12:09

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 14, 2003 10:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Also folgendes...
Ich wollte sowas wie Billboards machen ...

Erst hab ichs mit dem Code von Lith probiert

Code:
  1.  
  2. procedure fxBillboardBegin;
  3.  
  4. var x,y : byte;
  5.  
  6.    Matrix : array[0..15] of single;
  7.  
  8. begin
  9.  
  10. //save original Matrix
  11.  
  12. glPushMatrix;
  13.  
  14. glGetFloatv(GL_MODELVIEW_MATRIX, @Matrix);
  15.  
  16. for x := 0 to 2 do
  17.  
  18.  for y := 0 to 2 do
  19.  
  20.   if x=y then Matrix[x*4+y] := 1 else Matrix[x*4+y] := 0;
  21.  
  22. glLoadMatrixf(@Matrix);
  23.  
  24. end;
  25.  
  26.  
  27.  
  28. procedure fxBillboardEnd;
  29.  
  30. begin
  31.  
  32.  //restore original Matrix
  33.  
  34.  glPopMatrix;
  35.  


<!--QuoteBegin--lith+--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (lith)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
Dabei geht allerdings nicht nur die Rotation sondern auch die Skalierung verloren. Lediglich die Translation bleibt erhalten...
[/quote]

Das ist das Problem... die Rotation ist weg... Ich würde mich aber ganz gerne um meine Partikel-Kugel drehen.

Wie mach ich das am besten? (Wenn's ehr nach Einsteiger-Fragen gehört, verschieben, war mir nicht ganz sicher)

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 14, 2003 10:21 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Mooomment *kopfkratz* Also habe ne ziemlich fiese Nacht und zwei fiese Arbeiten am Morgen gehabt, kann also sein dass ich nu extrem Scheiße labber *g* Ich meld mich sonst nochmal, wenn ich ausgeschlafen habe ;D

Also: Billboard haben ja gerade die Eigenschaft, dass sie immer auf den Spieler schaun. Dadurch erreicht man eben den Eindruck, dass ein Objekt immer auf einem gerichtet bleibt. Nehmen wir einmal einen Baum an der weit entfernt ist. Dieser wird um Leistung zu sparen als Billboard dargestellt. Würde man ihn rotieren würde der schwindel sofort auffliegen. Bei Partikel ist ja eher die Frage, warum du nicht die Szene drehst und nicht die Partikel alle einzelnd selbst? Schließlich soll das Partikel ja auch mit der Oberfläche auf Dich zeigen und nicht von der Seite oder? Ich würde daher den Ansatz nochmal überdenken.

btw: Quads mit Texturen, die sich NICHT nach den Spieler richten, nennt man Decals (s.a. DeusEx Optionen) ;D

Ce

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 14, 2003 11:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Das ganze soll sich ja auch nach dem Spieler ausrichten...
Ich glaub ich sollte mir da nochmal nen paar Tuts angucken, von wegen Szene ausrichten und so...

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 14, 2003 11:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Als Beispiel...
Man nehme ParticleLines ( <a href='http://www.sulaco.co.za/opengl.htm#particlelines' target='_blank'>http://www.sulaco.co.za/opengl.htm#particlelines</a> ) von Jan Horn und schreibt da wo
Code:
  1.  
  2.  drawParticleHead;
  3.  

steht, folgendes hin:

Code:
  1.  
  2. fxbillboardbegin;
  3. gldepthmask(false);
  4. drawParticleHead;
  5. gldepthmask(true);
  6. fxbillboardend;
  7.  



Zack ist die Rotation weg... Also die Positionen der Partikel falsch.

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 14, 2003 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
also, ich hatte auch mal das Partikel Problem. Die ModelViewMatrix zu ändern ist nicht so cewl, also ich hab dann nen Code genommen, der direkt die Vertexe beeinflusst hat. Hab leider gerade nur C++ Code, das umsetzten sollte aber kein Prob sein:
Code:
  1.  
  2.  
  3. ///1 mal pro Frame diesen Mist berechnen:
  4. float mv[16]; //bedeutet mv ist nen 16er real Array
  5. float x[3], y[3]; &nbsp;//siehe oben
  6.  
  7. glGetFloatv(GL_MODELVIEW_MATRIX, mv);
  8. x[0] = mv[0];
  9. x[1] = mv[4];
  10. x[2] = mv[8];
  11. y[0] = mv[1];
  12. y[1] = mv[5];
  13. y[2] = mv[9];
  14.  
  15. //Und dann die Billboards zeichnen (An Pos 3,1,2 mit Ausdehnung 0.3f in diesem Fall):
  16. Billboard(3,1,2, 0.3f x,y);
  17.  &nbsp; &nbsp; &nbsp;
  18.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  19. //und die funktion:
  20. void Billboard(float x, float y, float z, float s, float *xx, float *yy) // es ist einfacher man macht ne Billboard Klasse, so das amn keine Zeiger übergeben muss um auf das x und z Array zuzugreifen
  21. {
  22.  &nbsp; &nbsp;glBegin(GL_QUADS);
  23.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,0);
  24.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f( x+(-xx[0]-yy[0])*s , y+(-xx[1]-yy[1])*s , z+(-xx[2]-yy[2])*s);
  25.  &nbsp; &nbsp;
  26.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,0);
  27.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f( x+(xx[0]-yy[0])*s , y+(xx[1]-yy[1])*s , z+(xx[2]-yy[2])*s);
  28.  
  29.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,1);
  30.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f( x+(xx[0]+yy[0])*s , y+(xx[1]+yy[1])*s , z+(xx[2]+yy[2])*s);
  31.  
  32.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,1);
  33.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f( x+(-xx[0]+yy[0])*s , y+(-xx[1]+yy[1])*s , z+(-xx[2]+yy[2])*s);
  34.  &nbsp; &nbsp;glEnd();
  35. }
  36.  


Ich hoffe das kann jemandem helfen.

MfG
Benjamin

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 14, 2003 20:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
WOW, GENIAL!!!!
DANKE! *shiftdurchdrück*

:D

Genau das brauchte ich!

_________________
www.las.eu.tc


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.014s | 15 Queries | GZIP : On ]