2016-09-08 2 views
0

Я смотрю пример на сайте http://threejs.org (http://threejs.org/examples/webgl_interactive_draggablecubes.html), и я вижу, что они перемещают выбранный куб по плоскости относительно камеры. Я получаю, как непрозрачность работает с raycaster. То, что я не получаю, - это установить, чтобы всегда перемещать объект по земле (плоскости), даже если камера находится под углом. Идея состоит в том, чтобы заставить пользователя использовать мышь для перемещения объекта по земле, даже если камера находится под углом и НЕ отлично смотрит на нее. Я новичок в использовании Three.js, поэтому вам может потребоваться подробное объяснение того, что мне не хватает. Или, может быть, задайте вопросы, если я не объясню сам.Использование Three.js, как я могу перемещать объект по заданной плоскости?

Мой проект выглядит так, и я ищу, чтобы переместить ящики с помощью мыши.

enter image description here

+0

Насколько я вижу, единственное, что вам нужно изменить, это присвоение «плоскости»; в примере используется 'plane.setFromNormalAndCoplanarPoint (camera.getWorldDirection (plane.normal), INTERSECTED.position);' в то время как вам нужна плоскость 'Y = 0'. Что-то вроде 'plane = new THREE.Plane (новый THREE.Vector3 (0, 1, 0), 0);' –

+0

Можете ли вы объяснить, что делает новый THREE.Vector3 (0,1,0) вместе с 0 после него ? Я немного не уверен в объекте Vector3 и параметрах, которые вы помещаете в Vector3 вместе с параметрами THREE.Plane. Спасибо за вашу помощь – Dale

+0

Я создаю новый самолет. Конструктор требует нормали и расстояния. Вектор (0, 1, 0) - тот, который направлен прямо вверх; вместе с расстоянием 0 от начала координат я получаю плоскость XZ. –

ответ

2

Пример кода создает плоскость и обновления его в случае MouseMove, когда угол обзора камеры изменения:

plane.setFromNormalAndCoplanarPoint(camera.getWorldDirection(plane.normal), INTERSECTED.position); 

Вместо того, чтобы сделать это, создайте плоскость как

var plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); 

, который является плоскостью XZ в начале координат.