2012-12-23 58 views
3

我想將紋理添加到我轉換爲json並從3ds Max導入的模型中。我搜索,但沒有找到任何代碼在線應用紋理json模型使用three.js r53。我想Three.js處理紋理的方式已經改變了以前的版本。任何指導?三JS JS TextureLoader

以下是我的代碼:

var texloader = new THREE.TextureLoader(); 
var tex=texloader.load("second.jpg"); 
var mat = new THREE.MeshBasicMaterial({ map: tex }); 

loader = new THREE.JSONLoader(); 
loader.load("js/JsonModels/toothz.js", function(geometry, mat) { 
    mat[0].shading = THREE.SmoothShading; 
    var material = new THREE.MeshFaceMaterial(mat); 
    mesh = new THREE.Mesh(geometry, material); 
    mesh.scale.set(3, 3, 3); 
    mesh.position.y = 0; 
    mesh.position.x = 0; 
    scene.add(mesh); 
}); 

回答

7

編輯: 這個帖子才一歲多的時候我回答了,而且好像我的回答得到了很快發佈API改變之前。 這個答案是不行的(信任的Kumar Sanket Sahu的話,沒有測試)

即使這是超過一年,自從我來到它周圍目前正在尋找解決方案時:

textureloader給您在加載紋理時回調一次:

var texloader = new THREE.TextureLoader(); 
texloader.load("second.jpg", function(tex) { 

    var mat = new THREE.MeshBasicMaterial({ map: tex }); 

    var loader = new THREE.JSONLoader(); 
    loader.load("js/JsonModels/toothz.js", function(geometry, mat) { 
     mat[0].shading = THREE.SmoothShading; 
     material = new THREE.MeshFaceMaterial(mat); 
     mesh = new THREE.Mesh(geometry, material); 
     mesh.scale.set(3, 3, 3); 
     mesh.position.y = 0; 
     mesh.position.x = 0; 
     scene.add(mesh); 
    }); 
}); 

這適用於此示例。

+0

確認工作,謝謝。 – Andy

8

可能是對方的回答對舊版本的工作,這是我得到了它的工作

var textureLoader = new THREE.TextureLoader(); 
textureLoader.load(url); 

// Add the event listener 
textureLoader.addEventListener('load', function(event){ 

    // The actual texture is returned in the event.content 
    sphere.material.map = event.content; 

}); 
+2

以下是文檔:http://threejs.org/docs/#Reference/Loaders/TextureLoader – SapphireSun

+1

新鏈接:https://threejs.org/docs/#api/loaders/TextureLoader –

+0

這是更好的答案,謝謝爲文檔!現在正在工作。在我的對象被添加到場景之前...沒有實際的圖像! – Andy