abend zur zeit schreibe ich an einer kleinen partikel engine und bin dabei auch schon an ein problem gestossen.
es sieht ein wenig komisch aus wenn die partikel so aprupt enden, deshalb möchte ich sie nach außen hin gerne mit der umwelt interpolieren sprich blenden.
ich hab leider keine ahnung wie man das anstellen könnte und hoffe, dass mir jemand von euch einen denkansatz geben kann. ich arbeite dabei mit texturierten quads
anbei ein screenshot, der illustriert was ich meine und wie hässlich es aussieht wenn dies nicht der fall ist :p
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Mi Mär 22, 2006 20:16 Beiträge: 22 Wohnort: Wuppertal
Meine Idee wäre sowas zu realisieren wie
Code:
//Pseudocode
Faktor :=(Wurzel(x²+y²+z²)-500)/75;
if Faktor < 0then Faktor :=0;
if Faktor > 1then Faktor :=1;
Partikel.Alpha:= Faktor*Höchstwert;
Also ab einem bestimmten Entfernung fängt die Transparenz, zuzunehmen, (zB 500) und nach bestimmten Schritten weiter (zB 75) ist dieser Partikel dann zu 100% unsichtbar (Faktor > 1)
...also wenn ich das richtig verstanden hab' damals, dann geht das mit einer Textur, die immer in deine Richtung rotiert; wird glaube ich auch Billboard genannt. Überall da, wo du ein Partikel zeichnest, kommt ein Quad mit z.B. einem Flare als Textur drauf hin, da empfiehlt sich glBmp, da er auch den Alpha Kanal ausliest. Dieses Quad wiederrum muss dann an Ort und Stelle immer so rotieren, dass du es genau von vorne siehst. So hast du die volle künstlerische Freiheit bei deinen Partikel.
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Zitat:
... glBmp ...
*hust*
Partikel: Im Normallfall wirst du wohl andere Partikeltexturen verwenden als die die di jetzt benutzt. Und dann kommt es ganz darauf an was du damit vor hast. Bzw da es eine Engine sein soll kommt es ganz darauf an was der Entwickler damit vor hat. Üblicherweise wird es aber so sein, dass auf jeden Fall geblendet wird.
Für Feuer wird normal adaptiv Geblendet. Das bedeutet nichts anderes als, dass die Werte addiert werden. Dafür müsstest du dann nicht der Tiefe nach sortieren. Wenn du jetzt aber eher Nebel darstellen möchtest wird normal geblendet wobei die Sortierreihenfolge wichtig wird. Da es aber eine Partikelengine ist finde ich solltest du beides trennen. Also die Darstellung der Partikel ist sache des Entwicklers wären die mögliche Sortierung deine Sache ist. Das würde ich einstellbar gestalten, damit du bei adativem Blending nicht sortieren musst.
Aber nochmal zum eigentlichen Blenden. Es wird so laufen, dass du eine Textur benutzten musst die einen Alphakanal besitzt. Dieser sollte dann einen weichen Übergang beinhalten. Wenn du dann Blending aktivierst haben deine Partikel keine harten Kanten mehr. Wie das geht erfährst du im oben verlinkten Tutorial.
PS: Die Partikel in der Tiefe etwas auszublenden ist durchaus zusätzlich noch etwas was man machen kann. Aber auch dabei solltest du deine Engine nicht beschneiden, einschränken oder fest einbauen. Du solltest dabei immer im Auge behalten, dass diese universal einsetzbar bleibt. Ungeachtet dessen ob du diese später der breiten Masse zur Verfügung stellen möchtest oder nicht.
Dem hätt ich jetzt nichts mehr hinzuzufügen. Ich tu's aber trotzdem. Einmal, um meinen Mitteilungsdrang zu stillen *sg* andererseits um den Worten der Vorredner mehr Gewicht zu verleihen ^^.
Wenn du eine Engine schreibst, ist das oberste Gebot tatsächlich universelle Einsatzmöglichkeit. Es gilt, Redundanz um jeden Preis zu verhindern. Den kleinen zusätzlichen Aufwand, den man betreibt, um alle Sachen zu modularisieren und universell aufzubauen, ist klein, vergleichen mit dem Aufwand, den du dir durch redundanten Code schaffen würdest. Am besten nicht zu sehr drüber nachdenken, sondern so universell wie möglich schreiben
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.