2014-02-05 3 views
1

Я пытаюсь импортировать объект из Maya и вот файл JSONThree.js JSONLoader Материал Не показаны

{ 

    "metadata" : 
    { 
     "formatVersion" : 3.1, 
     "sourceFile" : "myobj.obj", 
     "generatedBy" : "OBJConverter", 
     "vertices"  : 22470, 
     "faces"   : 42837, 
     "normals"  : 128511, 
     "colors"  : 0, 
     "uvs"   : 52126, 
     "materials"  : 1 
    }, 

    "scale" : 1.000000, 

    "materials": [ { 
     "DbgColor" : 15658734, 
     "DbgIndex" : 0, 
     "DbgName" : "lambert2SG", 
     "colorAmbient" : [0.0, 0.0, 0.0], 
     "colorDiffuse" : [0.0, 0.0, 0.0], 
     "illumination" : 4, 
     "mapDiffuse" : "mytexture.tga", 
     "opticalDensity" : 1.0 
    }], 
    "vertices": [...] //Omitted because there are too many 
    "morphTargets": [], 
    "morphColors": [], 
    "normals": [...], 
    "colors": [], 
    "uvs": [...], 
    "faces": [...] 
} 

и вот как я загрузить файл в формате JSON:

Вот как я инициализировать сцену и загрузить json-файл. У меня большая дальняя точка, потому что объекты огромны:

 var scene = new THREE.Scene(); 
     var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 100000); 
     var renderer = new THREE.WebGLRenderer(); 
     renderer.setSize(window.innerWidth, window.innerHeight); 
     var controls = new THREE.OrbitControls(camera); 
     document.body.appendChild(renderer.domElement); 

     var jsonLoader = new THREE.JSONLoader(); 
     var mesh; 
     var render = function() { 
      stats.update(); 
      controls.update(); 
      requestAnimationFrame(render); 
      renderer.render(scene, camera); 
     } 
     jsonLoader.load("Mesh/myobj.js", function(geometry, materials){ 
      console.log(materials); // This prints an array, whose first element is a MeshLambertMaterial. 
      mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial(materials)); 
      // If I remove the second parameter, 
      //the object renders correctly without texture. 
      //Otherwise the screen shows nothing. 
      console.log(geometry); 
      scene.add(mesh); 
     }); 
     render(); 
     camera.position.y = 10000; 

Извините, если я сделал что-то глупое. Я новичок в three.js. Экран ничего не отображает, если я применяю текстуру к объекту. Я пробовал все, что мог найти. Пожалуйста помоги!

+0

Попробуйте 'новый THREE.MeshFaceMaterial (материалы)'. – WestLangley

+0

@WestLangley Это не сработало. Извините :( – chencharlie

+0

three.js не поддерживает файлы .tga. Конвертирует файл в .png. – WestLangley

ответ

0

Вы добавили свою камеру в сцену правильно? scene.add(camera);

+1

Я сделал. :(Я узнал, что если я загружаю текстуру отдельно, она работает. Поэтому я предполагаю, что не могу использовать текстуру из JSONLoader. – chencharlie

+0

Попробуйте это Надеюсь, это будет полезно http://stackoverflow.com/questions/14872502/jsonloader-with-texture – user2118784

Смежные вопросы