Wenn ich ihr euch ma mit Maus und Tasten n bissel bewegt und dabei mal f6 für den wireframe drueckt, seht ihr das problem. Durch das Billboardingsystem dreht sich die Particleengine nicht, sodass sie sich relativ zu mir immer bewegt. der Wireframe also bleibt fest, die particle aber nicht.
Billboardingcode:
Code:
procedure FXBillBoardBegin;
var x, y :Byte;
Matrix :Array[0..15]ofSingle;
begin
// Sichern der Matrix
glPushMatrix();
// Speichern der Matrix in der Variable
glGetFloatv(GL_MODELVIEW_MATRIX,@Matrix);
for x:=0to2do
for y:=0to2do
if x=y then Matrix[x*4+y]:=1
else Matrix[x*4+y]:=0;
glLoadMatrixF(@Matrix);
end;
Code:
procedure FXBillBoardEnd;
begin
glPopMatrix();
end;
Aus dem entsprechenden Tut. die Frage is jetz, wie bekomm ich das so abgeaendetr, dass die Quads zwar immer zum betrachter gerichtet sind, aber dass sie sich trotzdem immer relativ zur Position bewegen, sodass sie immer im Wireframe bleiben
Hab mir eben die Funktion nochma angesehen. Wenn ich mich nich verrechnet habe, dann ist die entstehende Matrix die folgende:
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0
Registriert: So Sep 26, 2004 05:57 Beiträge: 190 Wohnort: Linz
Wie machst du dein Partikelsystem eigentlich? Sieht bei deinem Code irgendwie so aus als würdest du für jedes einzelne Partikel das du zeichnest deine FXBillBoardBegin/End Methoden aufrufen ... da da ein glGetFloatv drinnen ist wäre das aus Performance Sicht nicht unbedingt die aller beste Idee. Wenn du es allerdings so machst, so stellt sich mir die Frage was das StartPosition zu bedeuten hat. Wenn StartPosition immer 0 wäre, so sollten die Partikel immer an ihrer Position bleiben. Also wenn du es so machst mach das StartPosition auch als Translate davor und nicht beim glVertex rein.
Wenn du allerdings alle Partikel eines Systems mit einem FXBillBoardBegin/End-Aufruf zeichnest so ist anzunehmen, dass das StartPosition die Position relativ in diesem System angeben soll, was auch grundlegend mal keine schlechte Idee ist. Da aber wie gesagt nur Partikel mit StartPos 0 an ihrer Position bleiben werden, wäre es hierfür sinnvoll wenn das Zentrum deines Partikelsystems die Position 0 besitzt, wodurch sich alle anderen Partikel um dieses Zentrum herum drehen sollten und nicht um irgend einen anderen Punkt.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.