Мне нужно сбросить положение 3D-камеры в окне просмотра WPF 3D. Я использую трекбол декоратор от 3Dtools. Взломав, я обнаружил, что могу очистить преобразования камеры, используя:
Transform3DGroup group = camera.Transform as Transform3DGroup;
group.Children.Clear();
Однако это ломает трекбол, так как я предполагаю, что у камеры больше нет матрицы преобразования. Есть ли способ вернуть камеру туда, где я ее создал, то есть: можно ли вручную переместить камеру, чтобы трекбол все еще работал?
Редактировать:
Я создаю перспективную камеру и добавляю ее в 3D Viewport, используя следующий код:
perspectiveCamera.Position = new Point3D(sceneSize.X * 4 ,
sceneSize.Y ,
sceneSize.Z * (-4));
CameraLookAt = new Point3D(0, (sceneSize.Y / 2), 0);
perspectiveCamera.LookDirection = new Vector3D (
CameraLookAt.X - perspectiveCamera.Position.X,
CameraLookAt.Y - perspectiveCamera.Position.Y,
CameraLookAt.Z - perspectiveCamera.Position.Z);
perspectiveCamera.FieldOfView = 24;
Viewport_3D.Camera = perspectiveCamera;
В окне просмотра имеется декоратор трекбола, который позволяет пользователю вращать камеру вокруг сцены. Однако я хочу, чтобы функция вернула камеру в исходное положение, но я не могу найти способ напрямую установить ее положение после создания.