eine frage zu partikelsystemen
-
Es ist vor allem wichtig, daß man relativ viele Sprites benutzt und übereinanderlegt. Wenn man sie dann noch ein wenig animiert (zB einfach drehen), dann kann man sie kaum noch auseinanderhalten. Das sieht dann schonmal ziemlich gut aus.
Ich habe auch einmal über einen interessanten Ansatz gelesen, wie man Sprites verbessern kann. Man speichert zusätzlich zu der Farbe noch einen Tiefenwert, den man dann in einem Pixelshader (ab 2.0) zu dem tatsächlichen z-Wert dazuaddiert. Dadurch wird zB eine Explosion sehr plastisch, denn man sieht nicht wie gewöhnlich eine Schnittstelle am Boden oder an den Wänden. Das Feuer oder was auch immer hat für jeden Pixel einen eigenen Tiefenwert. Vor allem wenn sich Objekte innerhalb der Explosion befinden müsste das ziemlich gut aussehen (bin noch nicht dazugekommen das einzubauen bzw zu testen)Die Demo wo das gezeigt wird finde ich leider nicht mehr, aber das Prinzip ist ja einfach.
Edit:
Habs doch noch gefunden, und es funktioniert auch schon mit ps.1.4
http://www.ati.com/developer/samples/DepthExplosion.html
-
die sache mit dem tiefenwert hört sich sehr interessant an
mit anderen worten kann man damit die position des pixels der textur in der teiefe verändern, sodass man zb aus einer ebene rein optisch eine halbkugel machen könnte?(sorry, ich hab dahingehend relativ wenig ahnung, da ich mich bisher nur mit vertex shadern auseinandergesetzt hab)aber zb bei freelancer sit das system noch wesentlich ausgereifter, da sieht man in der entfernung zb einen kompletten nebel, in den man hinterher reinfliegen kann, sodass dann zb der ganze screen so grieslig lila ist,teilweise mit so "rauchschwaden" etc. das system find ich einfach bombastisch weil es irgendwie viel weiter als die gewöhnlichen partikel geht...
-
Sowas beschaeftigt mich momentan auch. Ich muss ne Fluessigkeit moeglichst Realitaetsnah wiedergeben koennen und greif dazu auf Point Sprites zurueck. Je nach Abstand zur Kamera veraender ich ihre Groesse, Farbe und den alpha-Wert. Naja, bin noch etwas am rumprobieren, aber wie man so diese realistischen Nebelschwaden hinkriegt, von denen Du schreibst, dass wuerde mich auch wundernehmen.
-
Ich denke mal, wenn die Partikel nicht alle auf einer Ebene liegen, dann kann man automatisch "reingehen". Von daher, warum sollten die beschriebenen Effekte keine Partikel sein? Oder ist es vielleicht einfach Nebel?
Bye, TGGC \-/
-
aber kann man nnebel nur auf eine region begrenzen? wär mir neu...
oder meisnt du, dass man einfach um den "nebel" eine kugel gepackt hat, die eine textur des objekts hat, und wenn man diese durchdringt, der nebel aktiviert wird?
(ok, das würde immernoch nicht die nebelschwaden von freelancer erklären)
-
Die Moeglichkeit zum "reingehen" haengt wohl stark damit zusammen, wie gross die GraKa ein Point Sprite darstellen kann. Mit Punkten die bloss 20 Pixel breit sind braeuchte es ne ziemlich grosse Menge um nen guten Nebel zu simulieren..
-
In Quake3 kann man den Nebel auch auf bestimmte Stellen begrenzen. Aber ich glaube das wurde da mit Shadern gemacht.
-
otze schrieb:
mit anderen worten kann man damit die position des pixels der textur in der teiefe verändern, sodass man zb aus einer ebene rein optisch eine halbkugel machen könnte?
Ja, genau das haben sie ja bei der Demo gemacht (siehe mein Link).
Das ist aber etwas langweilig. Bei einer Explosion könnte man zB einzelnen Feuerstößen eine andere Tiefe geben damit sie "rauskommen".Der volumentrische Nebel in Q3 hat schon auf meiner TNT 1 funktioniert. Da die Nebligen bereiche nur quaderförmig waren (soweit ich mich erinnern kann) denke ich dass dort einfach nur diese Quader mit Nebel gerendert wurden und der Rest vom Level ohne.
-
0x00000001 schrieb:
Das ist aber etwas langweilig. Bei einer Explosion könnte man zB einzelnen Feuerstößen eine andere Tiefe geben damit sie "rauskommen".
da gibts aber optisch keinen unterschied, solange nicht irgendwelche objekte daneben sind. die demo würde ohne den boden exakt gleich aussehen, weil nur der z-wert verändert wird.
-
0x00000001 schrieb:
otze schrieb:
mit anderen worten kann man damit die position des pixels der textur in der teiefe verändern, sodass man zb aus einer ebene rein optisch eine halbkugel machen könnte?
Ja, genau das haben sie ja bei der Demo gemacht (siehe mein Link).
Das ist aber etwas langweilig. Bei einer Explosion könnte man zB einzelnen Feuerstößen eine andere Tiefe geben damit sie "rauskommen".wieso wird die technik dann eigentlich nicht noch viel mehr in spielen eingesetzt?
wieso seh ich dann immernoch eckige rohre in räumen, wenn man sie doch fast ohne performanceeinbußen(passiert ja alles im pixelshader) rund machen könnte?macht es zuviel arbeit?
//edit is klar, liegt daran, dass man nur den z wert ändern kann, nicht den x/y wert, und somit könnten rohre in einem game nur in einer richtung richtig schön aussehen, sonst nur komisch^^
-
noebef schrieb:
In Quake3 kann man den Nebel auch auf bestimmte Stellen begrenzen. Aber ich glaube das wurde da mit Shadern gemacht.
Nix da mit Shadern. Die habe eine Opengl erweiterung genutzt. Hab jetzt aber keine ahnung welche das ist. Mit dieser Erweiterung definierst du ein Quader und in diesem ist dann der Nebel. Total simple hab es schon mal ausprobiert
-
wenn man im pixelshader den z-wert ändert verwirft man zbuffer optimierungen der grakas. das bedeutet extreme performanceverluste. aber meißtens braucht man sowas bei partikeln nicht, die werden auf die simpelste art und weise gezeichnet.
das problem bei partikeln ist eher die riesige menge davon zu animieren und zu cullen.rapso->greets();
-
de_Bert schrieb:
noebef schrieb:
In Quake3 kann man den Nebel auch auf bestimmte Stellen begrenzen. Aber ich glaube das wurde da mit Shadern gemacht.
Nix da mit Shadern. Die habe eine Opengl erweiterung genutzt. Hab jetzt aber keine ahnung welche das ist. Mit dieser Erweiterung definierst du ein Quader und in diesem ist dann der Nebel. Total simple hab es schon mal ausprobiert
es gibt viele möglichkeiten wie das realisiert werden kann und bei Q3 haben die auch mehrere mittel benutzt.
nichts davon war partikel.
rapso->greets();
-
was sind das für optimierungen? ist damit das culling der pixel ansich gemeint, dass die graka nicht schon vorher unsichtbare pixel verwerfen kann?
-
Der Bodennebel in Q3A soll wohl irgendwie vorberechnet sein, daher ist er immer genau waagerecht.
Bye, TGGC \-/
-
Nennt sich das nicht volumetric fog? Wird btw. auch in FarCry verwendet, um das Wasser zu trüben.