将纹理文件包含到 collada 文件中
Posted
技术标签:
【中文标题】将纹理文件包含到 collada 文件中【英文标题】:Including texture files into the collada file 【发布时间】:2012-08-26 17:52:44 【问题描述】:我想将我的纹理图像文件包含到我的 collada 文件中。 现在我有很多文件:.dae 本身和 .png 纹理文件。
但是我只想要一个文件:.dae,但其中包含纹理。
我可以以某种方式将 .png 图像存储在 .dae 文件本身中吗? 可能吗? 提前谢谢!
【问题讨论】:
【参考方案1】:尽管前面的答案说了什么,但完全可以在 COLLADA 文件本身中嵌入图像。在<init_from>
元素下,您会发现您可以使用<ref>
元素指定文件名,或者,您可以指定<hex format="PNG">
,在该<hex format="PNG">
下,您可以将图像数据指定为十六进制编码的二进制八位位组序列.但是,由于是十六进制编码,这比将图像文件包含在 .zae 存档(实际上是具有不同扩展名和特殊元数据文件的 .zip 文件)中的存储效率要低一些。
我知道这个问题已经有几个月了,但我必须更正上一个答案。
【讨论】:
感谢您的评论。这很有帮助。 请注意,您不能在 .dae 文件中嵌入图像。这样做的方法是将它们放在一个 zip 文件中。 COLLADA 文件中纹理的路径应该相对于存档中 .dae 文件的位置。
zip 文件有时会使用扩展名 .zae 重命名。 COLLADA 1.5 spec 在第 20 页正式定义了这些,在此重复以完成:
存档包装
在导入和导出时,DCC 工具必须支持 .zae 格式,这是一个或多个 .dae 文件的 zip 存档 (COLLADA 文档)和所有引用的内容(纹理)。这 存档必须包含一个名为 manifest.xml 的文件,一个 XML 编码的文件 包含
<dae_root>
元素。此元素是 UTF8 指向 .dae 文件的相对 URI 的编码。如果 URI 包含一个片段,然后指示的元素是起点 用于加载 .zae 档案的应用程序。否则,该<scene>
元素将是应用程序加载的起点 .zae 档案。如果这两个条件都不满足,那么 行为未定义。.zae 文件中的 URI 可以引用存档中的任何其他文件 使用存档根目录的相对路径,根据 URI 标准。
档案本身可能包括其他档案(zip、rar、kmz、zae)。 引用嵌套存档中文档的 URI,本身 在 .zae 存档中,将使用嵌套存档的名称 路径。
例如:
./internal_archive.zip/directory/document.dae#element
无法使用 相对 URI,但使用绝对值引用内容是有效的 URI,如:
file:///other_directory/other_document.dae#element
【讨论】:
感谢您的详细解答!这真的很有帮助!以上是关于将纹理文件包含到 collada 文件中的主要内容,如果未能解决你的问题,请参考以下文章
Three.js - 从文件输入加载 Collada 文件(和纹理)
导入到 XCode 的 Collada (.dae) 文件显示没有纹理
如何使用 THREE.js 向 collada 文件 (.dae) 添加纹理?