2013-06-18 3 views
0

Я добавляю новую сцену THREE.PlaneGeometry() в свою сцену и появляется в [0,0,0] вертикально в плоскости XY с нормальной ориентацией вдоль оси + Z. Затем я выдаю plane.rotation.x = -Math.PI/2, чтобы уложить плоскость вниз, чтобы ее нормаль теперь была направлена ​​вверх.Можно ли изменить систему координат наклонной плоскости?

Проблема, с которой я столкнулась, заключается в том, что теперь ось плоскости + Y направлена ​​вдоль глобальной оси Z.

Поскольку самолет представляет собой ландшафт, я хочу иметь возможность регулировать высоту вершин, чтобы имитировать высоту над уровнем моря (высота). Так что я хочу , чтобы иметь возможность писать в коде что-то вроде этого:

plane.geometry.vertices[i].y = 3; 

... но что это делает просто перемещать вершины -3 единицы вдоль оси Z, покидающих самолет плоская, как клейкость.

I может написать функцию абстракции для отображения координат для меня, но я бы предпочел не делать этого, поскольку это добавляет код и препятствует прямой доступ к структуре данных (что приятно во время экспериментирования).

Есть ли способ постоянно изменить систему координат плоскости так, чтобы она соответствовала глобальной системе координат? Такие, что plane.geometry.vertices [i] .y ++ на самом деле приведут к появлению рельефа местности?

Cheers.

ответ

1

Вместо поворота сетки перед созданием сетки примените поворот к самой геометрии.

geometry.applyMatrix(new THREE.Matrix4().makeRotationX(- Math.PI/2)); 

Three.js R.58

+0

Спасибо! Это работает отлично. – Tim

Смежные вопросы