2014-10-30 44 views
1

我有一個場景,我使用Three.js導出器從Blender導出。經過一些試驗和錯誤,我得到它出口罰款。當我試圖將它導入到Three中時,我收到了一些WebGL錯誤,如glDrawElements: range out of bounds for buffer,這似乎與導入對象的大小或位置有關。我用一些與尺寸相關的東西來搞砸,並最終加載正常。但是,我的材質中沒有任何材質正在加載,除了一個,這是一個應用了單個材質的對象。SceneImporter無法加載r68中的MeshFaceMaterial紋理

這裏是我的管道

  • 在我的三個JS編輯工具
  • 出口此創建水平的基礎,並將其導入到攪拌機的紋理/ UV貼圖(正常工作)
  • 對象可以有材質數量,每個人臉真的有一個,每個材質可以有不同的紋理映射到它(所有好的,對象都是UV解包等)
  • 將所有對象連接在一起(除了一個對象,單個材料/質地適用於它)
  • 出口使用SceneImporter Blender的文件經由three.js所出口
  • 加載該文件一個JSON文件分爲三個

當涉及到三個,有兩個對象,一個是樹,具有映射到其材質的單個紋理。另一個是大型幾何體,其中包含20種材質和紋理。此幾何圖形沒有任何紋理顯示,只是顯示爲MeshLambertMaterial。

有沒有人遇到過這樣的問題?任何解決方案

回答

1

似乎SceneImporter不知道如何處理這些材質,但所有數據都在那裏,所以您需要給它一些幫助。

像這樣;

loader.load('sceneWithObjectOfManyFaceMaterials.json' , function(loaded) 
{ 
    for(var key in loaded.objects) 
    { 
     var mesh = loaded.objects[key]; 

     if(mesh.material.materials) 
     { 
      mesh.material.materials.forEach(function(m , i) 
      { 
       m.map = loaded.materials[m.name].map; 
      }); 
     } 

     scene.add(mesh); 
    } 

    render(); 
});