TP节点通用场操作符节点
APF(通用场)的概念
thinkingParticles通用场操作符(简称APF)代表了一类全新的操作符节点。APF操作符作用于3D空间中的单个网格(cell)(体素voxel),以3D网格结构组织。这些三维网格单元结构被合并到场(field)中。每个3D场都包含动态数量的网格单元,其中每个网格都可以包含与其所处空间位置相关的信息。
网格(Cell)
APF网格始终是且只能是立方体,不能以任何其他形式或形状存在。当数据存在时,将在三维空间中动态创建网格。这意味着网格不需要以规则的网格形式存在,如果在此类空白区域中没有创建数据,网格之间可能会存在较大的空白。thinkingParticles可以非常高效地处理空白空间,而无需花费大量内存来存储更大的场。
所有基于网格数据的空间操作都在网格(体素)的中心执行,没有基于位置对网格数据进行操作的操作符。
网格数据的插值是用8个相邻网格完成的,如果一个网格是在空白空间中创建的,则会自动创建额外的网格,以允许正确插值该网格数值。
网格总是轴对齐的,不能以任何扭曲或旋转的方式存在。
场(Field)
多个网格组成场。只要有足够的内存,thinkingParticles中可以有任意数量的场。每个场都是一个封闭的实体,不会直接影响其它场。但是,在将数据输出到粒子之前,从多个场读取数据并组合这些数据,可以组合场或在它们之间创建交互。
场要么是静态的,从不更新,要么可以为每个子帧更新,要么仅在模拟开始时更新。根据创建场和填充网格数据的方式,创建填充数据的三维网格可能非常耗时,thinkingParticles允许您将3D体积场缓存到硬盘,以便更快地访问和使用。thinkingParticles中用于存储和管理3D体积数据的文件格式基于名为OpenVDB的行业标准。在3ds Max中,缓存的场数据可以实例化地赋于其对应位置的粒子。。
OpenVDB是一个获得奥斯卡奖的开源C++库,包括一个新的分层数据结构和一套工具,用于有效地存储和操作三维网格上离散的稀疏数据。它由梦工厂动画公司开发和维护,用于故事片制作中通常遇到的三维应用。通过实现OpenVDB行业标准的thinkingParticles,可以在多种3D应用程序之间交换3D体积数据。
每个3D场仅包含一种数据类型。场可以存储通用向量、速度、颜色和更多其它数字数据类型。
例如,场可以由粒子控制,粒子可以指定场的位置和寿命。在创建和缓存由粒子创建的多个场时,这种灵活性带来了一点挑战。OpenVDB将每个场存储在一个文件中,如果该场随时间变化,则每帧或子帧存储一个文件。多个场缓存文件将使用特定的命名约定,以确保以后缓存文件可以与thinkingParticles中的任何其他节点一起使用。。
在存储单个场时,将使用以下命名约定创建一个文件:[Name_+帧四位数帧号],例如:test_0006.vdb
缓存多个由粒子引入的场时,每个场都将遵循以下命名约定:[Name_+场编号+帧四位数],例如:cube_apf_P0_0154.vdb
注意:
使用任何类型的APF创建场景时,请确保APField操作符是层次结构中的第一个。
通用场操作符(APField operator)
APField operator是一种先进的“卫星”式操作符,可以跨多个动态集使用。其他APF操作符依赖于该操作符。应用这种新APF节点的原理与新物理或流动解算器的原理类似。该容器保存所有数据和核心设置,而其它操作符向其提供数据或从中读取数据。
每个3D体素场场景设置需要至少一个APField操作符和一种初始化方法