2010-12-15 29 views
5

Chcę renderować efekt ognia w OpenGL na podstawie symulacji cząstek. Mam setki cząstek, które mają pozycję i temperaturę (a więc i kolor), a także wszystkie ich inne właściwości. Po prostu rendering przy użyciu glut nie wygląda zbyt realistycznie, ponieważ cząsteczki są zbyt szerokie. Jak mogę narysować ogień na podstawie informacji o cząstkach?Renderowanie ognia w OpenGL

+0

Wygląda na to, że musisz interpolować lub znaleźć jakąś metodę, która to zrobi za Ciebie? – ccook

+0

Tak, szukam metody tej interpolacji w OpenGL, ponieważ jeszcze jej nie znam. Jakiś solidny model dynamiczny może ... Przejrzystość jest również ważna, aby realistyczny ogień na krawędziach – Etan

Odpowiedz

5

Jeśli jesteś po prostu stara się stworzyć realistyczny efekt ognia użyłbym jakiegoś ponownie istniejącej biblioteki zgodnie z zaleceniami w innych odpowiedziach. Ale wydaje mi się, że jesteś po wyświetleniu symulacji.

Bezpośrednim rozwiązaniem, które warto wypróbować, może być zastąpienie obecnych sfer billboardami (tj. Obrazem graficznym, który zawsze jest skierowany w stronę aparatu), które są w środku białe i blakną do przezroczystości w kierunku krawędzi - oczywiście pozycjonowanie i kolorowanie obrazów zgodnie do twoich cząstek.

Lepszym rozwiązaniem jest podejście do płomienia jako zestawu siatek 2D, na którym można kontrolować przezroczystość i kolor każdego wierzchołka na siatce. Można to zrobić w OpenGL poprzez skonstruowanie płaszczyzny z quadów i użycie systemu cząsteczek do obliczenia (poprzez interpolację z najbliższych cząstek) koloru i przezroczystości każdego wierzchołka. OpenGL będzie interpolować każdy piksel między wierzchołkami dla ciebie i daje gładki obraz "średnich cząstek w okolicy".

+0

Miło! Ten drugi może być wdrożony jako tekstura proceduralna, prawda? Hmm ... Nie, to nie ma sensu - każda instancja shadera fragmentów prawdopodobnie miałaby zbyt wiele do zrobienia. Musielibyśmy stworzyć tę teksturę raz na klatkę przed renderowaniem ognia. – Kos

+0

Dzięki. Czy mógłbyś dodać więcej informacji na temat tych sieci 2d? – Etan

+0

Naprawdę pomogłoby, gdybyśmy dokładnie wiedzieli, co chcesz osiągnąć: Czy próbujesz narysować symulację w czasie rzeczywistym lub po prostu wyświetlając konkretne zdjęcia? Czy chcesz wiernie reprezentować symulację, czy powinna ona wyglądać dobrze na oko? – Elemental