WPF 3D положение камеры - PullRequest
       1

WPF 3D положение камеры

0 голосов
/ 17 февраля 2012

Мне нужно сбросить положение 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;

В окне просмотра имеется декоратор трекбола, который позволяет пользователю вращать камеру вокруг сцены. Однако я хочу, чтобы функция вернула камеру в исходное положение, но я не могу найти способ напрямую установить ее положение после создания.

1 Ответ

0 голосов
/ 22 февраля 2012

Сначала вы должны удалить анимацию, используемую на камере, вы можете сделать это с помощью метода camera.ApplyAnimationClock (ProjectCamera.PositionProperty, null), затем присвоить исходное значение камере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...