Включение файлов текстур в файл collada

Я хочу включить мои файлы изображений текстуры в свой файл collada. Теперь у меня много файлов: собственно .dae и файлы текстур .png.

Однако мне нужен только один файл: .dae, но с включенными в него текстурами.

Могу ли я как-то хранить изображения .png в самом файле .dae? Является ли это возможным? Заранее спасибо!


person Fract    schedule 31.08.2012    source источник


Ответы (2)


Вы не можете встроить изображение в файл .dae. Для этого нужно собрать их в zip-архив. Путь к текстурам внутри файла COLLADA должен быть относительно местоположения файла .dae внутри архива.

ZIP-файл иногда переименовывается с расширением .zae. В спецификации COLLADA 1.5 они формально определены на странице 20 и повторяются здесь для завершения:

Архивная упаковка

При импорте и экспорте инструменты DCC должны поддерживать формат .zae, который представляет собой zip-архив одного или нескольких файлов .dae (документы COLLADA) и всего связанного содержимого (текстуры). Архив должен включать файл с именем manifest.xml, файл в кодировке XML, содержащий элемент <dae_root>. Этот элемент представляет собой кодировку UTF8 относительного URI, указывающего на файл .dae. Если URI содержит фрагмент, то указанный элемент является отправной точкой для загрузки приложения архива .zae. В противном случае элемент <scene> будет отправной точкой для загрузки приложением архива .zae. Если ни одно из этих условий не выполняется, поведение не определено.

URI в файлах .zae могут ссылаться на любой другой файл в архиве, используя относительные пути от корня архива в соответствии со стандартом URI.

Сам архив может включать другие архивы (zip, rar, kmz, zae). URI для ссылки на документ внутри вложенного архива, который сам находится внутри архива .zae, будет использовать имя вложенного архива в пути.

Например:

./internal_archive.zip/directory/document.dae#element 

Невозможно ссылаться на контент вне архива с использованием относительного URI, но допустимо ссылаться на контент с использованием абсолютного URI, например:

file:///other_directory/other_document.dae#element
person jterrace    schedule 31.08.2012
comment
Спасибо за подробный ответ! Это было действительно полезно! - person Fract; 02.09.2012

Несмотря на то, что говорится в предыдущем ответе, вполне возможно встраивать изображения в сам файл COLLADA. Под элементом <init_from> вы обнаружите, что вы можете либо указать имя файла с помощью элемента <ref>, либо, альтернативно, вы можете указать <hex format="PNG">, под которым вы можете указать данные изображения как последовательность двоичных октетов в шестнадцатеричной кодировке. Однако это несколько менее эффективно для хранения, чем включение файла изображения в архив .zae (который на самом деле является файлом .zip с другим расширением и специальным файлом метаданных) из-за шестнадцатеричного кодирования.

Я знаю, что этому вопросу несколько месяцев, но мне пришлось исправить предыдущий ответ.

person rdb    schedule 25.04.2013
comment
Спасибо за ваш комментарий. Это было очень полезно. - person Fract; 08.05.2013
comment
Обратите внимание, что элемент ‹hex› предназначен для Collada 1.5. Если вы используете Collada 1.4, вместо этого это элемент ‹data›. Спецификации (и схемы) доступны по адресу khronos.org/collada. - person Dan Homerick; 31.01.2015
comment
Спасибо, это очень помогло. Для всех, кто просматривает, это на странице 315 документа здесь: khronos.org/files/collada_spec_1_5.pdf - person Benjamin Collins; 09.03.2018