2015-10-26 55 views
0

當我加載模型在JavaScript定製的UV它的正常工作,當我加載模型工作:threejs個人的UV不要當我改變質地

var loader=new THREE.JSONLoader(); 
    loader.load(
    name .js', 
    function (geometry, materials) { 
     var material = new THREE.MeshFaceMaterial(materials); 
     var object = new THREE.Mesh(geometry, material); 
     object.position.y = -10; 
     object.name = name; 
     view3D.scene.add(object); 
    }, onProgress, onError) 

我創建了一個新的紋理:

function CreateTextureMaterial(ImageName){ 
    var Texture = new THREE.ImageUtils.loadTexture('texture/'+ImageName); 
    var Material = new THREE.MeshBasicMaterial({ 
    map:Texture}); 
    return Material; 
} 

,我加載它的模型:

function ChangeTexture(ObjectName, TextureMaterial){ 
    obj = scene.getObjectByName(ObjectName); 
    obj.material = TextureMaterial; 
} 

,因爲我希望它不工作 - 它加載默認的UV SE但不是該文件的一個。我試圖用:

var obj = scene.getObjectByName(ObjectName); 
var Texture = new THREE.ImageUtils.loadTexture('texture/'+ImageName); 
var Material = new THREE.MeshBasicMaterial({ 
map:obj.geomerty.faceVertexUvs}); 
obj.material=Material; 

我無法看到任何東西。我需要做什麼?

回答

0

因爲MeshFaceMaterial是有點材料的集合,而不是像MeshBasicMaterial的實例那樣只是單一的材質。

此外,你必須申請圖片紋理爲map

你可以這樣做,而不是。

var texture = new THREE.ImageUtils.loadTexture('texture/'+ImageName); var myBasicMaterial = new THREE.MeshBasicMaterial({ map: texture }); obj.material.materials[ 0 ] = myBasicMaterial;

+0

它工作正常!但我需要改變的材料是 obj.material.materials [1] –

+0

現在你的答案對於場景中的1個對象是可以的,但是在多個對象的情況下,我需要了解哪些材料編號是默認顯示的。 示例 obj1.material.materials [0] =材質; //沒關係 obj2.material.materials [0] =材質; //它不顯示可見圖層 –

相關問題