Краткий обзор типов материалов в 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.