如何在Three.js中编写getworldposition函数?

时间:2015-01-24 02:53:34

标签: javascript three.js

如何在返回向量的Three.js中编写getworldposition函数?

我的代码是将 obj 的世界位置存储在vector vec 中。

obj.updateMatrixWorld();
var vec= new THREE.Vector3();
vec.setFromMatrixPosition(obj.matrixWorld);

现在我想使用这三行作为函数来使用它:

var vector = getWorldPosition(obj);

这是正确的方法吗?

function getWorldPosition(obj)
{
    obj.updateMatrixWorld();
    var vec= new THREE.Vector3();
    vec.setFromMatrixPosition(obj.matrixWorld);
    return {vec.x, vec.y, vec.z}; // Like this?
}

2 个答案:

答案 0 :(得分:0)

试试看看Jerome Etienne如何做他的ObjCoord图书馆以获得一个想法:

https://github.com/jeromeetienne/threex.objcoord

但是有点过时了:

/**
 * get the world position
 * @return {THREE.Vector3}  the world position
 */
THREEx.ObjCoord.worldPosition = function(object3d){
  object3d.updateMatrixWorld();
  var worldMatrix = object3d.matrixWorld;
  var worldPos  = new THREE.Vector3().getPositionFromMatrix(worldMatrix);
  return worldPos;
}

直接使用矢量的方法是最新的THREE版本的正确方法。

答案 1 :(得分:0)

现在您可以使用Object3D()。getWorldPosition(target)获取世界位置

target —结果将被复制到此Vector3中。 返回表示对象在世界空间中位置的向量。

示例:

const anyMesh = new THREE.Mesh(g,m) let handVec = new THREE.Vector3() anyMesh.getWorldPosition(handVec)

所以handVec是anyMesh的世界地位

您可以查看文档的更多详细信息:https://threejs.org/docs/#api/core/Object3D