Экспорт группы в Three.js из Blender в формате gltf

У меня есть сцена Blender, в которой объекты организованы в коллекции.

Когда я экспортирую сцену в формат gltf и импортирую ее в свой проект Three.js, эти коллекции не отслеживаются.

Я ожидал, что каждой коллекции соответствует своя группа.

Как я могу получить такой результат? Является ли это возможным?


person zed87    schedule 05.02.2019    source источник


Ответы (2)


Я думаю, что наиболее надежным способом может быть создание одного пустого объекта для каждой коллекции в Blender и использование его в качестве родителя для остального содержимого его коллекции. Дайте ему имя, которое вы сможете увидеть со стороны ThreeJS.

В glTF нет "коллекций" как таковых, но есть иерархия родительских / дочерних узлов, и вы можете использовать ее для целей группировки.

В качестве примечания, glTF поддерживает несколько «сцен», но я не помню, будет ли экспортер записывать несколько сцен Blender как таковых. Большинство читателей glTF все равно плохо это читают. Я подозреваю, что использование пустых узлов в качестве родителей групп для организации вещей будет более хорошо протестированным путем кода.

person emackey    schedule 05.02.2019
comment
Не могли бы вы подробнее рассказать о процедуре, которой нужно следовать? - person zed87; 09.02.2019

Ответ emackey хорош для варианта использования:

objects_x children of parent y = collection1
objects_z children of parent a = collection2

Three.js имеет свойство Object3D под названием Layers, которое позволяет этот вариант использования :

objects_x = collection1
objects_z = collection2
objects_x & objects_z = collection3

Это позволяет частичное отображение коллекций или отображение одного объекта в нескольких коллекциях.

Я нашел единственный способ сделать это - вручную присвоить каждому объекту значения Layer Three.js, например:

gltf.scene.children[0].layers.enable(1);
camera.layers.enable(1)

Затем вы можете переключать видимость объектов в слое 1 следующими способами:

camera.layers.toggle(1);

Подробнее читайте здесь: https://threejs.org/examples/#webgl_layers

person Reuben Schmidt    schedule 14.11.2019