OpenVDB Cookbook 笔记

代码示例:

https://www.openvdb.org/documentation/doxygen/codeExamples.html#sHelloWorld

Hello World

初始化

创建网格

从网格获取访问器

创建坐标

修改坐标

访问器访问指定坐标

遍历网格

Creating and writing a grid

创建 openvdb::io::File 类型的对象,使用它来读写 vdb 文件

Populating a grid with values

第一步只创建表面周围的 SDF 值,也就是创建一个窄带

窄带的 SDF 值的区间取为 [-background_SDF, background_SDF]background_SDF 是正数,是背景的 SDF 值

按照一定的间隔,跳跃着遍历立方体 grid

遍历到的元素的 SDF 值如果在这个区间内,也就是在窄带内,那么就赋值,否则跳过

具体怎么计算遍历到的元素的 SDF 值,是 (x,y,z) - center 的长度减去球的半径

Reading and modifying a grid

遍历一个 openvdb::io::File 对象中的所有网络,根据网格名字查找到某一个网络

用网格基类存储查找到的网格。如果已知网格子类的类型,就可以直接 cast。

遍历 active 的 grid 元素,这些元素对应窄带 narrow band 元素

遍历 inactive 的 grid 元素,这些元素对应内部 interior 的元素

Stream I/O

写入(读取) string 流或者文件流

Handling metadata

元数据

Adding metadata

添加元数据

重复添加相同的名字相同类型的值,那么就是覆盖

如果是重复添加相同的名字不同类型的值,那么就报错

Retrieving metadata

已知元数据的数据类型,根据名字可以获取值

遍历元数据 map

可以获得元数据的 string 形式的类型名称,进而得知某个元数据的数据类型,进而进行类型转换

Removing metadata

删除不存在的元数据,不会报错,但是也没有效果

Iteration

Node Iterator

遍历树

Leaf Node Iterator

遍历叶子节点

遍历常量叶子节点

转换成引用或者指针

Value Iterator

遍历 active 的 grid 元素,这些元素对应窄带 narrow band 元素

遍历 inactive 的 grid 元素,这些元素对应内部 interior 的元素

Iterator Range

怎么使用 tbb 的 parallel_for 并行执行任务

首先要输入 openvdb 提供的迭代器

然后要自己创建一个重载了括号运算符的结构体

输入这个结构体作为任务

这个结构体的括号运算符的重载就是任务主体。它接受一个迭代器
,这个迭代器的范围是由 tbb 划分的,原始迭代范围的子区间

Interpolation of grid values

需要在分数坐标的值的时候,就需要在整数坐标的值之间插值

GridSampler 用于插值

GridTransformer 用于对所有值进行变换

Index-space samplers

在索引空间中插值

零阶插值 最近邻

一阶插值 线性

二阶插值 二次函数

通过树 grid.tree() 来访问是线程安全的,但是因为没有缓存,所以是次优的

最佳的是通过访问器,例如 grid.getConstAccessor()

因为访问器采用了缓存

也因此,访问器必须是一个线程一个访问器

Grid Sampler

GridSampler 可以在索引空间或者世界空间中插值

使用网格来构造 GridSamplerGridSampler 会自动获得索引空间到世界空间的变换

但是使用树或者访问器来构造 GridSampler,需要提供变换

用访问器构造 GridSampler 更快

Dual Grid Sampler

有些时

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值