2013-11-30 3 views
2

Я пытаюсь реализовать точное масштабирование пинча в 3D-сцене на сенсорном устройстве. 3D-сцена - это просто плоская плоскость, и у меня есть перспективная камера, направленная по диагонали вниз. Как здесь, например:Точный масштабирование зума в 3D

http://imggle.com/wp-content/uploads/2013/07/google-earth-images-64.jpg

Когда пользователь начинает щепоткой жест, я проецировать экран координат под его пальцами в мировой системе координат на плоскости.

Теперь, как я могу решить положение камеры так, чтобы независимо от того, где пользователь перемещает пальцы, одни и те же мировые координаты останутся «в кончиках пальцев» - то есть проецируются в определенные точки на экране?

Любые мысли очень ценятся.

ответ

0

Только что реализовав что-то очень похожее в приложении OpenGL ES, я бы рекомендовал использовать распознаватель жесты панорамы, а затем обновил матрицу просмотра модели на основе количества пикселей в кассете.

Вам необходимо выполнить калибровку панорамирования в точке, где один пиксель на экране примерно такой же, как один пиксель в вашей сцене OpenGL ES (например, вы видите, как для перетаскивания). Это легко сделать, если вы позволяете пользователю в любом случае увеличивать или уменьшать масштаб, но если нет, вам может понадобиться временно реализовать это приложение.

+0

Спасибо, но я знаю, как обнаружить панорамирование и ущипнуть, и как бороться с панорамированием и основным масштабированием. Что я ищу - это масштабирующее решение, которое действительно заставляет чувствовать, что вы манипулируете реальным объектом своими пальцами. Например, жестокий зум-масштаб, выполняемый в отдаленной части сцены, должен приближать больше, чем аналогичный жест, выполняемый ближе к камере. – user3044951

+0

Ну удачи с этим .... – GuybrushThreepwood