2013-06-06 8 views
3

У меня есть объект геометрии, и я пытаюсь добавить сетку Torus, которая обходит эту геометрию. То, что я пытаюсь сделать, это иметь исходную геометрию, а затем, когда щелкнула геометрия, она добавляет форму Тора на линии вокруг места, которое было нажато. Однако у меня возникают проблемы с правильной настройкой.Вращающийся объект вокруг оси

Я получаю, что тор появляется в правильном месте, но я не могу ориентировать его вокруг линии. Я использую raycaster, чтобы получить щелчок по точке, поэтому у меня есть лицо и faceindex точки щелкнули. В каждой реализации я пытаюсь использовать поворот (используя setEulerFromRotationMatrix), он просто перемещает местоположение сетки тора, а не поворачивает его, чтобы линия проходила через тор.

Кажется, что это было бы тривиально, но это дает мне массу проблем. Что я делаю не так? Два метода, которые я пробовал, как безуспешным и проявляющие поведение выше:

var rotationMatrix = new THREE.Matrix4(); 
    rotationMatrix.makeRotationAxis(geometry.faces[fIndex].centroid.normalize(), Math.PI/2); 
    torusLoop.matrix.multiply(rotationMatrix); 
    torusLoop.rotation.setEulerFromRotationMatrix(torusLoop.matrix); 

//attempt two, similar results to above attempt 
tangent = geometry.tangents[segments/radiusSegments].normalize(); 
    axis.crossVectors(up, tangent).normalize(); 
    var radians = Math.acos(up.dot(tangent)); 
    matrix.makeRotationAxis(axis, radians); 
    torusLoop.rotation.setEulerFromRotationMatrix(matrix); 

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

ответ

2

Ничего, я понял. Для тех, кто задавался вопросом, я переводил перед поворотом, что заставляло мою фигуру вращаться вокруг другой оси. Мое решение состояло в том, чтобы сначала свернуть, а затем перевести, а затем после создания сетки, переместив ее в нужное положение.

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