poniedziałek, 8 listopada 2010

[WPF 3D][3DTools] Wirtualny Trackball 3D [PL]

O tym jak obracać obiekty (lub kamerę) w scenie 3D pisałem już jakiś czas temu w artykułach: „Transformacje i przekształcenia 3D” „Obracamy, przesuwamy, skalujemy? Kamerę (i nie tylko)”. W oparciu o opisane tam rozwiązania i przy pomocy kontrolek typu Slider, tworzona przeze mnie aplikacja (MeshDiagram3D), transformuje kamerę w scenie, przez co sprawia wrażenie transformacji sceny. Nie każdemu jednak spodoba się przesuwanie suwaków (Slider), niektórzy chcieliby pewnie obracać scenę, „łapiąc” za obiekty w niej umieszczone. Jak to zrobić? Okazuje się, że to nic trudnego. Wystarczy wykorzystać element Trackball z biblioteki 3DTools.
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.

Ja wykorzystać Trackball?

Aby wykorzystać element Trackball z biblioteki 3DTools, należy:
  1. Wykreować jego obiekt (instancję).
  2. Przekazać do niej nasz Viewport3D jako EventSource.
  3. Ustawić transformację dla kamery w scenie jako tą pochodzącą z wytworzonego Trackball'a.
Czyli ostateczny kod będzie wyglądał następująco:
      Trackball Trackball_3DTools = new Trackball();
      Trackball_3DTools.EventSource = mainViewport;
      this.mainViewport.Camera.Transform = Trackball_3DTools.Transform;
Taki kod dodajemy np. do konstruktora naszej kontrolki zawierającej Viewport3D i już możemy obracać sceną łapiąc myszką za jej elementy.

Jak to działa?

Zainteresowanych sposobem działania Trackball'a polecam przeczytanie artykułu: „Rotating the Camera with the Mouse. Implementing a Virtual Trackball with the Windows Presentation Foundation (formerly codenamed Avalon)” autorstwa Daniel Lehenbauer, dostępnego pod adresem: http://viewport3d.com/trackball.htm.
Promuj

Brak komentarzy:

Prześlij komentarz

Posty powiązane / Related posts