volumetrisch wabernder nebel

Posted By: willehi

volumetrisch wabernder nebel - 10/09/02 06:06

kann man sowas mit partikeln hinbekommen(volumetrisch wabernden nebel)?
ihr habt das vieleicht schon mal bei the Y-Project gesehn.
der nebel darf nihct in die nähe von wänden kommen(wenn man das mit partikeln macht),weils man ja sonst sieht, wie die hälfte des partikels in der wand verschwindet.
man kann natürich auch extrem viele kleine particles benutzen, was wahrscheinlich die framerate senkt, da man ja ein größeres feld füllen muss-> zu viele particle.
also wie kann man soetwas anstellen?was ist da am besten geeignet?und wie hält man die framerate hoch?vieleicht benötigt man ja auch nur einen script, der den partikel entfernt, wenn er zu nahe an eine wand kommt.
ist vieleicht ne schwere frage, aber antwortet trotzdem.
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/10/02 23:50

interessiert sich keiner für soetwas oder weiß das keiner...
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/11/02 00:39

hi! [Smile]

also... "volumetrisch wabernder nebel" is' eher schwer zu realisieren. du kannst natürlich eine riesige partikelfunktion schreiben. jeder partikel müsste aber theoretisch seine umgebung abscannen --> das wird sehr aufwändig. vielleicht kannst du ihn aber auch ab 'nem bestimmten abstand zum partikel-startpunkt killen, und einen neuen produzieren. einfach mal ausprobieren. ich würde die partikelsprites übrigens max. doppelt so groß machen, wie die umgebenden wände breit sind... damit sie drüben nicht rausgucken. das "wabern" zu scripten wird ne ganze menge zeit kosten.. man muss viel rumprobieren und immer auf ne gute performance achten (möglichst nur um den player rum wabern). ist allinone auf jeden fall 'ne knifflige scripter-aufgabe. und die sprite-grafiken müssen auch gut durchdacht sein. sie sollten nicht zu groß, nicht zu klein, nicht zu wenig aber auch nicht zu stark transparent und von der struktur her halt auch perfekt sein.. [Big Grin]

viel spaß beim ausprobiern,
michi [Roll Eyes]
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/11/02 00:51

das mit dem killen bei einer best. entfernung zum startpunkt ist ja schon mal ne gute idee. damit kommt man weiter .bei einem gang oder einem zylinderförmigen raum wäre das z.b. gut zu realisieren.das ganze noch auf die entfernung zum player getestet...das vabern bekommt man bestimmt hin, wenn man nach dem alter des paticels geht .
was mach ich aber wenn der raum ein bissl kantiger und eckiger ist. was man bräuchte wäre ein script der seine umgebung auf kosistenz prüft. also es müsste kreisförmig geprüft werden. wei mach ich das?...
Posted By: Blattsalat

Re: volumetrisch wabernder nebel - 10/11/02 01:33

Erzäuge anstelle eines partikels, entities (am besten einfache kuben) die unsichtbar sind. An die Entites haftest du dann deine Partikel und Bewegescripts. Wieviel Performance das frisst weiß ich net, aber es dürfte ziemlich aufwendig sein. Kombiniere das mit einem LOD, d.h.: nahe Partikel=128/128 weit enfenrte 32/32 und die ganz hinten sind 16/16.

Siehe den Flammenwerfer bei RTCW. Hängst du dann noch lichtquellen an die entites macht es schöne effekte, Aber wie gesagt: Die Performance!!!!
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/11/02 02:24

die idee gefällt mir...werds mal ausprobieren.thanx
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/11/02 03:58

also ich hab das nochmal überdacht und muss diese idee doch verwerfen. das problem ist nämlich, dass man keinen zusammenhängenden ebel erhält, wenn man die particle kleiner als die cubes macht. macht man die particles größer, werden sie wieder abgeschnitten, wenn sie an wände stoßen und man erkennt wieer deutlich die einzelnen bitmaps...
also microphones idee ist da wohl besser.aber auch da habe ich einen weiteren fehler entdeckt: wenn eine entity durch diesen nebel läuft, soll der nebel ja dort zur seite stoßen und sich dann langsam wieder verdichten. aber wenn die particles immer an der gleichen stelle kreiert werden, gibt es dort, wo sie kreiert werden das poblem , dass man wenn man gerade dort entlang gelaufen ist an dieser stelle wieder partikel kreiert werden. das sähe dann so aus, als ob in der luft ein "nebelsprüher" wäre.die partikel müssten sich aber von außen nach innen wieder verdichten.

also mein problem besteht immer noch. für weitere ideen wäre ich dankbar.es ist nicht nötig dass ihr sie wirklich umsetzen und mir einen script liefert.das kann ich ja übernehmen (hoffentlich klingt das nich bedrängend oder so)
Posted By: Blattsalat

Re: volumetrisch wabernder nebel - 10/11/02 21:08

Die Grundidee stammt aus dem pyrocluster plugin im 3dmax: die größe eines partikels und dessen dichte hängt vom abstand zur wolke ab und von dessen lebensdauer. Will heißen: löst sich ein partikel von der wolke fadet er aus.

Deine Partikel haben zwar eine kollisionsabfrage zu den levelgeometrien, verkeilen sich untereinander aber nicht am rand sondern in deren mitte. D.h.: der Rand des 2. partikels geht durch die mitte des 1sten. löst sich das partikel verkleinert es sich automatisch und verschwindet.

Ich seh nur nicht wohin das führen soll. In echtzeitspielen muss eben optimiert werden. Und nur damit ein partikel nicht durch ne wand geht so viele rechenoperationen durchführen scheint keinen sinn zu machen.
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/11/02 21:26

Man könnte die Partikel auch per Zufall verteilen lassen und dann jeden Partikel, der eine Entity oder entsprechende Wand trifft per destroy wieder entfernen, eine bestimmte Lebenszeit kommt hinzu.

Die Bewegung des Nebels könnte man mit einer Art zellulärer Automaten lösen und durch die Zufallsverteilung hätte man das entsprechende Loch dann zusätzlich zur Bewegung nach einer gewissen Zeit wieder geschlossen, die Keilform ergibt sich dann aus dem Zeitunterschied.

Allerdings dürfte das dann auch insgesamt sehr viel Rechenleistung erfordern, wie mein eben auch schon von anderen gesagt wurde.
Dürfte also in guter Qualität und in Echtzeit eine Herausforderung werden.
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/12/02 00:00

eine idee ist mir noch eingefallen, die alles nötige erfüllen sollte, kann natürlich sein, dass ich irgendetwas vergessen habe:

man benutzt Blattsalats cubes, gibt ihnen den push-wert des players-1, dann noc einen cube um diesen cube um den anderen cube,mit dem push wert player.push-2.jetztmuss der partikel eine größe haben, die zwischen der von cube1 und 2 liegt. dann kommen die partikel soweit es der erste cube erlaubt zusammen, und der 2.cube hält von levelwänden abstand.die cubes könnten bei berührung ein event auslösen, das den bounce-vector setzt, so ergibt sich dann das wabern. kommt nun beispielsweise der player durch den nebel gelaufen, so "bouncen" die partikel zur seite und "bouncen" sich dann gegenseitig langsam aber sicher wieder zurück und schließen somit das loch.
bin mal gespannt was 1.ihr und 2.mein rechner dazu sagt
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/12/02 00:03

hmm... so als grafik-demo isses insgesamt ne coole idee. =) aber dass jeder partikel seine umgebung scannt, um z.b. "weggeblasen" werden zu können, wird echt extrem viel rechnerleistung brauchen. probiern kann man's trotzdem... ich bin z.b. zur zeit dabei, einen... staubigen lagerhallen-raum zu basteln. da könnte ich mal ein bisschen waber-zeugs reinpflanzen + scripten. habe p4 2,0 ghz mit gf4 >> könnte hinhaun. =) wie das dann aber auf andren rechnern aussieht, weiß ich nich.
w. 's block-bouncer-idee is' nich schlecht... ein problem wird aber nich so schnell zu lösen sein: 16-bit-wabernebel ... will endlich das update!! ;D

michi
[Roll Eyes]
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/12/02 00:12

ja 16bit sind echt schlecht, da sieht man manchmal viel zu genau die einzelnen abstufungen.
also sollte irgendjemand von euch oder ich das hinbekommen, fände ich ein paar screenies ganz angebracht
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/12/02 00:45

werd's versuchen, kann aber erst frühestens mitte nächster woche anfangen damit... und versprechen tu' ich auch nix. [Wink]

michi
[Roll Eyes]
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/14/02 21:03

Habe mich auch mal ein wenig da mit hinter geklemmt, aber bin dann daran gescheitert, dass dann die Fehlermeldung kam, dass ich mehr als 299 Entities produzieren wollte.
Kann man diese Einschränkung irgendwie umgehen?
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/14/02 21:20

kann man, aber mach doch erstmal einen kleinen nebel [Smile]
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/15/02 20:57

So, ich habe das jetzt einfach mal ausprobiert.
Habe 250 Kuben genommen und denen eine Textur verpasst.
Um das ganze halbwegs realistisch aussehen zu lassen haben diese Kuben nun eine blasse Farbe bekommen. Warum die grünlich ist, kann ich nicht sagen, muss beim importieren des Skins passier sein, ist aber auch egal. Ebenso die Form der Partikel, habe eben keine Zeit in das Design gesteckt. [Wink]

Wenn man nun durch diesen Nebel durchschreitet, wird er zur Seite gedrückt und hinter dem Player schliesst sich diese Lücke langsam wieder.

Allerdings ist mein Rechner (ist auch nur nen Cel 533 mit TNT2) dabei schon ziemlich am ruckeln -> 2-4fps.

Kann im Moment leider keinen Screenie mit einbinden, weil ich nicht uploaden kann.

Wer aber gerne einen haben möchte, möge sich einfach an aknaust@phoenixcontact.com wenden.
Posted By: Anonymous

Re: volumetrisch wabernder nebel - 10/16/02 04:31

der befehl heißt max_entities oder so.
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/24/02 16:01

also ich habs jetzt geschafft. einen screen zu posten, würds ja nicht bringen, oder.soll ich den script mal posten?
Posted By: oliver2s

Re: volumetrisch wabernder nebel - 10/24/02 20:59

poste den Screen & das Script. Würd mich interresieren wie´s jetzt aussieht.
Posted By: willehi

Re: volumetrisch wabernder nebel - 10/26/02 01:55

vorab will ich sagen, dass ich es nicht ganz so macvhen konnte wie geplant, weil da die framerate nicht mitmachte.jetzt ist es dadurch aber leider nicht ganz so schön wie erst gewollt, z.b. ist der nebel zu unregelmäßig. dann gibts noch ein problem, das kann ich aber noch beheben (wenn ich mal zeit und lust hab werd ich das machen).Das wäre, dass der nebel sich nicht von treppen herunterwabern kann. da muss ich noch irgendwo ein paar traces einbauen.dann wird der nebel auch noch nicht richtig zur seite gefegt, wenn jemand durch ihn schreitet. da liegt das problem eigentlich darin, dass er zu schnell neu erstellt wird.das sind aber alles fehler, die man eigentlich ohne probleme beheben kann. wenn ich dann die finale version habewerd ich sie nochmal posten. oder ihr macht mal ein bissl weiter. irgendwann wirds schon richtig wabern...
also erst der script:
code:
 
var box_st_point[3];
bmap fog_map,<vn.bmp>;


function v_f
{
if (my_age == 0)
{
my_speed.x = random (0.2)-0.1;
my_speed.y = random (0.2)-0.1;
my_speed.z = random (0.2)-0.1;
my_size = 1500;
my_map=fog_map;
my_flare = on;
my_alpha = 90;
my_bright = on;
}
my_alpha -= 0.3*time;
if (my_alpha < 5 || content(my_pos.x) == content_solid)
{
my_action = 0;
}
}

function bounce_away()
{
if (event_type == event_stuck){my.skill21 += 1;if (my.skill21 > 3){remove (my);return;}wait (5); my.skill21 = 0;}
vec_to_angle (my.pan,bounce);
my.tilt = 0;
my.roll = 0;
}

action fog_cube
{
my.scale_x = you.scale_x;
my.scale_y = you.scale_y;
my.scale_z = you.scale_z;
my.push = you.skill3*-1;
my.pan = random (360);
my.enable_entity = on;
my.enable_impact = on;
my.enable_block = on;
my.enable_push = on;
my.enable_stuck = on;
my.event = bounce_away;
my.invisible = on;
while (my != null && you != null)
{
emit (1,my.x,v_f);
vec_set (temp,nullvector);
temp.x = 30*time;
ent_move (temp, nullvector);
wait (1);
}
}

action volumetric_fog
{
my.transparent = on;
my.passable = on;
while (my.skill1 < 60)
{
my.skill2 = 0;
while (my.skill2 < 39)//model hat 39vertices
{
my.skill2 += 1;
vec_for_vertex (temp.x, my, my.skill2);
if (content(temp.x) == content_solid){my.skill2 = 0;}
wait (1);
}
if (my.skill2 >= 39){create (<cube.wmb>,my.x,fog_cube);my.skill3 += 0.1;}
wait (1);
}
}

ich hab noch mit älteren befehlen gearbeitet, weil ich mich noch nicht so recht an die neuen gewöhnt habe.

und hier der screen:

 -
© 2024 lite-C Forums