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:
- Wykreować jego obiekt (instancję).
- Przekazać do niej nasz Viewport3D jako EventSource.
- 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.
Trackball to fantastyczna sprawa. Po roku używania mojego trackballa firmy Logitech nie wyobrażam sobie powrotu do zwykłej myszki.
OdpowiedzUsuńDziękuje za informację, sprzydadzą się w czasie projektowania w oprogramowaniu 3D. Chcialbym również zauważyć że trackball to jest świetny jeżeli chodzi o programy graficzne oraz pracę na programach typu CAD.
OdpowiedzUsuń