如何获得子对象的全局/世界位置?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得子对象的全局/世界位置?相关的知识,希望对你有一定的参考价值。
如何在另一个Object3D中获取Object3D的全局位置?
建立:
var parent = new THREE.Object3D();
parent.position.set(100, 100, 100);
var child = new THREE.Object3D();
child.position.set(100, 100, 100);
parent.add(child);
scene.add(parent);
笔记:
我认为这将是这样做的方式:
console.log(child.localToWorld(parent.position));
...但它给了我(100,100,100),而不是(200,200,200)。
答案
第一次打电话
scene.updateMatrixWorld();
或者在你的例子中,打电话就足够了
parent.updateMatrixWorld();
然后提取世界位置
var vector = new THREE.Vector3();
vector.setFromMatrixPosition( child.matrixWorld );
但实际上,渲染器会在每个渲染循环中为您调用updateMatrixWorld()
,因此您不必这样做。
编辑:更新为three.js r.65
另一答案
在threejs r89中,你可以通过Object3D.getWorldPosition
获得世界排名。我不知道它何时被添加。
以上是关于如何获得子对象的全局/世界位置?的主要内容,如果未能解决你的问题,请参考以下文章
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段
VSCode自定义代码片段12——JavaScript的Promise对象