Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 12:25

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Apr 20, 2006 01:10 
Offline
DGL Member

Registriert: So Mär 05, 2006 02:03
Beiträge: 4
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 20, 2006 06:42 
Offline
DGL Member

Registriert: Mi Mär 22, 2006 20:16
Beiträge: 22
Wohnort: Wuppertal
Meine Idee wäre sowas zu realisieren wie

Code:
  1.  
  2. //Pseudocode
  3. Faktor := (Wurzel(++)-500)/75;
  4. if Faktor < 0 then Faktor := 0;
  5. if Faktor > 1 then Faktor := 1;
  6. Partikel.Alpha := Faktor*Höchstwert;
  7.  


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)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 20, 2006 10:44 
Offline
DGL Member

Registriert: Sa Mär 20, 2004 22:48
Beiträge: 104
...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 ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 20, 2006 11:31 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 21, 2006 00:35 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
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'."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]