小编use*_*566的帖子

三个JS从matrixWorld获得(世界)轮换

如何在three.js中获取Object3D的世界轮换?我知道如何从中获取Object3D的世界位置object.matrixWorld,但是如何获得对象的世界旋转?

我需要这个以解决以下问题:我有一个像这样的分层对象结构:

var obj1 = new THREE.Object3D();
obj1.x = 200;
obj1.rotation.x = 0.1;
scene.add(obj1);

var obj2 = new THREE.Object3D();
obj2.y = -400;
obj2.rotation.y = 0.21;
obj1.add(obj2);

var obj3 = new THREE.Object3D();
obj3.z = -200;
obj3.rotation.x = 0.1;
obj3.rotation.y = -0.1;
obj2.add(obj3);
Run Code Online (Sandbox Code Playgroud)

现在我想让我的相机在一定距离内正确地观察obj3.当我的对象不旋转时,其工作方式如下:

var relativeCameraOffset = new THREE.Vector3(0, 0, 500); // 500 is z-distance from my object
var cameraOffset = relativeCameraOffset.applyMatrix4(obj3.matrixWorld);
camera.position = cameraOffset;
Run Code Online (Sandbox Code Playgroud)

当我的最后一个孩子被旋转时,我得到了我想要的东西,当我添加这一行

camera.rotation = obj3.rotation;
Run Code Online (Sandbox Code Playgroud)

但是当旋转所有父元素时,这不起作用.所以我正在寻找一种方法让我的3D对象的世界"方向".谢谢.

javascript position rotation three.js

3
推荐指数
1
解决办法
8222
查看次数

标签 统计

javascript ×1

position ×1

rotation ×1

three.js ×1