Загрузка более одного объекта / сетки + материала, экспортированных из Blender, в Three.js

Я смоделировал два объекта в Blender с разными материалами и разными текстурами, сопоставленными с ними. Я визуализирую его с помощью CanvasRenderer

Если я экспортирую его, будет несколько материалов. но только одна сетка в результирующем файле JSON.

Это (упрощенный) код, который я использую для загрузки модели с помощью 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 (по одному на объект)?


person Camilo Martin    schedule 01.07.2012    source источник


Ответы (3)


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

person Sammy    schedule 25.11.2014
comment
Ооо, приятно слышать! Я не собираюсь проверять, работает ли он, но, предполагая, что это так, я приму ваш ответ. Спасибо за распространение информации. - person Camilo Martin; 26.11.2014

Знаешь что? Есть относительно простой способ справиться с подобным случаем.

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

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

person Camilo Martin    schedule 01.07.2012

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

person BogutBeastMode    schedule 19.09.2017