.| Autor | Beitrag |
|---|---|
|
000 11.05.2001, 12:33 Prophyle |
Mir gehts jetzt darum, was dies überhaupt ist.
Prophyle, Coder beim SGT: http://mod.famkos.de.
|
|
Profil || Suche |
|
001 11.05.2001, 13:36 blair |
Also für SGT kannst du dir das sparen, da arbeite ich schon dran.
(Das ganze ist eine Class, also ein partikel system)
So hab ichs gemacht, das ist aber wohl nur eine von mehreren möglichkeiten. --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
002 11.05.2001, 15:35 Prophyle |
Hm. Wieviele Teilchen sind da drin? Mich interessiert es der Geschwindigkeit wegen, in der das System dann dargestellt wird. Schon allein für jeden einzelnen Körper braucht man ja erstmal den Speicherplatz, in Halflife ist das ein CBaseEntity mit doch recht vielen Variabeln und Funktionen, die gespeichert und berechnet werden möchten.
Von der Raum-Berechnungs-Vorstellung ausgehend: Die simpelste Form hier ist eine Pyramide mit vier Seiten. Sie hat vier Ecken. Ich lasse nun nur diese vier Ecken als Körper berechnen. Allerdings kann sich so ein System nicht beliebig verformen; die Verbindungslinien der Ecken müssen berücksichtig werden. Sie können sich nicht sofort beliebig ausdehnen, sondern reagieren wohl ungefähr wie Gummi, oder eine physikalische Feder. Dadurch entsteht dann also ein schwingungsfähiges System; hierfür existieren Dokumentationen, wie diese Schingungen zu berechnen seien. Die Partikel selbst sind konstant, und bleiben gleichmäßig über den Körper verteilt.
Prophyle, Coder beim SGT: http://mod.famkos.de.
|
|
Profil || Suche |
|
003 11.05.2001, 19:10 blair |
Also ich hab das ganze mit 500 Partikeln laufen lassen und das ging ohne probleme! Das ist einer der vorteile der Triangle Strips, du kannst recht viele relativ schnell berechnen lassen.
because our freedom sits at the end of a gun |
|
Profil || Suche |
|
004 11.05.2001, 19:43 TheTinySteini |
Dafür haste glaub ich nen Overflow an Tempentities... --TheTinySteini |
|
Profil || Suche |
|
005 11.05.2001, 20:26 blair |
hmm, wiegesagt: mein system ist bisher ein ogl system --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
006 11.05.2001, 21:02 TheTinySteini |
Also, mit dem HL-eigenen Partikelsystem hab ich auf die Schnelle dies hier hingekriegt:
Stark verbesserungswürdig, aber ich krieg die Punkte nicht heller... aber für ein bisschen Schneeatmosphäre tut's schon. [edit]Ich hab das grad mal in nem dunklen Level getestet, da sieht das richtig geil aus - in Crossfire wirkt der Schnee halt ziemlich deplatziert. Allerdings kann ich von der dunklen Map keinen Screen posten, weil's ne geheime Poke646 Map is :-( [/edit] [edit 2]Endlich hab ich ne dunkle Stelle im Original-HL gefunden...[/edit 2] --TheTinySteini |
|
Profil || Suche |
|
007 11.05.2001, 23:47 blair |
nett! Und weil ich so weil Prophyle und ich die Idee hatten, postet du uns mal den code... thx *g* --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
008 12.05.2001, 00:18 Prophyle |
He leute!
Prophyle, Coder beim SGT: http://mod.famkos.de.
|
|
Profil || Suche |
|
009 12.05.2001, 11:55 TheTinySteini |
Ok, I'm gonna tell you ;-) In der entity.cpp gibt's ne Funktion ParticleCallback(), und dadrunter ne Funktion Particles(). Die sind beide auskommentiert - aktiviert sie wieder und schreibt sie so um:
Dann etwas weiter unten in der HUD_CreateEntities() ist die Zeile "Particles();" auskommentiert, die aktiviert ihr auch wieder. Und das war's dann auch schon. Easy, huh? Am besten wirkt es wie gesagt in ner dunklen Map...
TheTinySteini |
|
Profil || Suche |
|
010 12.05.2001, 12:00 blair |
cool! thx --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
011 12.05.2001, 12:13 TheTinySteini |
Wer damit guten Schnee hinkriegt, kann ja mal ein Tut für DHCC schreiben *fg* Btw: Der Vorteil dieser Particles ist, dass man ziemlich viele darstellen kann, ohne dass die Geschwindigkeit groß beeinflusst wird. Mein Schnee zum Beispiel berechnet 1875 Schneeflocken gleichzeitig ;-) Ich glaub das Maximum ist 2000, sonst gibt's nen Fehler von wegen "Not enough free particles". --TheTinySteini |
|
Profil || Suche |
|
012 12.05.2001, 14:01 blair |
ich sag doch, man kann viele damit darstellen! --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
013 12.05.2001, 14:18 Creeper |
Kennt jemand tuts für Partikel System in HL ?? --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
014 12.05.2001, 14:20 blair |
Gibts nicht.
Übrigens: Man dürfte auch ziemlich coole Fire Effects mit nem Partikelsystem hinkriegen. --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
015 12.05.2001, 14:58 DarKnight |
Hmmm. Also ich würde mal sagen, dass Blairs OGL System schon geht. Aber für jedes Partikel eine ganze Struktur (so hab ichs verstanden) zu beanspruchen ist schon wirklich sehr speicherfressend. Allerdings glaube ich auch, dass das heute wirklich nichtmehr viel macht. Man kann sich ja mal die ganzen OPartikeleffekte in Black and White anschaun. Das ist unglaublich was da son an manchen stellen auf den Screen kommt. Und ich sehe dabei keine grossen Einbrüche der Performance. Ich hätte aber dennoch einen Verbesserungsvorschlag. Man teilt verschiedene Partikel, sagen wir mal immer 10, in eine Struktur ein. Nur die Struktur wird in der Position verändert. In einer Draw Routine werden alle Strukturen durchgegangen und für jede Struktur einfach mehrere Partikel gezeichnet. Dabei beschränkt sich der Speicherverbrauch nur auf den Grafikspeicher. Variablen für jedes einzelne Partikel werden nicht berechnet. Wenn man das jetzt noch alles geschickt anordnet wird man einen guten Effekt hinbekommen obwohl sich die Partikel in Gruppen bewegen (Schnee, Regen und so weiter). Ich habe dieses System schon in 2D ausprobiert und ich schaffe damit halt die zwanzigfache Menge an Partikeln (ist ja klar, oder) =) Naja vielleicht hat euch das ja weitergeholfen. --void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|
016 12.05.2001, 16:56 Another1 |
ok, ich würds so machen: nen particle "organizer" CParticleEngine oder so mit dieser
und dann einfach inner Think function die particles bewegen (in dem Beispiel: origin = origin + velocity*timeFraction; das is alles =P ) und in HUD_DrawTriangles oder so CParticleEngine::Draw(...) aufrufen, welche dann das array (oder die linked list; hier sicher von Vorteil wegen tod/spawn von neuen Partikeln) durch geht
CParticleEngine::Draw(particle_t *pParticle);
ich würde irgendwie davon abraten, das Half-Life interne partikel system zu benutzen, da man ja mit der Triangle API alles eigentlich viel besser machen kann, und auch nicht auf 2000 partikel (oder was auch immer das Maximum ist) beschränkt ist! das könnte man dann bequem erweitern (CParticleEngine::AddParticle(particle_t* pParticle) u.ä) --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
017 12.05.2001, 17:17 Prophyle |
Interessant, was da alles so an den Tag kommt :-)
Prophyle, Coder beim SGT: http://mod.famkos.de.
|
|
Profil || Suche |
|
018 12.05.2001, 17:34 blair |
Ich sags doch, die Triangle Strips der TriApi, damit müsste es gehen. Eventuel kann ich sogar einen Teil meines Codes übernehmen. --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
019 13.05.2001, 00:06 Creeper |
Ach, ja warum dass so dunkel ist, also entweder beim Umwandeln von int nach short oder weil das von der HL-Engine noch angepasst wird, z.b in der Helligkeit! --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
020 13.05.2001, 13:28 DarKnight |
Wens interessiert: Ich bastele grade noch ane inem universellen System, in dem auch die oben besagte Technik zum Zuge kommt. Ich wurde ausserdem noch ein paar nette Effekte einbauen. Wenn euch besondere Effekte einfallen könnt ihr sie ja mal beschreiben. Für Physikalische Formeln wäre ich auch sehr dankbar, denn damit lässt sich ja bekanntlich nochmahr machen! =) PS: Das System ist vorerst für 2D geplant. ALlerdings kann man ja 3D später noch hinzufügen. --void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja? |
|
Profil || Suche |
|
021 13.05.2001, 17:23 Prophyle |
Anliegendes E-Feld, B-Feld;
aber keine Bange, das wird meine Facharbeit, es ist also zu schaffen ;) --Prophyle, Coder beim SGT: http://mod.famkos.de.
|
|
Profil || Suche |
|
022 13.05.2001, 18:57 blair |
OMG Prophyle, du könntest auch einfach die Nächstbeste UT Version im Unrealed öffnen, und die Physik der FireEngine klauen! --because our freedom sits at the end of a gun |
|
Profil || Suche |


