czwartek, 4 listopada 2010

[WPF 3D] Interakcja z myszą [PL]

Pisałem wcześniej, że WPF 3D może być wykorzystane przy budowie interfejsów użytkownika, zastanówmy się więc jak można zapewnić interakcję sceny 3D z użytkownikiem. W tym artykule pokazane będzie jak można wyznaczyć wskazany myszą obiekt w scenie 3D.
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.
Aby zapewnić użytkownikowi możliwość wskazywania myszą elementów sceny 3D, należy:
  1. Wykonać projekcję sprawdzanego elementu sceny na płaszczyznę widoku.
  2. Przechwycić zdarzenie naciśnięcia myszy lewego przycisku myszy na płaszczyźnie widoku (Viewport3D) i odczytanie współrzędnych punktu kliknięcia na płaszczyźnie.
  3. Wyznaczyć dwu wymiarową figurę na płaszczyźnie, w której zawarta jest projekcja sprawdzanego elementu sceny.
  4. Sprawdzić, czy punkt kliknięcia myszą znajduje się wewnątrz wyznaczonej w poprzednim kroku figurze.
W pierwszym kroku można wykorzystać macierz transformacji wyznaczoną przez funkcję MathUtils.TryWorldToViewportTransform z pakietu 3DTools.
W drugim kroku obsługujemy zdarzenie MouseLeftButtonDown, którym wykorzystujemy przekazany argument (MouseButtonEventArgs) i wykorzystując funkcję GetPosition, otrzymujemy punkt kliknięcia.
W trzecim kroku najłatwiej będzie nam dokonać transformacji wszystkich wierzchołków (wchodzących w skład sprawdzanego elementów) na płaszczyznę widoku. Następnie można wyznaczyć prostokąt, który będzie te wszystkie punkty zawierał.
Tak przygotowany (w poprzednim kroku) prostokąt testujemy na zawartość punktu kliknięcia myszą.
W następnym wpisie pokazany zostanie gotowy kod, wspierający opisany powyżej algorytm.
Promuj

Brak komentarzy:

Prześlij komentarz

Posty powiązane / Related posts