Tja namen sind meiner Meinung nach nebensaechlich. Da ich keine Marketingkampange anheizen muss, kann sowas am ende kommen. Nun gehts mir aber erstmal um weitere Ideen für die Engine. Die Engine ist durch das Tut entstanden und wurde dann soweit ich Ideen hatte, erweitert:
http://shaddow89.sh.funpic.de/particle.zip
Ist alles drin, auch ne Demoexe.
So könnte eine Feuerinitalisierung aussehen:
Code:
Fire := TEffekt.Create('Feuer',1600,1000,20,10,'fire.tga');
Aber nun hoffe ich von euch auf mehr Ideen für die Engine. VIelleicht auch eine Anregung, wie ich möglichst effektiv Kreisförmige ParticleEffekte erzeuge. Also funktionstechnisch bekomme ich das schon hin, aber wie die Aufrufe dafuer am elegantesten wären, meine ich.
Aber natuerlich freue ich mich über jegliche Art anregung, was ihr schon alles so realisiert habt.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Code:
Fire.SetGeschwindigkeit(80,150,40,-0.3,0.2,-0.2);
Fire.SetParticleGeschwindigkeit(4,6,-0.02,0.03);
Du meinst das doch wohl eher so, oder?
Code:
Fire.SetSpeed(80,150,40,-0.3,0.2,-0.2);
Fire.SetParticleSpeed(4,6,-0.02,0.03);
Alle Englischsprachigen Programmierer werden mit Geschwindigkeit nicht viel anfangen können. Von daher würde ich Benamung komplett in Englisch gestalten.
Sonst würde mir nur noch einfallen, dass du die Größe der Partikel und evtl eine Drehung einbaust. Also, dass die Partikel zu Begin unterschieliche Größen haben und dann evtl auch ihre größe im laufe der Zeit verändert. Bzw das ganze auch noch mit einer Drehung. Dann wirkt es nicht so gleichmäßig sondern schon zufälliger.
Meine Frage dazu gleich ma: Bisher habe ich eine mehr oder weniger geradlinige Bewegung der Partcle simuliert (die abweichungen kommen durch die Randomfunktionen)
allerdings würde ich auch gerne die möglichkeit einer Wellenlinie oder eines Kreisbogens etc geben.
Am liebsten wäre es mir, dass ich eine Funktion ala:
Fire.SetMovement ('sin x'); oder irgendwie sowas, dass per Funktion die Bewegung berechnet wird.
Ka ob das ueberhaupt so möglich ist, aber irgendwie müssen komplexere Particlengines ja auch kompliziertere Bahnen simulieren können. also hat wer ne Ahnung wie das geht?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Die komplexeren Partikelsysteme arbeiten mit handfesten Physiksimulationen/Kolisionen zusammen. Solche Wellenlinien oder auch Schlingern habe ich allerdings bisher noch nicht groß gesehen. Dafür bin ich aber die falsche Adresse.
Ob du mit sowas wie "Fire.SetMovement ('sin x');" weit kommst bezweifle ich, zumal die implementierung davon sicherlich auch nicht einfach wird und es am Ende auch recht limitierend wird.
Ein Möglichkeit wäre die implementierung einer Script funktion. (z.b. mittels TJvInterpreterProgram von JVCL).
D.h. du machst es möglich das die gesammte Bewegung von einem script gesteuert wird. Kann aber durchaus sein das das bei vielen Partikeln und damit vielen Aufrufen stark auf die Performance geht.
Ich würde erstmal eine einfache Gravitations Engine einbauen.
Praktisch das du für deine Effekte Graviationspunkte mit stärke und eventuell auch richtung einstellen kannst.
Sowas wie Fire.AddGravityPoint(x,y,z,stregth : double; ax,ay,az : boolean); (ax = affect x coordinate,...).
Eventuell auch noch mehr parameter um die stärke in abhängigkeit vom Abstand einstellbar zu machen.
Damit lassen sich aber bestimmten sehr nette Effekte erstellen Die Effekte hängen dann nicht von irgendwelchen vorgefertigten Funktionen ab sondern nur von den Parametern der Graviationspunkte und besonders von den Anfangsgeschwindigkeiten und Richtungen der Partikel.
Ja die Geschichte mit den Gravitationspunkten is auch ne nette Idee und werd ich mal versuchen, allerdings:
Das hier ist die Berechnung des Containers, der Schablone für alle Particle dieses Containers also:
Wenn ich da jetz noch die Gravitypoints mit einberechne, müsste ja jeweils bei den Geschwindigkeiten dieser Parameter abgezogen werden (oder so in der art), aber dadurch wird die berechnung ja immer komplexer. Deswegen würde ich gerne wissen, ob das so, wie ich das hier berechne wirklich sinn macht, oder ob ich nich eigentlich einen völlig falschen feldweg gehe, der immer komplexer wird, während eine schnellstraße nebenher geht ^^
Also bitte ich um Antwort auf dieses Problem
UND:
In wiefern bringt mir der Interpreter etwas? Ich muss ja an sich die Interpretation nur einmal aufrufen, sodass das Script einmal geparsed wird, und das programm sich dann merkt, wie die bewegung zu berechnen ist (wie auch immer das geht ^^), dann würde es ja eigentlich ziemlich schnell gehen. Geht das? wenn ja, gibs dazu Zaunpfahlwinker, Tuts oder oder oder?
Ich habe keine Ahnung was bei dir nun Container sind oder was der Code da soll
Aber die Berechnung mit Gravitation sollte nicht so wahnsinnig mehr kompliziert werden. Es wirkt halt die ganze Zeit die Gravitationskraft auf deine Punkte. Hast du mehrere Gravitationspunkte gilt Superposition der Kräfte, also einfach Addition. Aus allen Kräften folgt damit direkt die auf die Partikel wirkende beschleunigung. Die rechest du einfach für jeden Partikel die beschleunigung als Vektor für die aktuelle Position aus und haust es in deine Bewegungsgleichung mit rein
Mit dem Script und dem Interpreter müßte imo so laufen das du das script für jeden Partikel und jedes Update(also praktisch OnTimer) aufrust.
Und soweit ich weiß funktioniert JvInterpreter so das er es auch jedesmal parsen tut. Also für ne Partikelengine wohl zu langsam. Hab mich aber auch noch nicht sooo intensiv damit beschäftigt.
Ja gut wie ich das mit den Gravitypoints hinkrieg, haet ich mir nun schon denken können ^^
Naja mal sehen, vllt meldet sich ja noch wer, der schon ne große Particleengine geschrieben hat, und sagt mir, wie er das gemacht hat, mit der flexiblen bewegungsberechnung *zu kyro schiel*
du kannst objekte wie reflektoren, attraktoren und gravitationsfelder einbauen. du kannst zufall einbauen, du kannst einbauen, dass man den streuungswinkel wählen kann, und und und...
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.