【问题标题】:Threejs How to Transform a Vector3?Threejs如何转换Vector3?
【发布时间】:2018-08-03 10:17:41
【问题描述】:

我正在尝试制作骨骼,然后转换每个骨骼的顶点,但我无法弄清楚我需要使用什么语法。例如我试过:

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)。我有什么遗漏吗?

【问题讨论】:

    标签: javascript matrix three.js


    【解决方案1】:

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

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

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

    或者你必须updateMatrixWorld():

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

    【讨论】:

    • 谢谢!这终于给了我想要的输出。它还帮助我解决了另一个我想知道如何与父母一起做骨头的问题。 ``` var v = new THREE.Vector3(0,0,0); var p = new THREE.Bone(); p.position.x = 5; p.position.y = 5; p.position.z = 5; p.updateMatrix(); p.updateMatrixWorld(); var b = new THREE.Bone(); b.位置.x = 5; b.位置.y = 5; b.位置.z = 5; p.add(b); b.updateMatrix(); b.updateMatrixWorld(); v.applyMatrix4(b.matrixWorld);控制台.log(v); ```做的工作
    猜你喜欢
    • 2016-12-16
    • 2017-09-07
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多