2017-02-20 5 views
1

x 축을 따라 0,0,0 원점을 중심으로 한 장면의 모든 객체를 회전하고 싶습니다. 그러나, obj.rotation.x + = 0.1로 설정; 원점을 따라 회전하지 않고 객체 중심을 따라 회전합니다. 원점 주변에서 원하는 회전을 어떻게 얻을 수 있습니까? 쉬운 방법이 있어야한다고 생각하지만 공식 문서 나 온라인에서 찾을 수 없습니다.Three.js : 전역 회전

답변

2

대신 현장에 객체를 추가하는 THREE.Group() 객체에 추가 :

var group = new THREE.Group(); 
scene.add(group); 
... 
var mesh1 = new THREE.Mesh(...); 
group.add(mesh1); 
var mesh2 = new THREE.Mesh(...); 
group.add(mesh2); 
//and so on with meshes 

하고 렌더링 루프 :

group.rotation.x += 0.1; 

Threejs.r84

+0

@ prisonder849 그 작업을 수행했습니다. 빠른 답장을 보내 주셔서 감사합니다.) 답변으로 받아들이 기 전에 잠시 기다려 드리겠습니다. –

+0

@deusexmachina) 환영합니다. – prisoner849

1

당신이 할 수있는 THREE.Object3D()
개체에 모든 메시 추가 myObject.add(myMesh)
myObject.rotateX(angle)
여기서 angle은 라디안이고, myObject은 Object3D 개체이고 myMesh은 추가 할 메시입니다.
이것은 로컬 공간에서 X 축을 중심으로 객체를 회전시킵니다.
자세한 내용은 다음 문서에서 찾을 수 있습니다. https://threejs.org/docs/#Reference/Core/Object3D

+0

빠른 답장을 보내 주셔서 감사합니다. : 죄수가 제공하는 그룹화 솔루션과의 차이점은 무엇입니까? 두 접근법은 모두 저와 비슷합니다. 원점을 중심으로 회전을 달성하기 위해 장면의 구조를 변경해야하는 것은 과도한 것 같습니다. 그래서 나는 더 간단한 해결책을 찾고있었습니다. 염려의 관점을 분리하는 것에서부터 원점을 중심으로 회전을 이루기 위해 장면의 객체를 재 그룹화하는 것이 필요하다는 것이 이상하게 보입니다. 하지만 어쨌든, 두 솔루션 모두 잘 작동하는 것 같습니다. 감사합니다.) –

+1

@deusexmachina 'THREE.Group()'과 'THREE.Object3D()'사이에는 별다른 차이가 없습니다. [Documentation] (https://threejs.org /docs/index.html#Reference/Objects/Group)는 다음과 같이 말합니다 : _ 이것은 Object3D와 거의 동일합니다. 객체 그룹을 구문 적으로 명확하게 만드는 것이 목적입니다. _ – prisoner849

+1

@deusexmachina이 두 가지 사이에는 아무런 차이가 없습니다. 단지 이름 일뿐입니다. 나는 일반적으로'Object3D'를 사용하기를 좋아한다. 왜냐하면 나는이 이름에 편안함을 느낀다. 두 가지의 차이점을보고 싶다면 [Group.js 코드] (https://github.com/mrdoob/three.js/blob/master/src/objects/Group.js)를 방문하십시오. 'Object3D'를 가져오고 그 타입을 'Group'으로 변경합니다. –