2012-07-01 5 views
1

Я смоделировал два объекта в Blender, с различными материалами и различными текстурами, нанесенными на UV-карту. Я делаю это с помощью CanvasRendererЗагрузка нескольких объектов, размещенных в Blender-экспорте/сетке + материала в Three.js

Если I export it, в результирующем JSON file имеется более одного материала, но только одна сетка.

Это (упрощенный) код я использую, чтобы загрузить модель с Three.js:

var loader = new THREE.JSONLoader(); 
loader.load(myModelPath, function { 

    var material = geometry.materials[0]; 
    material.morphTargets = true; 
    material.overdraw = true; 

    var mesh = new THREE.Mesh(geometry, material); 

    mesh.scale.set(50, 50, 50); 
    mesh.position.set(0, 0, 0); 

    scene.add(mesh); 

}); 

Как вы можете видеть, я только с помощью [0] материала. В результате второй объект использует материал первого объекта (если я использую материал [1], происходит обратное).

Но я не знаю, как создать сетку, которая использует более одного материала!

Возможно ли это? Или есть способ экспортировать более одного файла JSON из Blender (по одному на объект)?

ответ

1

Они, вероятно, сделаны улучшения в JSon экспортера, так как этот вопрос был задан, но теперь это возможно. В параметрах экспорта рядом с настройками внизу установлен флажок для всех сеток. Снимите этот флажок, и только выбранная сетка будет экспортирована.

+0

Ооо, это приятно слышать! Я не собираюсь проверять, работает ли это, но если это произойдет, я приму свой ответ. Спасибо за распространение информации. –

3

Знаете что? Существует относительно простой способ обойти такой случай.

  1. Модель в блендере, как обычно.
  2. Сохранить как копию столько экземпляров, сколько у вас есть.
  3. Открыть каждую копию, и удалить все, кроме соответствующего объекта.
    Теперь у вас есть obj1.blend, obj2.blend и т. Д.
  4. В каждом из них экспортируйте в three.js, как вы идете.
  5. Загрузите их все. В моем коде это так же просто, как добавление строк в массив.

Обратите внимание, что если есть более прямой способ идти об этом, я хотел бы также знать :)

0

Вы должны использовать THREE.ObjLoader. В настройках экспорта блендера вы можете выбрать сцену и материалы в нижней части опций экспорта. Voila