Warsztat » Forum

[DirectX] Drzewka i billboardy

May 5, 2008 | kdteam |
4 wypowiedzi na 1 stronach:
1
kdteam
May 5, 2008

Drzewka i billboardy

Więc tak: rysuje sobie drzewkna scenie 3D z zastosowaniem billboardów. Przed narysowaniem sortuje je według odległości od pozycji kamery żeby rysowały sie od najdalszego. Problem pojawia się przy obrocie kamery gdy jeden billboard zachodzi na drugi wtedy to drzewko co jest bliżej kamery znajduje sie jakby dalej... bo Z test stwierdza że jest dalej od kamery więc to co na początku było dalej teraz jest blizej i najpierw jest rysowane wlaśnie to drzewko, a później to drugie(które na początku było bliżej). Ale namieszałem :P, myślę że rysunek najlepiej pokaże o co dokładnie chodzi :D

Jak sprawdzać odległość drzewka uwzględniając obroty kamery? jak Wy to robicie??

dla ścisłości: czerwone jest bliżej, niebieskie dalej od środka kamery :P
orzech
May 3, 2008

Odp: Drzewka i billboardy

Witam!

Podejrzewam, że problem tkwi w tym, że tak naprawdę w ogóle nie transformujesz swoich billboard'ów (a raczej punktów wyznaczających środki billboardów) do układu współrzędnych kamery. Musisz znać transformację, która przenosi punkt z układu modelowania do układu kamery - czyli potrzebna jest macierz. Dla przykładu w OpenGL'u będzie to macierz GL_MODELVIEW.

Mając macierz transformacji mnożysz przez nią każdy punkt środkowy billboarda. Następnie wynikowe 'billboard'y' sortujesz według z-ów (malejąco bądź rosnąco, zależy od skrętności Twojego układu współrzędnych) i rysujesz.

Generalnie nie musisz używać tutaj wcale macierzy. Wystarczy, że znasz pozycję kamery oraz płaszczyzny, na których znajdują się billboard'y. Możesz skorzystać ze wzoru na odległość punktu od płaszczyzny i ustalić, co jest bliżej a co dalej.

Pozdrawiam ;)
kdteam
May 3, 2008

Odp: Drzewka i billboardy

Billboardy rysują się dobrze, wszystkie punkty są odpowiednio modyflikowane, a odległość liczona jest od pozycji kamery do pozycji billboarda, tylko przy obracaniu kamery billboardy zachodzą jeden na drugi tak jak jest to w animacji. Do pewnego obrotu (gdy czerwona linia znajduje się pomiędzy niebieską linią a kamerą) wszystko jest OK, ale przy większym obrocie czerwona linia jest już za niebieską (czyli jest na końcu (najdalej od kamery (według ZBuffera))), a względem odległości (od środka lini do pozycji kamery) jest bliżej niż linia niebieska, a billboardy należy rysować od najdlaszego, czyli tak jak na początku animacji najpierw niebieski potem czerowny. Na końcu animacji nadal są rysowane w takiej kolejności (wyznaczonej z odglełości) najpierw niebieski później czerwony, a że niebieski jest dla direct'a przed czerwonym to czerwony nie spełania Z-testu i nie jest rysowany w całości...... strasznie namieszałem, ale mam wielką nadzieję że mnie choć trochę rozumiecie ;)

Naprawde nikt nie wie ??
kdteam
May 11, 2008

Odp: Drzewka i billboardy

Dobra poradziłem sobie jakoś. Wielkie dzięki orzech. Ja sprawdzałem odległość pozycji kamery od pozycji billboarda dlatego była niezależna od obrotu, a jak sprawdzam odległość pozycji kamery od płaszczyzny billboarda to jest wszystko OK :) :)
Strony:
1