Alembic文件格式简介--设计思想和理念[section 1]

Alembic的设计哲学

       这篇文档是写给那些想理解Alembic设计初衷和设计哲学的开发者,这样就能明白库中的东西为什么是按照现在的样子组织的。此文档不是maya或者prman插件的最终用户指南。
       Alembic旨在促进烘焙(cached)几何体的工作流以及跨平台的几何体交换共享。其内核是一个高效存储有层级关系(hierarchical)的类型化(typed)数据样本(sample)的库,以此达到了上面的目的。这上面的系统将数据插值为几何体或者几何变换,但是要时刻将其内部的数据管理放在首要地位。此文档的目标就是让读者明白Alembic的核心概念,以及如何用他们来创建几何表示。

Section 1: 库的层级


       Alembic由好几个层库组成,大体上每一层都基于下一层建立。从最底层到上面的具体实现,依次是:

Alembic::AbcCoreAbstract(命名空间简称:AbcA)


       AbcCoreAbstract库几乎是纯虚层,其定义了Alembic必须实现的存储层接口(eg,AbcCoreHDF5)。此层定义了 某些概念的接口,比如Objects,Properties,字节数据(byte_size)。更多有关Alembic概念的东西,如Object,Property 在section 2. 这层几乎有所的参数和返回类型都是boost::shared_ptrs,其名字中会有"Ptr"前缀来体现。Boost的共享指针提 供了不需大量手工就可以管理资源的强力方法。从内存管理角度,这让Alembic库更加易用和统一。
       此层中Alembic的一个重要部分就是时间的概念,其形式为TimeSampling,TimeSamplingType类。其不是纯虚类并 提供了丰富的接口处理数据样本的临时组件。这个层中仅有的几个类直接暴露在上面的层中。
       AbcCoreAbstract没打算成为Alembic中初级人性化的数据操作库。那个荣誉属于Abc库。

Alembic::Abc(命名空间简称:Abc)


       Abc库,就像上面提到的,是Alembic中人性化的数据操作库,并提供了来自AbcCoreAbstract层中共享指针的对象化 封装。同时,和AbcCoreAbstract相比,Abc层重新解释了其操作的数据,AbcCoreAbstract层中1024字节的连续数据块, 在Abc层被认为是Imatch::M44d的一个实例。

Alembic::AbcGeom(命名空间简称:AbcGeom)


       AbcGeom层建立在Abc层之上,打算成为以几何意义(PolyMesh,Xforms等)解释数据处理的基本层。虽然Alembic 被分成了多层,但是所有低级命名空间都被提升到了其上面的空间。因此,当用户代码“ using namespace AbcGeom;” 所有来自AbcA或者Abc的标示符,可以直接使用。

关于读写数据的建议

      因为Alembic是一个缓存系统,不是活得场景图,API被大致分成对称的两类:一类写,一类读。在Abc,AbcGeom层 有前缀“O”的类是输出类,有前缀“I”的是输入类。这和C++的iostream分成istreams和ostreams的概念很像。


      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值