javascript - Threejs如何转换一个Vector3?

标签 javascript matrix three.js

我正在尝试制作骨骼,然后变换每个骨骼的顶点,但我不知道我需要使用什么语法。例如我试过:

var v = new THREE.Vector3(0,0,0);
var b = new THREE.Bone();
b.position.x = 5;
b.position.y = 5;
b.position.z = 5;
b.updateMatrix();
v.applyMatrix4(b.matrixWorld);
console.log(v);

期望向量 v 的新坐标为 (5,5,5),但 console.log 输出为 (0,0,0)。有什么我想念的吗?

最佳答案

参见 THREE.Object3D :
updateMatrix() 更新局部变换 (Object3D.matrix),但是 updateMatrixWorld() 更新对象及其子对象的全局变换 (Object3D.matrixObject3D.matrixWorld).

这意味着,您要么必须使用 Object3D.matrix 属性:

b.updateMatrix();
v.applyMatrix4(b.matrix);

或者您必须updateMatrixWorld():

b.updateMatrixWorld();
v.applyMatrix4(b.matrixWorld);

关于javascript - Threejs如何转换一个Vector3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48946481/

相关文章:

javascript - 如何在 JQuery 中使用动态值填充 <select> 元素?

javascript - 在每次页面加载时自动将本地存储数据从 chrome 扩展传递到内容脚本

javascript - 泛化 jQuery 动态添加/删除多个表单的表单输入

R - 返回矩阵中元素的位置?

javascript - 使用 GLTF 的一部分作为 InstancedMesh

javascript - 如何从 href 调用 javascript 函数以获取表中的多个链接

python - 非常基本的 Numpy 数组维度可视化

python - numpy 矩阵乘法

javascript - 在 Three.js 中拉伸(stretch)几何图形

javascript - 如何在三个js中为子网格添加轮廓