2017-02-20 99 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

尼斯和感謝快速回復:)有什麼區別與由prisoner849分組提供的解決方案?這兩種方法都與我相似。對於我來說,改變場景的結構似乎是矯枉過正,只是爲了實現圍繞原點的旋轉。所以我正在尋找一個更簡單的解決方案。僅僅從關注點分離的角度來看,我覺得在場景中重新組合對象是實現圍繞原點旋轉的必要條件。但不管怎麼說,這兩個解決方案似乎做工精細,十分感謝:) –

+1

@deusexmachina這裏沒有THREE.Group之間'如此大的差別()'和'THREE.Object3D()')[文件](https://threejs.org /docs/index.html#Reference/Objects/Group)說:_這與Object3D幾乎相同。它的目的是使與對象組工作語法clearer._ – prisoner849

+1

@deusexmachina有這兩者之間沒有什麼區別,只是名字。我一般喜歡使用'Object3D',因爲我對這個名字感到滿意(只是個人選擇)。如果你想看到兩者之間的差異,你可以前往:[Group.js code](https://github.com/mrdoob/three.js/blob/master/src/objects/Group.js)。它導入'Object3D'並將其類型更改爲'Group'。 –