.| Autor | Beitrag |
|---|---|
|
000 08.10.2002, 16:16 the_viking |
Also, ich hab ne Partikel-Engine, die Partikel zeichnen soll.
Aber wenn ich das Mache, werden komischerweise alle Partikel auf einen Punkt gezeichnet :( ,obwohl ich die jeden Frame bewege! Ausgerichtet werden sie auch nicht. Wenn ich für RenderPartikel() was anderes benutze:
thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
001 08.10.2002, 16:55 Killing Me Softly |
Versuch mal folgendes:
CVector3 ist ne selbstgebastelte Vector-Klasse (ach, nee), aber das sollte nicht unbedingt die Schwierigkeit sein. --Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. |
|
Profil || Suche |
|
002 08.10.2002, 17:24 the_viking |
Wenn ich richtig liege, dass ist, könnte das funktionieren. (Mal gucken, ob ich da durchsteige, durch diesen Level-11 Mathekrams :) ) --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
003 08.10.2002, 17:30 the_viking |
Es funktioniert.... NICHT!!! Die Partikel sind keine Partikel mehr, sondern lange (unendliche) Streifen, die flackern !!! --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
004 08.10.2002, 17:56 the_viking |
Das hab ich gefunden: (Ist zwar für D3D, aber Umsetzen für OGL ist D3DVECTOR Pos = Particles[i].Position; D3DLVERTEX Shape[4]; thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) Dieser Beitrag wurde am 08.10.2002 um 17:56 von the_viking bearbeitet. |
|
Profil || Suche |
|
005 08.10.2002, 18:58 the_viking |
Hm... Jetzt seh ich die Partikel gar nicht mehr.. *rofl* --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
006 08.10.2002, 21:30 Killing Me Softly |
Also komischerweise funktioniert der oben gepostete Code bei mir ganz vollzüglich. Da ich es aber sehr persönlich nehme, wenn ich jemanden helfen möchte und nix dabei rum kommt schlag ich dir vor entweder dein Code-Fragment mal hier zu posten oder (falls es zu viel ist) mir zu schicken (E-Mail im Profil). --Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. |
|
Profil || Suche |
|
007 08.10.2002, 23:23 the_viking |
Nja.. So lang isses nich:
BaseParticle:
thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
008 08.10.2002, 23:25 the_viking |
Ah: Ich glaub, wenn ich glTranslatef(was,weiss,ich) mache, funzt das sowieso nicht! (Hab ich ausprobiert, das ganze System damit zu verschieben: Kein Effekt) --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
009 09.10.2002, 13:21 Prefect |
the_viking: Der Fehler im Originalcode ist, daß du die Matrix innerhalb eines glBegin()/glEnd()-Block manipulierst. Das ist _nicht_ möglich - genauso wenig wie ein Texturwechsel (hatten wir das nicht vor kurzem mal? ;)) Übrigens ist es sowieso Irrsinn, für jedes Partikel einzeln die Matrizen zu ändern, der Overhead ist viel zu groß und du kannst Optimierungen wie Vertex Arrays später nicht verwenden. Überhaupt strotzt der Code vor Ineffizienzien. Wenn du vorhast, mehrere Tausend Partikel zu rendern, mußt du deine Datenstrukturen effizienter auslegen. Primär heißt das, alles aus der Schleife herausverschieben, was nicht unbedingt in die Schleife rein muß. Im Moment hast du:
Viel besser wäre:
Ganz besonders, da die ganzen Matrixoperationen wie gesagt eher langsam sind, und der von dir verwendete Code funktioniert sowieso nicht (allein der Fakt, daß du _immer_ z == tp.z übergibst sollte dir zu denken geben). Du kannst dann das Rendern des Partikels natürlich nicht mehr in eine Funktion packen, aber öhm... ist das wirklich notwendig in diesem Fall? Ich denke nein. Mit anderen Worten, berechne irgendwie zwei Vektoren view_right und view_up, die nach rechts bzw. oben zeigen (vom Viewpoint aus gesehen). Dann änderst du den Code einfach in (natürlich vereinfacht):
Sieht das nicht schon einiges effizienter und außerdem simpler aus? cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
010 09.10.2002, 13:23 shenZi |
sollen wir dir vielleicht gleich deine engine proggen ? ..::Follow the rabbit ::.. |
|
Profil || Suche |
|
011 09.10.2002, 23:07 the_viking |
.. Ich brauch halt die nötigen infos! Das, was diablo in 1nem Jahr geschafft hat , versuch ich halt in 2 Jahren zu schaffen *g* Muss man nicht für jeden Partikel eigens berechnen, wie er richtig zur Kamera ausgerichtet ist? ( Thx, das du mir klargemacht hast, das man die Texturen in OGL nich zw. glBegin und glEnd switchen kann! New Code:
\E: \EE: thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) Dieser Beitrag wurde am 09.10.2002 um 23:20 von the_viking bearbeitet. |
|
Profil || Suche |
|
012 10.10.2002, 00:08 Tron |
das ist gelinde gesagt _arschlahm_! 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
013 10.10.2002, 13:45 Prefect |
wrt Klassenhierarchie: Nun, eine Klassenhierarche BaseParticleSystem -> SpriteParticleSystem wäre u.U. vertretbar. Aber eine Klassenhierarche BaseParticle -> ??? macht IMHO keinen Sinn, denn was für abgeleitete Klassen könntest du dir überhaupt vorstellen? Das mit den Texturen funktioniert schon, ist aber ein böser Hack - siehe Trons Post. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
014 10.10.2002, 17:22 the_viking |
I hoab k.A. wie das in OGL mit IndexArray, VertexArrays und wasweißichfürarray geht. Kennt jemand gute OGL Bücher ? (Am besten Deutsch, Englisch ist vertretbar) @Tron: thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
015 11.10.2002, 21:00 Diablo_bth |
@viking: kann dir den "OpenGL Programming Guide" empfehlen (red book) - da wird alles von Grund auf erklärt - auch das System, welches hinter dieser API steckt. (sind übrigens auch Pics aus q2 & q3 drinne als Beispiel für Texture-Mapping :) Einziger Nachteil: c.a. 60€ darfste schon hinlegen... [edit]
Dieser Beitrag wurde am 11.10.2002 um 21:05 von Diablo_bth bearbeitet. |
|
Profil || Suche |
|
016 13.10.2002, 22:25 the_viking |
Wahh... 60€... N bissl sparen (n' english-wörterbuch hab ich noch..), Also, wenn ich jetzt meine Partikel rendern will, hab ich , sagen wir, 3 Arrays: Nagut, versuchs mal zu implementieren... --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
017 14.10.2002, 12:30 Prefect |
glEnable() ist das entsprechende Gegenstück zu glEnableClientState() auf der Serverseite. Ganz so einfach ist es allerdings nicht. Du kannst damit zwar die Partikel rendern, aber sie werden natürlich nicht entsprechend deiner Blickrichtung ausgerichtet. Du mußt also zumindest das Vertex-Array in jedem Frame neu berechnen, was aber sowieso unvermeidbar ist, da sich die Partikel ja bewegen. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |

