设置儿童的世界位置

时间:2016-02-07 12:48:53

标签: three.js

我使用OBJLoader导入obj文件。之后我想从导入的模型中更改孩子的位置。 我尝试使用以下代码获取孩子的位置:

var vector = new THREE.Vector3();
vector.setFromMatrixPosition( child.matrixWorld );
console.log('vector', vector);

但它总是返回

THREE.Vector3 {x: 0, y: 0, z: 0}

我怎样才能获得孩子当前的世界位置然后改变它?

1 个答案:

答案 0 :(得分:1)

您可以在获得位置之前渲染场景一次。

在获得职位之前使用以下代码行:

renderer.render(scene,camera);

(这里我假设您的场景和相机的名称是场景和相机)

以下是加载对象并获取位置的示例:

var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'models/' );
objLoader.load( objFile, function ( child ) {
    child.position.z = 20;
    scene.add( child );
    renderer.render(scene,camera);
    var vector = new THREE.Vector3();
    vector.setFromMatrixPosition( child.matrixWorld );
    console.log('vector', vector);
}, onProgress, onError );

如果你评论“renderer.render(scene,camera);”,你会得到:

Vector3 {x:0,y:0,z:0}

如果您取消注释,您将获得:

Vector3 {x:0,y:0,z:20}