czwartek, 30 września 2010

[WPF 3D] Transformacje i przekształcenia 3D [PL]

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

1 komentarz:

Posty powiązane / Related posts