2013-07-06 137 views
0

我想加載從攪拌機導出的JSON文件。 文件中有兩個網格和兩個材質。 這是我用來加載JSON的代碼。Three.js - 閃爍紋理

var self = this; 
var mushroomLoader = new THREE.JSONLoader(); 
    mushroomLoader.load('/js/Mushroom.js', function(mushroomGeometry, mushroomMaterial) { 
    var shrooms = new THREE.Object3D(); 
    var mushroomCount = 10; 
    var radius = 30; 
     for(var i = 0; i < mushroomCount; i++) { 
     var m = new THREE.Object3D(); 
    m.add(new THREE.Mesh(mushroomGeometry, mushroomMaterial[0])); 
    m.add(new THREE.Mesh(mushroomGeometry, mushroomMaterial[1])); 
     m.position.x = radius * Math.cos(Math.PI * 2 * i/mushroomCount); 
     m.position.z = radius * Math.sin(Math.PI * 2 * i/mushroomCount); 
    shrooms.add(m); 
    } 
    self.scene.add(shrooms); 
}, 'images/textures'); 

蘑菇被分成兩個網格,頂部和樹幹。我正在使用MeshPhongMaterial。閃爍/消失的紋理位於頂部。奇怪的是,其中一些顯示正確。

+0

您似乎正在爲每個對象添加兩個具有相同幾何圖形的子網格,並且子網格都位於同一位置。如果是這樣,那將導致z戰鬥和閃爍。 – WestLangley

回答

0

你說得對@WestLangley! 我改變了我的代碼從這個

var m = new THREE.Object3D(); 
m.add(new THREE.Mesh(mushroomGeometry, mushroomMaterial[0])); 
m.add(new THREE.Mesh(mushroomGeometry, mushroomMaterial[1])); 

var m = new THREE.Mesh(mushroomGeometry, new THREE.MeshFaceMaterial(mushroomMaterial)); 

,我沒有了問題。回想起來似乎很簡單。我認爲THREE.SceneUtils.createMultiMaterialObject爲兩個網格使用相同的幾何體是奇怪的。