OpenGL / GLSL: Was ist der beste Algorithmus Wolken zu machen / Rauch von volumetrischen Daten aus?

StackOverflow https://stackoverflow.com/questions/2591956

  •  25-09-2019
  •  | 
  •  

Frage

Ich mag die 3D-Volumendaten machen: Dichte (kann auf Alpha-Kanal abgebildet werden), Temperatur (kann auf RGB abgebildet werden). Derzeit Projektion Ich simulationg maximale Intensität, zB. Die größte Dichte / undurchsichtiges Pixel in der Rendering end.But diese Methode verliert die Tiefenwahrnehmung

würde ich nachzumachen mag die Wirkung wie ein Feuer in dem Rauch.

Also meine Frage ist, was die Techniken in OpenGL ist, Bilder auf der Grundlage verfügbarer Daten zu generieren?

Jede Idee ist willkommen.

Danke Arman.

War es hilfreich?

Lösung

Ich würde zunächst einen Volume-ray Caster versuchen.

Sie können Google „Volumenvisualisierung Mit Ray Casting“ und das sollte man die meisten, was Sie brauchen. NVidia hat eine große Probe (mit Openg) von Ray-Casting durch eine 3D-Textur.

Auf Ihrer spezifischen Implementierung müssten Sie nur durch das Volumen Schritt zu halten accumlating die Temperatur, bis Sie die wollte Dichte erreichen.

Wenn Ihr Volumen in Videospeicher nicht passt, können Sie das Ray-Casting in Stücke tun und dann eine Zusammensetzung Schritt tun.

Eine kurze Beschreibung von Ray-Casting:

CPU: 1) Machen eine sechsseitige Würfel im Welt-Raum als Zeichen primitive stellen Sie sicher, zu verwenden Tiefe Culling.

Vertex-Shader: 2) In dem Vertex-Shader-Speicher aus der Welt Position der Scheitelpunkte (dies wird interpoliert pro fragmet)

Fragment-Shader: 3) Verwenden der interpolierten Position minus der Kameraposition, die den Vektor von traversal durch das Volumen zu erhalten. 4) Verwenden eine while-Schleife, um durch das Volumen von dem Punkt auf dem Würfel durch die andere Seite. 3 Möglichkeiten, zu wissen, wann zu beenden.   A) Test bei jedem Schritt, wenn der Punkt ist immer noch in der dritten Potenz.   B) einen mit Würfelstrahlschnitt machen und den Abstand zwischen den Schnittpunkten berechnen.   C) macht einen Prerender des Würfels mit vorderer Fläche Culling und speichern Sie die Tiefe in eine zweite Texturkarte dann SAMPE nur auf dem Bildschirm Pixel um den Abstand zu bekommen.

5) anhäufen, während Sie Schleife und stellen Sie die Pixelfarbe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top