2014-10-30 2 views
1

Three.js 내보내기를 사용하여 블렌더에서 내보내는 장면이 있습니다. 시행 착오의 약간 후에 나는 잘 수출하기 위하여 그것을 얻었다. 3으로 가져 오려고하면 glDrawElements: range out of bounds for buffer과 같은 몇 가지 WebGL 오류가 발생합니다.이 오류는 가져온 개체의 크기 또는 위치와 관련이있는 것으로 보입니다. 나는 크기와 관련된 몇 가지 물건들로 주변을 비웃고 결국에는 잘로드 할 수있게되었습니다. 그러나 텍스쳐를 가진 나의 머티리얼은 하나의 머티리얼이 적용된 객체 인로드 이외에는로드되지 않습니다.SceneImporter가 r68에 MeshFaceMaterial 텍스처를로드하지 않습니다.

여기이 내 세 JS 편집기 도구

  • 수출의 수준에 대한 기반을 만들고
  • 객체을 가질 수있다 (잘 작동) 텍스처링/UV 매핑을위한 블렌더로 가져 내 파이프 라인

    • 입니다 재료의 수, 실제로 각면에 하나씩 각 재료는 그것에 맵핑 된 다른 텍스처를 가질 수 있습니다. (모든 좋은 물체는 UV 풀지 않은 등 ..)
    • 모든 오브젝트를 함께 결합합니다. 단일 재료/텍스처 적용)
    • 내보내기 SceneImporter를 사용하여 세 가지로 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(); 
    }); 
    
    관련 문제