2015-01-24 3 views
0

У меня есть плоскость, которая расположена в определенном положении x, y, z и вращается в трехмерном пространстве. Я знаю, как позиционировать камеру в ее положении, просто устанавливая одинаковые координаты и вращение, но я хотел бы поставить камеру на определенное расстояние. Может ли кто-нибудь сказать мне формулу для этого или если существует метод three.js для достижения результата в изображении?Положение камеры относительно плоскости

look at the image of the camera positioned in front of a rotated plane at a certain distance

Спасибо!

ответ

0

можно вычислить положение камеры с помощью вектора нормали к плоскости:

camera_position = plane_position + distance_to_the_plane * plane_normal 

или

camera_position = plane_position - distance_to_the_plane * plane_normal 

поместить камеру на другой стороне самолета.

После этого вы можете вращать камеру, чтобы указывать вдоль вектора:

-plane_normal 

с использованием LookAt элемента объекта камеры

Это процедура, как вы просили в своем комментарии:

var distance = 100; // for example 

camera.position.copy(plane.normal).multiplyScalar(distance).add(plane.position); 
var direction = new THREE.Vector3(); 
direction.copy(plane.normal).negate(); 
camera.lookAt(direction); 
+0

Большое спасибо за ваш ответ. Я не настолько продвинутый в three.js, поэтому, если вы можете дать практический пример, было бы здорово. Если, например, у меня есть такой самолет: plane.x = 100; plane.y = 400; plane.z = 500; plane.rotation.x = 0.4; plane.rotation.y = 0,1; plane.rotation.z = 0.4; camera.position.set (0,0,0); camera.rotation.set (0,0,0); практически, что я должен записывать, чтобы нормализовать и преобразовать в код то, что вы мне объяснили? Извините, если я не понял, спасибо – fiorisubacquei

+0

Я только что отредактировал свой ответ. Пожалуйста, проверьте это –

+0

Большое спасибо за ваше объяснение, оно работает! :) Как вы думаете, можно ли применить его к css3d rendered div тоже? – fiorisubacquei

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