GlTFLoader против ObjLoader в threejs?

Я всегда использовал файлы .obj для загрузки моделей в three.js. Я где-то читал, что теперь предпочтительнее использовать .gltf.

Когда я начал это делать, я понимаю, что хотя загрузка объекта кажется простой с gltf, obj кажется более гибким, когда объект находится внутри.

Вещи как:

  • Изменение свойств материала
  • Изменение затенения на плоское
  • Контроль того, как объект реагирует на определенные входные данные.

Все это кажется сложным / не поддерживается в gltf, где вы можете легко сделать это с помощью obj.

В чем конкретно преимущество gltf? Я предполагаю размер файла, но похоже, что вам нужно отказаться от большого контроля ради этого преимущества.


person jared    schedule 02.07.2019    source источник
comment
Вы можете контролировать все вышеперечисленное в любом формате - как только вы загрузите модель в threejs, это будет просто THREE.Scene или THREE.Mesh. Разница может заключаться в том, что OBJ давал вам одну единственную сетку, где файл glTF мог иметь несколько вложенных объектов в сцене? Это зависит от модели, но для управления может потребоваться немного другой код.   -  person Don McCurdy    schedule 02.07.2019
comment
хорошо, это имеет смысл; если есть несколько сеток, как их запросить? дополнительные пояснения: я построил свою модель примерно с 80 различными объектами; Я мог бы объединить их, но мульти-материалы в .glb не поддерживаются, я думаю, поэтому я мог бы, вероятно, объединить только 12 отдельных мешей. РЕДАКТИРОВАТЬ: нашел руководство здесь: threejsfundamentals.org/threejs/lessons/threejs-load -gltf.html похоже, что нет простого способа, но вы можете выйти из иерархии в консоли, и поскольку я построил свою собственную модель, я должен иметь возможность реэкспортировать с правильными именами слоев, а затем иметь возможность доступ. Спасибо @don   -  person jared    schedule 03.07.2019
comment
object.traverse((o) => {...}) или _ 2_ - наиболее распространенные способы работы с вложенным объектом.   -  person Don McCurdy    schedule 03.07.2019


Ответы (1)


Нет никаких преимуществ, которые я могу придумать для .obj vs gltf. Obj не поддерживает иерархии ... он не поддерживает современные материалы, шейдеры, источники света / камеры ... нет геометрических групп. Obj - в основном ужасный формат, за исключением того, что он удобочитаем (как и текст gltf). Дополнительно .. gltf поддерживает сжатие сетки ... Формат сжатой текстуры. Двоичные буферы, экспорт одного файла со встроенными ресурсами. Формат Obj относится к концу 70-х годов. Gltf - это продукт более четырех десятилетий прогресса в области 3D в реальном времени, разработанный с нуля для доставки ресурсов 3D в Интернете.

person manthrax    schedule 02.07.2019
comment
какие-либо ссылки, подтверждающие ваш ответ? - person Habib Ali; 18.12.2020