W niniejszym post'cie chciałbym wspomnieć o ważnej rzeczy, jeżeli chodzi o WPF i grafikę 3D. O mały włos o niej bym zapomniał, w poprzednich wpisach (1, 2) nic na ten temat nie wspominałem, a mianowicie chodzi mi o „Regułę prawej dłoni”!
Niniejszy wpis poza prezentacją różnych i niezależnych od konkretnego wykorzystania treści stanowi również opis pewnych zagadnień związanych z projektem Mesh Diagram 3D.Informacje dotyczące projektu oznaczone są etykietą MeshDiagram3D.
„Zaraz, zaraz!” - pewnie ktoś krzyknie - „Coś takiego to na fizyce było!”
„Racja!” - odpowiem - „Zobaczmy jednak co ona znaczy w WPF'ie 3D”
A cóż tu więc chodzi? Mianowicie chodzi tutaj o to, że trójkąty należące do sceny „mają stronę widoczną i niewidoczną”. Podając kolejne punkty trójkąta, który chcemy wyświetlić, musimy podać je w takiej kolejności, by normalna dla płaszczyzny, którą te punkty wyznaczają była skierowana, tak by kąt tworzony z wektorem o kierunku i zwrocie spoglądania kamery (punktu, z którego oglądamy scenę) był kątem ostrym. Lub prościej: jeżeli ułożymy prawą dłoń, by pokazywała „OK”:
Jeżeli kciuk będzie wskazywał kierunek spoglądania kamery w
naszej scenie 3D, to punkty należy podawać w kolejności wskazywane
przez pozostałe palce tej dłoni.
Czasami reguła przedstawiana jest również w postaci: „punkty
powinny być podawane zgodnie z kierunkiem ruchu wskazówek zegara”.
Schematycznie zostało to pokazane na poniższym rysunku:
Zobaczmy (lub nie ;) ) przykład!
Zakładam, że korzystamy z funkcji omówionych w poprzednim wpisie.
Wtedy:
- zobaczymy trójkąt, gdy napiszemy: CreateTriangleModel( new Point3D( 2, 0, 0 ), new Point3D( 0, 2, 0 ), new Point3D( 0, 0, 2 ) );
- nic nie zobaczymy (lub może inaczej zobaczymy pustkę), gdy napiszemy: CreateTriangleModel( new Point3D( 0, 2, 0 ), new Point3D( 2, 0, 0 ), new Point3D( 0, 0, 2 ) );
Bardzo ciekawe opisanie backface cullingu, nigdy bym nie wpadł by tak to wyjaśnić :)
OdpowiedzUsuńDzięki za komentarz!
OdpowiedzUsuń@Fiołek: Rozwinąłem trochę tę tematykę w następnym wpisie: http://maciej-progtech.blogspot.com/2010/08/wpf-3d-backface-culling-do-usuwania.html.
Wspominałem, a nie "wspominałam" :)
OdpowiedzUsuńNie mniej jednak - świetny cykl.
Pozdrawiam!
cześć,
OdpowiedzUsuńLiterówkę poprawiłem, dzieki za zwrócenie uwagi.
Cieszę się żę cykl się podoba.
pzdr.!
Wartościowy wpis
OdpowiedzUsuń