2017-04-18 51 views
0

我使用JSONloader在three.js中加載模型,它工作正常,唯一的問題是步驟或甚至文檔,這將幫助我預先加載紋理(這是圖像),以便我創建一個交互(用鼠標點擊切換圖像)。three.js中的JSONLOADER

var loader = new THREE.JSONLoader(), 
    callbackKey = function(geometry,materials) {createScene(geometry,materials,0, 0, 0, 25)}; 
    loader.load("3dmodel/Converse_obj/converse_obj.js", callbackKey); 

    window.addEventListener('resize', onWindowResize, false); 


} 


function createScene(geometry,materials, x, y, z, scale) { 

    zmesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials)); 
    zmesh.position.set(x, y, z); 
    zmesh.scale.set(scale, scale, scale); 
    meshes.push(zmesh); 
    scene.add(zmesh); 


} 

回答

0

有很多方法可以解決這個問題,它可能與three.js沒有太大關係。

三的確有LoadingManager類,我認爲這是這樣的:

function onAllMyTexturesLoaded() {...} 
function onSingleTextureLoaded() {...} 
myTextureManager = new THREE.LoadingManager(onAllMyTexturesLoaded , onSingleTextureLoaded , onError) 

myTextureLoader = new THREE.TextureLoader(myTextureManager) 

您就可以開始一次加載你的網所有的紋理被加載。通過這個加載器加載的任何東西都會觸發這些回調。

您也可以將紋理ID放入字典中,當它們進來時將它們標記爲真,通過鍵遍歷並查看它們是否全部爲真,從而觸發事件。