Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Hilfestellung / [Gelöst] Partikelgeschwindigkeit am Wind ausrichten
- - By Serpens66 (More than 200 posts.) Date 11.12.2014 02:05 Edited 11.12.2014 02:07
Es gibt in ModernCombat ein Environment "FogCreator".  Dieser erzeugt ein paar Nebel partikel und lässt diese mit Pushparticles unterschiedlich schnelll bewegen.
Mich hat daran gestört, dass es sich dabei nicht am tatsächlichen Wind orientiert, weshalb ich das ganze umgeschrieben habe, sodass die Geschwindigkeit immer dem Wind entspricht.
Funktioniert so, dass den Partikeln bei der Erstellung direkt die Windgeschwindigkeit übergeben wird und sie zusätzlich über einen Timer (alle 1 Frames) an die Windveränderungen angepasst werden:
 
beschleunigeen = (GetWind(0,0,1)-windvorherr);
    PushParticles("Nebel",+beschleunigeen);
  windvorherr = GetWind(0,0,1);


Zusätzlich hab ich noch ein paar andere kleinere Änderungen vorgenommen, aber hierfür jetzt erstmal unwichtig.
Das funktioniert alles wunderbar und der FogCreater ist nun ein schönes atmosphärisches Objekt, mit wenig Nebel.

Nun hatte ich schon vorher ein richtiges Nebelobjekt, welches größere Nebelpartikel erstellt, die auch wirklich dazu gedacht sind, die Sicht zu behindern. Diese waren allerdings starr und die Idee, sie zu bewegen gefiel mir, weshalb ich auch diese nun wie oben am Wind ausgerichtet habe.
Das Problem ist nur, dass dies richtiger Nebel sein soll, der sich zwar am Wind orientiert, aber er soll bei einer Windgeschwindigkeit von bis zu 100 nicht über das Land peitschen, sondern eben langsam "wabern".  Deswegen möchte ich nur einen Bruchteil der Windgeschwingkeit haben.
Nun ist die Frage, wie realisiere ich das?  Hatte natürlich zuerst einfach den Wert durch 4 geteilt, aber musste feststellen, dass das aufgrund des Rundungsverhalten von Clonk natürlich nicht funktioniert.  Denn die Beschleunigungswerte sind halt ganze Zahlen (meistens 1 oder -1, weil es sooft abgefragt wird) und durch das runden werden sie dann entweder garnicht beschleunigt, oder wenn ich den Timeraufruf verändere, dann haben die einzelnen Nebelobjekte, die z.b später dazugekommen sind, eine andere Geschwindigkeit, als die , die schon länger da sind.

Mir ist bisher noch keine Lösung eingefallen... da es soweit ich weiß ja auch keine Möglichkeit gibt den bereits existierenden Partikeln direkt eine Geschwindigkeit zu geben (nur beschleunigung geht) und man die Geschwindigkeit auch nicht abfragen kann... oder?
Parent - - By Zapper (More than 500 posts.) Date 11.12.2014 07:12
In OC geht das. In CR koenntest du stattdessen dann einfach echte Objekte statt Partikeln nehmen
Parent - - By Serpens66 (More than 200 posts.) Date 11.12.2014 14:17
okay... dann schau ich mal ob ich das hinbekomme.
Auf welche DefCore werte sollte ich da achten, damit das funktioniert und sie z.b nicht runterfallen usw, sondern einfach nur im Vordergrund immer in derselben Höhe bleiben?

Noch ne Frage zur Spiel Performance:
Hohe Anzahlen an Partikeln wirken sich sehr stark auf die Spielgeschwindigkeit aus. Wie würde es nun aussehen, wenn ich anstatt der Partikel eben gleichviele Nebel Objekte erstelle?   Da es ja ohne Probleme z.b hunderte Erdobjekte wie gold/stein/flints usw geben kann, wäre meine Vermutung jetzt, dass ohne Partikel sogar alles viel flüssiger laufen würde... wenn dem so wäre, warum gibt es dann überhaupt partikel?
Parent - By B_E (More than 200 posts.) Date 11.12.2014 14:36
Partikel werden im Unterschied zu Objekten nicht genau synchronisiert, d.h. wenn du auf einem System 10 Partikel in zufällige Richtungen castest, dann können die auf einem anderen System in andere Richtungen fliegen oder es könnten nur 5 auftauchen. In den Clonk-Einstellungen kann man generell die Partikelzahl festlegen, und die wirkt sich eben auf diese Werte aus. Es gibt auch maximale Werte pro Partikel, und wimre kann man das noch zusätzlich in die Particle.txt legen. Sie sind auch im Normalfall performanter, und durch die Konfiguration der Spieler besser an das jeweilige System angepasst.
Parent - By Zapper (More than 500 posts.) Date 11.12.2014 15:06
Obwohl Partikel manchmal lahm sind, sind die in jedem Fall schneller als Objekte. Das ist in OC sogar noch viel krasser.

Damit ein Objekt fliegt, muss es eigentlich nur eine Aktion mit der Prozedur FLOAT haben.
Parent - - By B_E (More than 200 posts.) Date 11.12.2014 14:36
Leider hat PushParticles in Clonk Rage keinen Präzisionsfaktor, d.h. es gibt keine einfache Lösung das mit Partikeln zu machen. Wenn du aber wenige große Partikel hast, kann das mit Objekten auch Sinn machen. Interessant ist dann für dich wimre C4D_Foreground (vor allem anderen), und C4D_MouseIgnore, evtl. noch etwas gegen Gravitation (vielleicht klappt da noch C4D_StaticBack mit?). Ansonsten schau dir mal CMCs Rauchgranaten-Objekt an, da machen wir das mit intelligenteren Rauchobjekten, die jeweils immer wieder Partikel an neuen Positionen erzeugen.
Parent - - By Serpens66 (More than 200 posts.) Date 11.12.2014 17:00
Danke für die antworten, auch an Zapper :)

Gibt es eine Partikeldokumentation für CR? Also was man da alles an einträgen machen kann und was sie bedeuten?
Sehe nämlich grad, dass in ModernCombar z.b WindDrift=25 drinsteht.. das klingt nach Windbewegung? :D

"intelligentere Rauchobjekte".. wird das alles im Rauchobjekt geregelt, oder auch im Partikel selbst?  Und inwiefern hilft mir das für mein Nebelprojekt? Anstatt die Partikel zu bewegen immer wieder entfernen und ein paar pixel weiter wieder erzeugen? ich schau mir das skript mal genauer an...
Parent - By B_E (More than 200 posts.) Date 11.12.2014 17:04

>Gibt es eine Partikeldokumentation für CR? Also was man da alles an einträgen machen kann und was sie bedeuten?


Jep :-) http://crdocs.clonkspot.org/de/sdk/particle/index.html

>"intelligentere Rauchobjekte".. wird das alles im Rauchobjekt geregelt, oder auch im Partikel selbst?  Und inwiefern hilft mir das für mein Nebelprojekt? Anstatt die Partikel zu bewegen immer wieder entfernen und ein paar pixel weiter wieder erzeugen? ich schau mir das skript mal genauer an...


Im Rauchobjekt. Wir haben halt in CMC noch die Sicht-Abdunkelungsgeschichten, aber eventuell kannst du ja mit der gedämpften Bewegung dort etwas anfangen.
Parent - By Serpens66 (More than 200 posts.) Date 29.12.2014 21:08
Manchmal denkt man sich die kompliziertesten Ansätze aus und kann es dennoch nicht lösen, so wie das Problem hier.
Dann kümmert man sich erstmal um was anderes und plötzlich fällt einem ganz spontan eine super einfache Lösung ein :D

Und zwar brauche ich ja nur die Windgeschwindigkeit bei jeder berechnung mit meinem Faktor multiplizieren (also sowohl in "beschleunigeen", als auch "windvorherr").  Dadurch rechne ich dann nicht mit der Höchstwindgeschwindigkeit von 100, sondern z.b einfach mit 10. Und schon ist auch dies die höchstgeschwindigkeit der Partikel :)
Up Topic Deutsch / Hilfestellung / [Gelöst] Partikelgeschwindigkeit am Wind ausrichten

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill