如何在返回向量的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?
}
答案 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