gpt4 book ai didi

javascript - 三.JS,改变子3D对象的世界位置

转载 作者:数据小太阳 更新时间:2023-10-29 06:07:36 26 4
gpt4 key购买 nike

所以基本上我有一个 Object3D 组的子 object3D,而子对象的 [x,y,z] 坐标是相对于父对象的对象空间显示的,我想在其中更改子对象的位置3D空间。所以首先我得到子对象相对于世界空间的位置。

var wrld_pos = childobject.matrixWorld.multiplyVector3(new THREE.Vector3);

这将返回 child 在世界空间中的位置的三元素向量。现在我想设置我自己的位置。所以我创建了一个三元素向量。

var new_pos = THREE.Vector3();
new_pos.x = 1;
new_pos.y = 2;
new_pos.z = 3;

childobject.matrixWorld.setPosition(new_pos);

提供了 setPosition 的函数定义,它本质上是将对象的世界矩阵的最后三个元素设置为作为参数传递的向量的值,从而改变对象在世界空间中的位置。为了确保矩阵在这些更改后更新,我调用了以下函数。

childobject.matrixWorldNeedsUpdate = true;
childobject.updateMatrixWorld();

现在,在检查对象的新世界矩阵时,我注意到 setPosition 函数什么也没做,什么也没做。

为什么?如果需要真实的代码示例,我会提供它们。但是上面应该非常准确地代表了我使用的应用领域和语法。

最佳答案

编辑:答案已更新。


您想更改子对象的世界位置。

假设场景没有应用变换,一种方法是使用以下模式:

scene.attach( child ); // detach from parent and add to scene

child.position.set( x, y, z );

parent.attach( child ); // reattach to original parent

Object3D.attach( child ) 方法添加子对象,同时保持子对象的世界变换。

three.js r.132

关于javascript - 三.JS,改变子3D对象的世界位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com