2016-11-11 14 views

ответ

4

В настоящее время нет известного программного обеспечения для преобразования, чтобы перейти в другое направление. Это связано с тем, что COLLADA считается 3D asset exchange schema, тогда как glTF предназначен для runtime 3D asset delivery. Другими словами, COLLADA предназначен для получения моделей, переносимых между 3D-пакетами, тогда как glTF предназначен для передачи моделей конечным пользователям для немедленного потребления. Техническая внутренность каждого формата отражает эти намерения: в COLLADA партия вершинных данных четко обозначается как данные вершин, а нормали обозначаются как нормальные, для легкой загрузки в редактор. Но в glTF все по-другому: вершинные, нормальные, UV и другие данные могут быть объединены вместе как двоичный blob, причем аксессоры указывают, как передать срезы этих данных как атрибуты вершин в шейдер.

Невозможно было бы написать конвертер, чтобы перейти в другое направление, но могут быть проблемы. Например, если преобразователь столкнулся с рукописными шейдерами в glTF, может возникнуть трудность в разработке того, что с ними делать. И даже если требование состояло в том, чтобы спасти данные от двоичного блоба и отбросить шейдеры, в игре все еще могут быть пользовательские атрибуты вершин, которые могут не иметь очевидного пути преобразования. Я полагаю, что конвертер может быть написан только для того, чтобы спасти данные позиции, возможно, вместе с нормалями и координатами текстуры, а также именами материалов и получить их в COLLADA. Не было бы простого способа получить цвет рассеяния/излучения или выбор алгоритма освещения и т. Д.

Итак, в целом: возможно, но проблематично написать обратный конвертер и противоречит намерениям glTF, но все же потенциально может быть полезен конечным пользователям.


UPDATE марта 2017: glTF 2,0 схема является being drafted сейчас, и, возможно, будет гораздо проще импортировать, чем glTF 1.0. Это связано с тем, что пользовательские шейдеры перемещаются из основной схемы, заменяясь физическим методом рендеринга (), где механизм выполнения предоставляет свои собственные шейдеры. Это означает, что такие вещи, как геометрия, нормали, координаты текстуры и т. П., Должны быть четко идентифицированы для клиентов, а не только произвольные данные, передаваемые произвольным шейдерам.

На GitHub есть Blender glTF 2.0 importer, но я лично его не пробовал. Я ожидаю, что более новые импортеры glTF 2.0 начнут появляться.