2015-04-04 65 views
0

使用OBJMTLLoader加載模型後,它會自動設置爲MeshLambertMaterial,並且不幸的是,我無法使其處於全色並且紋理看起來更暗。我在設置場景中正確的光線時遇到了一些問題。模型照明

我增加了一個環境光,但它不是足夠:

scene.add(new THREE.AmbientLight(0xffffff)); 

是否可以關閉「亮度」,並沒有在場景中的任何光網蘭伯特可見的材料?

+0

'MeshLambertMaterial'需要在場景中的光線。只有'MeshBasicMaterial'不需要燈光。 – gaitat 2015-04-04 13:48:38

+0

有沒有辦法轉換材料? – mjanisz1 2015-04-04 16:27:12

+0

重命名材質並取出出錯的屬性。 – gaitat 2015-04-04 17:06:27

回答

0

重新創建材質的兩種方式,一種是手動打開模型文件並在源文件中更改材質。或usilg對象裝載機或JSON裝載機時,用「for」語法走線槽每種材料和設置其他值

var jsonLoader = new THREE.JSONLoader(); 
jsonLoader.load(model, addthree1ToScene); 

         function addthree1ToScene(geometry, materials) 
         { 
          var materiall = new THREE.MeshFaceMaterial(materials); 


          for (var i = 0; i < materials.length; i ++) 
          { 
          var material = materials[i]; 
           material.side = THREE.DoubleSide; /// there you can set attributes 
          } 

          three1 = new THREE.Mesh(geometry, materiall); 



          three1.position.set(x,y,z); 



          scene.add(three1); 
          console.log(three1); 

         }