Przy prezentacji grafiki 3D ciekawą funkcjonalnością może być umożliwienie użytkownikowi oglądanie sceny 3D z wielu punktów widzenia, obracania elementów sceny itp... W tym wpisie zaprezentowane zostanie jak można taką funkcjonalność stworzyć w WPF
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.
Efekt oglądania sceny 3D z wielu punktów widzenia można osiągnąć wieloma metodami, najprostszą jest chyba pozwolenie użytkownikowi na ustawianie położenia kamery w scenie. Można to zrobić np. przy pomocy suwaków (Slider).
W najprostszym przypadku pobieramy z naszego Viewport3D kamerę, ustawiamy jej nowe położenie i kierunek patrzenia:
PerspectiveCamera camera = (PerspectiveCamera)mainViewport.Camera; Point3D position = new Point3D( CamLocation_x, CamLocation_y, CamLocation_z ); Vector3D lookDirection = new Vector3D( -CamLocation_x, -CamLocation_y, -CamLocation_z ); camera.Position = position; camera.LookDirection = lookDirection;
Ciekawszy efekt można jednak uzyskać stosując przekształcenia
(lub inaczej transormaty), dzięki którym możemy elementy sceny
przesuwać, obracać, skalować ...
Dostępne są następujące transformacje: TranslateTransform3D,
ScaleTransform3D,
RotateTransform3D,
MatrixTransform3D
oraz Transform3DGroup.
Wszystkie one dziedziczą po bazowej klasie Transform3D.
Transformacje można ze sobą składać dzięki użyciu
Transform3DGroup,
do której kolejne transformacje dodajemy do listy dzieci (Children).
Jak je używać? Jest to bardzo proste, wystarczy skonfigurować
odpowiednią transformatę, a następnie przypisać ją do obiektu
sceny (np. do obiektu typu ModelVisual3D lub kamery), Wykorzystujemy
w tym celu właściwość Transform.
W następnym wpisie pojawi się więcej szczegółów na temat
konfiguracji transformacji.
miło sie czyta takie blogi
OdpowiedzUsuń