poniedziałek, 16 sierpnia 2010

[WPF 3D] Reguła prawej dłoni lub reguła zegara [PL]

Promuj
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 ) );
Promuj

5 komentarzy:

  1. Bardzo ciekawe opisanie backface cullingu, nigdy bym nie wpadł by tak to wyjaśnić :)

    OdpowiedzUsuń
  2. Dzięki za komentarz!

    @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.

    OdpowiedzUsuń
  3. Wspominałem, a nie "wspominałam" :)
    Nie mniej jednak - świetny cykl.
    Pozdrawiam!

    OdpowiedzUsuń
  4. cześć,
    Literówkę poprawiłem, dzieki za zwrócenie uwagi.

    Cieszę się żę cykl się podoba.

    pzdr.!

    OdpowiedzUsuń

Posty powiązane / Related posts