美文网首页CgTd
Alembic文件格式简介--设计思想和理念 1

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

作者: N景波 | 来源:发表于2016-11-22 11:57 被阅读0次
    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的概念很像。

    相关文章

      网友评论

        本文标题:Alembic文件格式简介--设计思想和理念 1

        本文链接:https://www.haomeiwen.com/subject/vimppttx.html