# Zwei Fragen (Exponential Fog und Schein-nach-außen-Effekt)



## dergrüne (23. Feb 2008)

Servus,

ich habe gleich zwei Fragen und würde mich freuen, wenn jemand eine oder beide beantworten könnte.

1. Wie funktioniert diese Exponential Fog in Java. Finde keine wirklich gute Anleitung dazu. Habe selbst was rumprobiert,    
    aber egal was ich mache ich sehe den Nebel nicht. (habe ihn natürlich in den Scenegraphen geadded!)

2. Kann man in Java3D irgendwie so eine Art Aura darstellen. Also so ein Leuchten um ein Objekt was nach außen hin 
    abnimmt. So ähnlich wie auf diesem Bild um den Planeten 
Bild

Wäre super, wenn mir jemand helfen könnte.

Schönen Abend noch
Der Grüne


_L-ectron-X hat diesen Beitrag am 02.03.2008 um 17:12 Uhr editiert._
_Titel des Themas angepasst._


----------



## Illuvatar (24. Feb 2008)

1. Das ist nicht weiter kompliziert... die Frage ist nur, ob du evtl. eine falsche Vorstellung von diesem "Nebel" hast. Fog in J3D ist kein "Volume Fog", d.h., wenn du einen ExponentialFog in den Scenegraph einbaust, und _dahinter_ bzw. innendrin kein Objekt zu sehen ist, wirst du auch den Effekt des Nebels nicht bemerken.Der macht nämlich nicht mehr, als die gemalten Objekte, auf die der Nebel eine Wirkung hat, mit einer Farbe zu überblenden. Die Stärke davon hängt beim ExponentialFog dann eben exponentiell mit der Entfernung zusammen. Deshalb sollte ein Fog auch immer die gleiche Farbe wie der Hintergrund besitzen.

2. Da gibt es nichts vorgefertigtes... mit einem Shader würde das sicher gehen (mit einem Shader könnte man vllt auch einen "richtigen" Nebel darstellen). Sonst fallen mir noch halbtransparente Spheres ein, die um die Planeten gelegt werden.


----------



## dergrüne (24. Feb 2008)

Super Danke für die Antworten.

Zu eins habe ich auch gerade eben gelesen, dachte das wäre halt so richtiger Nebel wie man ihn sich vorstellet. Hatte da wohl wirklich eine Falsche vorstellung.

Mit Shadern hört sich interessant an, hab ich nur noch keine Ahnung von. Hast du da ein gutes Tutorial oder so wo man sich was dazu anlesen kann, speziell für J3D wäre es super.

Das mit der Transparenten Sphere die drüber liegt, habe ich schon gebaut, sprich so sieht es bis jetzt schon aus. Wollte halt nur was besseres machen, was halt nach außen hin abnimmt.

Jetzt muss ich mir nur noch überlegen wie ich eine ordentlich Explosion in J3D hinbekomme (dafür wollte ich eigentlich den Nebel verwenden) Und wie ich Laser Strahlen, besser hinbekomme als nur mit einem Strich.

Schönes WE noch
Der Grüne


----------



## Illuvatar (24. Feb 2008)

Tja, von Shadern hab ich selber nicht soo viel Ahnung  Vielleicht kommt ja noch jemand anderes.

Um Shader einzubauen musst du jedenfalls statt einer Appearance eine ShaderAppearance verwenden. Wenn du bei Google mal suchst findest du auch Beispiele für J3D-Programme, die GLSL-Shader verwenden. Weiter bin ich aber selber auch noch nicht gekommen.


----------



## dergrüne (24. Feb 2008)

Alles klar vielen Dank, damit kann ich schon was anfangen. Wusste gar nicht das es shaderApperanche gibt.

Nur so also Info, dass soll alles für ein Spiel sein. Was auch schon quasi fertig ist.

Hier siehst du eine kleine HP von dem Spiel, die Bilder sind ber schon etwas älter, das Layout hat sich inzwischen ein wenig geändert. 
Conquest of the Stars
Und ich bin jetzt dran die Schlacht zu machen. Der Algorithmus ist bis auf ein paar Kleinigkeiten schon fertig und ich versuche den jetzt visuell darzustellen, das klappt auch schon alles. Nur Explosionen fehler halt :-D

mfg
Der Grüne


----------



## dergrüne (2. Mrz 2008)

Bin mit den Shadern leider noch nicht weitergekommen.

Kann man mit der standard java3d api überhaupt richtige shader machen? Weil so gut wie jedes Beispiel sich auf JOGL bezieht, damit kann ich aber leider nichts anfangen.

Wenn jemand ein Tutorial kennt oder hat (egal ob deutsch oder englisch) wäre ich Dankbar, wenn er es posten würde.

mfg


----------



## 0x7F800000 (2. Mrz 2008)

irgendwie fällt mir für so einen atmosphere-effekt momentan gar kein shader ein, mir fehlt nicht nur das konkrete wissen was J3D angeht, sondern hier fehlt mir auch noch die grundidee...

Ansonsten kann ich sagen, dass all deine probleme sich prima mit sprites lösen lassen:

Atmosphäre: IMHO könntest du das auch mit transparenten sphären ganz gut hinbekommen, indem du mehrere transparente sphären ineinander geschachtelt um den Planeten herum legst, auf den zB rotierende Wolkenformationen zu sehen sind, und damit es auch am rand gut aussieht, könntest du noch einen einfachen sprite um den ganzen planeten legen, der im grunde nur diesen leuchtenden immer transpaenter werdenden kreis darstellt. 
Auf dem Screenshot den du gezeigt hast sieht es für mich nach nem simplen sprite aus...

Die explosionen werden in den meisten graphisch nicht allzu-overkillten spielen durch 2D-Sprites dragestellt, hauptsache animiert, möglicherweise in mehreren schichten, aber alles 2D...

Genau dasselbe mit laserstrahlen: Stell dir vor, dein Laserstrahl (richtig fett gezeichnet grünglühend mit irgendwelchen blitzen drumherum etc...) ist einfach eine lange rechteckige textur. Wenn ein strahl abgefeuert wird, dann ist die stelle bekannt, von wo der abgefeuert wurde, und die richtung wohin. Jetzt musst du einfach entlang dieses strahls ein rechteck (bestehend aus 2 dreiecken...) vom gewehr bis zum ziel zeichnen, und haupsache: diesen so ausrichten, dass der Rechteck-normalenvektor direkt in die Kamera zeigt. Darüber legst du gekachelt die laserstrahl-textur. 

kP, hoffentlich hilfts was...  :toll:


----------

