У меня есть объект геометрии, и я пытаюсь добавить сетку 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);
мне нужен тор узел, чтобы следовать кривой сплайна, но это останется только квартира, и повороты просто заставить его двигаться, не изменить углы.