Na temat transformacji w WPF
3D pojawiło się wcześniej już trochę informacji (m.in. „czym są transformacje i do czego je można wykorzystać?”, czy „jak transformacje tworzyć i komponować?”), zabrakło jednak informacji, jak transformacje wykorzystać do obliczeń 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.
Przeanalizujmy prosty przykład: chcemy, by jakiś element sceny 3D
„obracał się przodem” zawsze w kierunku kamery. W tym celu
musimy sprawdzić, jak ustawiona jest kamera w scenie i w jakim
kierunku patrzy. Aby to osiągnąć, musimy najpierw dostać się do
obiektu kamery w scenie. W tym celu możemy
wykorzystać omówione wcześniej drzewo wizualne. Następnie z
obiektu kamery odczytujemy wektor kierunku widzenia oraz ...
transformatę ustawioną dla danej kamery. Dopiero na podstawie tych
dwóch informacji możemy wyliczyć rzeczywisty wektor
kierunku patrzenia kamery. Aby to obliczyć, należy wykorzystać
metodę TryTransform
obiektu transformacji.
Dla przykładu funkcja transformująca wektor 3D może wyglądać
następująco:
public static Vector3D Transform3DVector(Transform3D transform, Vector3D vector) { Point3D input = new Point3D(vector.X, vector.Y, vector.Z); Point3D output; if (transform.TryTransform(input, out output)) { return new Vector3D(output.X, output.Y, output.Z); } return vector; }
Proste prawda?
interesujący wpis!
OdpowiedzUsuńwspaniały wpis
OdpowiedzUsuń