2017-12-06 8 views
0

ThreeJS에서 로컬 축 회전이 작동하는 방법을 이해하는 데 어려움을 겪고 있습니다. 이 Rotate around local axis 답변을 보았고 기대했던 방식대로 작동하지 않습니다.THREEJS 개체 로컬 축 주위를 어떻게 회전합니까?

나는이 실린더를 생성하고

const geometry = new THREE.CylinderBufferGeometry(10, 10, 20); 
geometry.rotateX(Math.PI/2) 

가 어떻게 다음 긴 축을 따라 실린더를 회전 할 돌리면?

나는이 일을하기를 기대한다 : geometry.rotateY(Math.PI/5)하지만 세계 축을 중심으로 회전하고있는 것으로 보인다. 난 그냥 누군가가 도움이되는 객체의 내부 축을 중심으로 회전하는 방법을 설명 할 수

geometry.rotateY(Math.PI/5) 
geometry.rotateX(Math.PI/2) 

을했던 것처럼이 동일하게 보이게하기 위해 로컬 축 주위를 회전하려면?

실제로 어떻게됩니까 : https://jsfiddle.net/81j6g2ms/1/

내 사용 사례 먼저 X와 임의의 양을 중심으로 회전 나를 필요로하고 내가 주위를 회전해야합니다 https://jsfiddle.net/h20hnn3n/46/

가 나는 것처럼보고 싶어 무엇 낡은 Y 축이므로이 순서대로 처리하면 좋을 것입니다.

편집 : 지오메트리 대 메시를 회전하는지 여부가 중요합니다. 그것은 어느 쪽이든 그것을하는 것과 동등해야하지 않습니까? https://jsfiddle.net/10L8se71/2/ 다른 사람이로 실행

+0

나는이 여기에 대한 답이 생각 : https://stackoverflow.com/questions/28848863/threejs-how-to-rotate-around-objects-own-center 다음은 올바른 결과로 끝 -in-of-world-center –

+0

나는 이것이 같은지 모르겠습니다. 나는 한 번 회전 한 후에 회전의 축에 대해 혼란스러워합니다. 이것은 회전하는 축을 변경하는 방법을 보여 주는 것입니다. – schlaegerz

+0

내가 당신이 놓친 것을 더 잘 이해한다면, 나는 당신을 도울 것입니다. 나는 몇 가지 사실을 던질 것이다. 원통은 길이가 긴 (20 단위 높이) 수직으로 만들어져 있으며 원점에 정렬되어 있습니다. WebGL 축은 X (오른쪽 - 왼쪽), Y (하향식), Z (앞으로 - 뒤로)입니다. 따라서 장축은 Y 축이고 Y를 중심으로 회전합니다. 회전 순서. X를 중심으로 회전하면 이미 수직 축을 중심으로 회전하여 사용자쪽으로 또는 사용자쪽으로 기울어집니다. 혼란이 어디에서 유래되었는지 확실하지 않습니다. –

답변

0

경우에는 내가 해결책을 게시합니다 :

나는이 같은 방식으로 행동하지 않는 이유를 정말 혼란 스러워요.

지오메트리 회전은 메쉬 회전과 다르게 작동합니다. 먼저 메쉬에 추가해야합니다.

const mesh = new THREE.Mesh(geometry, material) ; 
mesh.rotateX(Math.PI/2) 
mesh.rotateY(Math.PI/5)