2015-01-28 2 views
4

Моя модель в Blender состоит из множества групп объектов. Модель экспортировалась как .obj из C4D в Blender. Каждая группа объектов была помещена под Null in Blender. Когда я экспортирую в three.js, только последний выбранный объект в Blender будет экспортирован как .json-файл.Three.JS Blender экспортирует только один объект

Я попытался выбрать несколько разных объектов, и снова будет экспортирован только один объект. Я проверил это, увидев результирующие файлы .json в редакторе. Фактически это показывает, что только один объект экспортируется.

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

В блендере я попытался связать все объекты для одного родителя в надежде на то, что вся модель будет экспортироваться. Это не сработало.

Мои вопросы - это нормальное поведение?

Как преобразовать все отдельные части в одну сетку после того, как я применил материалы к каждому в Blender?

Или есть какой-то параметр экспорта У меня неправильный при работе с несколькими объектами, каждый со своим нулевым значением?

ответ

2

Будьте осторожны, группируя объекты под Null (пусто) в Blender. Я пробовал это некоторое время назад, когда мои световые установки были нормальным логическим потоком работы, но обнаружили, что были проблемы с преобразованием, когда сцена была построена в three.

Когда я экспортирую в three.js, только последний выбранный объект в Blender будет экспортирован как .json-файл.

Ключевое слово здесь «последний выбран», в котором говорится, что вы, возможно, не нажимали на опцию Scene для экспорта. По умолчанию экспорт создает только .json с одной геометрией, которая является текущим выбором в Blender.

Публикация вывода файла журнала помогает узнать, какие у вас были варианты. Вам не нужно Pastebin всей вещи для этого, просто найти линию (по направлению к верхней части бревна), который выглядит следующим образом:

Three.Export - DEBUG: 
Scene().__init__(G:\cleanflight_json_test\cfc_gui_def_green_a.json, 
{'animation': False, 'cameras': False, 'embedGeometry': True, 
'faces': True, 'colors': False, 'influencesPerVertex': 2, 
'scene': True, 'faceMaterials': False, 'precision': 6, 'embedAnimation': True, 'lights': False, 'logging': 'debug', 
'scale': 1.0, 'frameStep': 1, 'bones': False, 'vertices': True, 
'uvs': False, 'copyTextures': True, 'geometryType': 
'geometry', 'mixColors': False, 'maps': False, 'compression': 
'None', 'normals': False, 'enablePrecision': False, 'materials': False, 
'skinning': False, 'morphTargets': False}) 

Это будет по крайней мере, сказать мне, что ваши варианты были

+0

Вчера, когда я выбрал вариант сцены для экспорта, модель не появлялась в gui, где будут жить модели. В gui уже есть подсветка и камера, ей просто нужна модель с материалами. Вот короткое видео gui, работающее с этой моделью куба со вчерашнего дня https://www.youtube.com/watch?v=DIE_vytEG8s&list=UUCa6sk3mAf6dT4wY9TYaNNg – Akfreak

+0

Также здесь приведена ссылка на модель блендера и файл .json http://lilsamedia.com/three_js_blender/ – Akfreak

+1

Вот скриншот квадроцикла, в котором я объединил все ячейки (Ctrl + J объединяет выбранные сетки). Я изменил цвет на каждый материал, чтобы вы могли видеть, что присвоения материала сохранены. http://i.imgur.com/KAzcZle.png – repsac

1

Как Repsac сказал, что важно проверить опцию Scene в настройках экспортера Three.js json. Но важно знать, что экспортированный json-файл уже не просто Geometry. Он маркируется Сценами и теперь его нужно обрабатывать по-другому.

Вы можете следить за полным процессом экспорта всей сцены из Blender и правильным способом обработки экспортированных сеток на моем answer to this post.

Кроме того, как вы оба сказали, все сетки могут быть объединены в одну сетку и обрабатывать несколько материалов из него с помощью THREE.MeshFaceMaterial как в следующем коде:

var mat1 = new THREE.MeshLambertMaterial({ map: texture1 }); 
var mat2 = new THREE.MeshLambertMaterial({ map: texture2 }); 
var materials = [mat1, mat2]; 
var faceMat = new THREE.MeshFaceMaterial(materials); 
mesh = new THREE.Mesh(geometry, faceMat); 
scene.add(mesh); 

Надеется, что это очищает немного шагов немного более. Спасибо за помощь, ребята :)

+0

спасибо спасибо спасибо – dylnmc

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