簡體   English   中英

訪問使用OBJMTLLoader加載的Object3D

[英]Access Object3D loaded using OBJMTLLoader

我正在構建一個允許用戶以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 );

問題似乎是,一旦我超出了load功能,對Object3D的引用將不再可用。 上面的代碼給出了一個JavaScript錯誤:

Cannot access property 'position' of undefined.

任何幫助是極大的贊賞!

@mrdoob的評論使我自己解決了這個問題。 觸發jquery回調時,我的變量obj3d確實超出范圍。 我能夠通過將變量聲明移到全局范圍來解決它。

另外,之所以沒有看到在three.js場景中立即應用更改,是因為我需要調用render()函數。

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

希望這會幫助其他人。 感謝您指出正確的方向!

我不確定,但是我認為您需要使用obj3d = object.clone() ,因為稍后您的對象將被銷毀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM