2013-06-06 2 views
3

나는 지오메트리 오브젝트를 가지고 있는데, 그 지오메트리를 돌아 다니는 토러스 메쉬를 추가하려고합니다. 제가하려는 것은 원래의 지오메트리를 가졌고 지오메트리를 클릭하면 클릭 한 위치 주변의 선상에 토러스 모양을 추가합니다. 그러나 올바르게 회전시키는 데 문제가 있습니다.축 주위의 회전 오브젝트

정확한 위치에 토러스가 나타나지만 선 주위로 방향을 지정할 수 없습니다. 나는 클릭 한 포인트를 얻기 위해 레이캐스터를 사용하고 있으므로, 클릭 한 포인트의 얼굴과 얼굴 인덱스가 있습니다. 모든 구현에서 (setEulerFromRotationMatrix를 사용하여) 회전을 사용해보십시오. 실제로 토러스 메쉬의 위치를 ​​이동시키고 실제로 회전 시켜서 토러스를 통과하도록 허용하지 않습니다.

이것은 사소한 것처럼 보이지만 내게 많은 어려움을주고 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 두 가지 방법은 내가 unsucessful 위의 행동 전시를 모두 시도 : 나는 스플라인의 곡선을 따라 원환 체 매듭이 필요

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

신경 쓰지 마, 알아 냈어. 이상하게 생각하는 사람들을 위해, 나는 회전하기 전에 번역했는데, 이는 내 그림을 다른 축을 중심으로 회전하게 만들었다. 내 솔루션은 먼저 회전 한 다음 변환 한 다음 메쉬를 만든 후 필요한 위치로 이동했습니다.