Python,Alembic.io公司,Cask:使用write\u to_file()时不保存对象的属性

2024-05-29 03:13:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常为各种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

有人知道我做错了什么吗?如何保存参数?换个方式?在


Tags: 模块文件项目对象io属性节点top
1条回答
网友
1楼 · 发布于 2024-05-29 03:13:05

可悲的是,木桶不支持这一点。不能修改存档并保存结果(某种程度上与Alembic如何从磁盘流式传输数据有关)。您需要做的是创建一个输出归档文件

oArchive = alembic.Abc.CreateArchiveWithInfo(...)

然后将所有需要的数据从输入归档文件复制到输出归档文件,包括时间采样(

^{pr2}$

,和对象,递归通过伊尔奇夫。盖托普()和欧拉奇夫。盖托普()定义输出属性(alembic.Abc.oarray属性,或oscalaproperty)当你遇到他们时。定义这些值后,您可以在此时将新值作为示例插入到属性中。在

它是一个真正的野兽,是一个真正的木桶应该支持的东西。事实上,Alembic社区中的某个人应该帮每个人一个忙,写一个cask2(casket?)把所有这些都归结为简单的调用,就像你本能地想做的那样。在

相关问题 更多 >

    热门问题