2015-02-18 4 views
1

Я пытаюсь повернуть объект (зеленый) Arround точку (синий) в three.jsТри Js, точка поворота изменения

enter image description here

Как вы можете видеть на изображении, зеленый объект вращается вокруг красной точки (0, 0, 0)

Первый вопрос: как я могу найти координаты синей точки? Во-вторых: Как я могу вращать зеленый объект вокруг синей точки?

(В сцене, есть 3 различных Objets, первый один указал на красную точку, второй один указал на синий, а третий в окружении зеленого

loader.load("models/socle.obj", "models/socle.mtl", function(geometry) { 
scene.add(geometry); 
}, onProgress, onError); // Red OBJ 

loader.load("models/motor1.obj", "models/motor1.mtl", function(geometry) { 
scene.add(geometry); 
}, onProgress, onError); 

loader.load("models/motor12.obj", "models/motor12.mtl", function(geometry) { 
scene.add(geometry); 
}, onProgress, onError); // BLUE 


loader.load("models/motor13.obj", "models/motor13.mtl", function(geometry) { 
//geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, 0, 0)); 

geometry.rotation.z = 0.17; // ~10 degrees 
scene.add(geometry); 
}, onProgress, onError); // RED 

EDIT:. я нашел координате синей точки прямо из блендера: 16, 0, 0 Я пробовал:

loader.load("models/motor12.obj", "models/motor12.mtl", function(mesh) { 
mesh.applyMatrix(new THREE.Matrix4().makeTranslation(16, 0, 0)); 


mesh.rotation.z = 0.17; 
scene.add(mesh); 
}, onProgress, onError); 

Но результат не так exepted

Заранее спасибо

ответ

0

Сначала придираться: Я хотел бы переписать ваши обратные вызовы, как это:

loader.load("models/motor12.obj", "models/motor12.mtl",  function(mesh) { 
    scene.add(mesh); 
}, onProgress, onError); // BLUE 

Загрузчик не подать в THREE.geometry, он передает в THREE.Object3D, например, сетка. Вы должны четко понимать разницу между ними.

Для вашего первого вопроса вы можете найти положение (координаты) синего, взглянув на его объект позиции. т. е. mesh.position.x mesh.position.y mesh.position.z.

Для вашего второго вопроса есть несколько способов сделать это. Я написал сообщение в блоге некоторое время назад, подробно излагая эти проблемы: различные варианты и проблемы с вращающимися геометриями и сетками в трёх. Js: http://rwoodley.org/?p=1073

Простейший вариант, вероятно, состоит в том, чтобы сделать зеленый объект дочерним элементом синей точки и поверните синюю точку. Если вы не хотите поворачивать синюю точку, просто поместите невидимый объект в положение синей точки, сделайте зеленый объект дочерним элементом невидимого объекта и поверните невидимый объект.

+0

Три модели поставляются из модели блендера, которую я экспортировал каждую часть независимо, так что 3 сетки имеют одинаковое положение (0, 0, 0), спасибо за ответы :) – Epitouille

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