Przezroczystość w DirectX

Odpowiedz Nowy wątek
rookie
2006-10-16 18:31
rookie
0

Witam!
Mam pewnien problem z ustawieniem przezroczystości w dX.
Problem polega na braku wzajemnej przezroczystości dwóch figur, tzn jedna z figur jest przezroczysta względem drugiej ale nie odwrotnie.
Oba mesh'y mają ustawiony kanał alpha. Dokładnie widać to na obrazku:
user image

Pytanie brzmi: Co zrobić żeby mesh'y były wzajemnie przezroczyste.

Pozostało 580 znaków

Bluebat
2006-10-16 21:42
Bluebat
0

Problem jest związany z tym, jak fizycznie są przetwarzane trójkąty(z których składają się meshe). Przynajmniej w OpenGLu rozwiązywało się część problemu tak, że trójkąty obsługujące przezroczystość przekazuje się do rysowania na końcu, poczynając od najdaszego. Jeżeli bardzo ci zależy, żeby się poprawnie wyświetlało, wyodrębnij pojedyńcze trójkąty i ręcznie posortuj.

Masz dwuwymiarową tablicę kolorów (dwordów) i taką samą tablicę wartości głębokości (depth buffer). Przed wyświetleniem ramki, obie tablice są czyszczone. Teraz załóżmy, że przekazujesz trójkąt do narysowania. Jego wierzchołki ją projektowane (obliczenia perspektywy, zeby przedstawić w 2D), a następnie dwuwymiarowy trójkąt jest rysowany. Wszystkie wartości z wierzchołków są interpolowane na piksele na powierzchni trójkąta. Głębokość, gdy zostanie obliczona dla danego piksela, jest porównywana z wartością głębokości z depth buffera. Jeżeli dany piksel jest bliżej, to jest rysowany, a bufor głębokości zmienia wartość na ten punkt.
Wszystko działa ładnie dla nieprzezroczystych trójkątów. Gdy jednak najpierw narysujesz trójkąt przezroczysty, a następnie za nim jakiś inny, to ten drugi nie będzie widoczny, bo nie przejdzie testu na głębokość. W odwrotnej kolejności jakoś by przeszło, gorzej, jakby się przecinały.</url>

Pozostało 580 znaków

Rookie
2006-10-16 23:18
Rookie
0

Bluebat: Szczerze mówiąc znam tylko podstawy rysowania w DirectX, więc obawiam się mogę sobie nie poradzić z "wyodrębnianiem trójkątów".
Może opisze całe zagadnienie, wtedy łatwiej bedzie znaleźć jakieś rozwiązanie.

Cześć rysunkowa w DirectX jest wynikiem pewnych obliczeń programu z których uzyskujemy prostopadłościan i kilka sfer (do 5). Środki sfer znajdują sie na albo wewnątrz Box'a.
Promienie mogą być różne ale nigdy nie będą wieksze niż odległość środka do najdalszego wierzchołka Box'a. Ale do rzeczy - program ma pokazywać wzajemne relacje sfer, kamera jest sterowana myszką.
Właściwie to wystarczyłoby zamiast sfer narysować same ich "obwody" - coś na kształt okręgów w 2D (wtedy odpada problem z przezroczystością) ale to chyba będzie jeszcze trudniejsze.

Będe wdzieczny za każde pomysły

Pozostało 580 znaków

Ble
2006-10-18 10:57
Ble

Rejestracja: 14 lat temu

Ostatnio: 13 lat temu

0

Poczytaj troche o alpha blendingu, temat jest co prawda dość obszerny, ale do twoich zastosowań nie powinien ci sprawiać większych problemów

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0