我经常为各种3d软件包(3ds max、Maya等)编写脚本,这就是我对Alembic感兴趣的原因,Alembic是一种最近备受关注的文件格式。在
对不了解此项目的任何人的快速解释:alembic-www.alembic.io
-是一种文件格式,用于包含三维网格和与其相关的数据。它使用树状结构,如下所示,有一个根节点及其子节点、子节点的子节点等。
我正在尝试学习如何在Python中使用这个Alembic。在
在这个项目的docks页面上有一些教程,我对这个有一些问题: http://docs.alembic.io/python/cask.html 它是关于使用容器模块-一个包装器,它应该更容易地操作文件的内容。在
本部分:
a = cask.Archive("animatedcube.abc")
r = cask.Xform()
x = a.top.children["cube1"]
a.top.children["root"] = r
r.children["cube1"] = x
a.write_to_file("/var/tmp/cask_insert_node.abc")
效果很好。之后有了新文件“cask_insert_节点.abc“而且它有如预期的对象。在
但是当我向对象添加一些属性时,例如:
^{pr2}$结果文件中的“cube1”对象不包含属性“new_property”。 保存过程是个问题,我知道这个属性在保存之前已经添加到“cube1”中,我用另一种方法检查了它,我编写了一个函数来创建归档中的对象图。在
此模块的代码如下: source
有人知道我做错了什么吗?如何保存参数?换个方式?在
可悲的是,木桶不支持这一点。不能修改存档并保存结果(某种程度上与Alembic如何从磁盘流式传输数据有关)。您需要做的是创建一个输出归档文件
然后将所有需要的数据从输入归档文件复制到输出归档文件,包括时间采样(
^{pr2}$,和对象,递归通过伊尔奇夫。盖托普()和欧拉奇夫。盖托普()定义输出属性(alembic.Abc.oarray属性,或oscalaproperty)当你遇到他们时。定义这些值后,您可以在此时将新值作为示例插入到属性中。在
它是一个真正的野兽,是一个真正的木桶应该支持的东西。事实上,Alembic社区中的某个人应该帮每个人一个忙,写一个cask2(casket?)把所有这些都归结为简单的调用,就像你本能地想做的那样。在
相关问题 更多 >
编程相关推荐