使用OBJMTLLoader加载Access Object3D

Vin*_*nce 8 javascript three.js

我正在构建一个允许用户以obj/mtl格式上传3D模型的应用程序.管理员在我们的查看器中显示已加载对象的外观预览.我想为用户提供控件,以设置加载对象的初始y位置和相机的初始z位置.我有相机部件,但我对y位置没有运气.我的代码:

var obj3d;

loader.load( model_obj, model_mtl, function ( object ) {
    object.position.y = y_init;
    scene.add( object );
    render();

    obj3d = object;

    $('#initial_y').change(function() {
      obj3d.position.y = $(this).val();
    });

}, onProgress, onError );
Run Code Online (Sandbox Code Playgroud)

问题似乎是,一旦我在load函数之外,对该函数的引用就Object3D不再可用了.上面的代码给出了一个javascript错误:

Cannot access property 'position' of undefined.
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏!

Vin*_*nce 5

@mrdoob的评论让我自己解决了这个问题.obj3d当jquery回调被触发时,我的变量确实超出了范围.我能够通过将变量声明移动到全局范围来解决它.

另外,我没有看到在three.js场景中立即应用的更改的原因是因为我需要调用该render()函数.

$('#initial_y').change(function() {
    obj3d.position.y = $(this).val();
    render();
});
Run Code Online (Sandbox Code Playgroud)

希望这会帮助别人.谢谢你指点我正确的方向!