[英]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.