Проблемы в THREEJS с преобразованными моделями GLTF 2.0 - PullRequest
0 голосов
/ 19 октября 2018

У меня более 100 тысяч моделей GLTF 1.0.Мы находимся в процессе конвертации в 2.0 и бьем кирпичную стену.

Сначала исходные модели были Collada, и мы использовали конвертер Collada2GLTF для генерации файлов GLTF.Но мы сделали это, используя параметр KHR_materials_common, который дал нам идеальные результаты.

Но теперь мы хотим преобразовать файлы GLTF в 2.0, и это оказалось довольно проблематичным.Процесс работает нормально, но преобразованная модель получает расширение KHR_materials_common.Именно через этот материал связана текстура.

Поскольку мы используем ТРИ JS-рендерера, его загрузчик GLTF еще не поддерживает это расширение, и текстура не отображается.Это только получает полностью черную поверхность.

Я дал (быстро) возможность добавить это расширение локально, используя MeshBasicMaterial, но без хорошего результата.

Итак, мой вопрос: каковы мои варианты, если таковые имеются?

  • Есть ли способ преобразовать и удалить KHR_materials_common из источника GLTF 1.0?
  • Может ли процесс преобразования ( gltf-pipeline ) удалить расширение?
  • Есть ли работа по добавлению поддержки в THREEJS GLTFLoader?
  • Преобразование из источника в GLTF 2.0 работает, но у меня не все доступные источники.Некоторые из них являются собственностью клиентов, и мы не храним их.
  • Возврат к COLLADA не поддерживается ( здесь )

1 Ответ

0 голосов
/ 19 октября 2018

Краткий обзор типов материалов в glTF 1.0 и glTF 2.0 на конец 2018 года:

glTF 1.0

  • (Core) : пользовательские шейдеры GLSL.
  • KHR_materials_common : Блинн, Фонг, Ламберт и Константа / не горит.

glTF 2.0

  • (ядро) : металл / шероховатая PBR.
  • KHR_materials_pbrSpecularGlossiness : Spec / gloss PBR.
  • KHR_materials_unlit : Постоянный / неосвещенный.
  • KHR_techniques_webgl : Пользовательские шейдеры GLSL. (в процессе)

Обратите внимание, что в glTF 2.0 нет материалов blinn, phong или lambert.Знаете ли вы, какие типы материалов или текстуры используются в ваших 100 000 моделей?Это поможет определить, какой материал glTF 2.0 вы должны использовать.

Three.js реализует все опции материала glTF 2.0, кроме KHR_techniques_webgl, для которых спецификация не является полной.Three.js не реализует KHR_materials_common, поскольку он не является частью glTF 2.0.

Скорее всего, если вы использовали неосвещенные материалы в glTF 1.0, вы должны использовать расширение KHR_materials_unlit в glTF 2.0.Если вы использовали blinn, phong или lambert, вы должны использовать PBR «металл / шероховатый» или «spec / gloss» в glTF 2.0.Преобразование этих материалов в PBR должно выглядеть довольно неплохо, хотя, если вы ищете точное соответствие устаревших материалов, вам, возможно, придется рассмотреть вопрос о собственном расширении GLSL.

НадеюсьНе думаю, что glTF-Pipeline может выполнить это преобразование, но было бы неплохо подать туда проблему (похоже, у вас уже есть?), чтобы запросить ее.Если нет, то преобразование, вероятно, можно реализовать самостоятельно.Например, это намного проще, чем что-либо преобразовывать в / из материала GLSL.

...