小编Jol*_*yon的帖子

Three.js 从 ObjLoader 操作对象

我正在尝试操作(例如更改位置、缩放、旋转)在 Three.js 中使用 OBJLoader 加载的对象。虽然这很容易做到一次,但当我想要时,例如在动画循环期间或初始加载回调之外的任何地方,我无法弄清楚如何执行此操作。

这是我的代码:

function loadObj( path, name )
{
    var obj;
    var mtlLoader = new THREE.MTLLoader();
    mtlLoader.setPath( path );
    mtlLoader.load( name+".mtl", function( materials ) {
        materials.preload();

        var objLoader = new THREE.OBJLoader();
        objLoader.setMaterials( materials );
        objLoader.setPath( path );
        objLoader.load( name+".obj", function( object ) {
            obj = object;
            obj.position.x = 20;
            scene.add( obj );
        });
    });
    return obj;
}

var myObj = loadObj( "assets/", "test" );

myObj.position.y = 20;
Run Code Online (Sandbox Code Playgroud)

这里需要注意的关键点是:

  • 我可以加载它并在循环中很好地对其进行操作,并且不会引发任何错误;
  • 如果我执行上述操作,我将在最后一行收到错误消息,其中指出:Cannot read property 'position' of undefined. …

javascript three.js objloader

3
推荐指数
1
解决办法
1222
查看次数

标签 统计

javascript ×1

objloader ×1

three.js ×1