Houdini中VDB是什么?有哪些格式类型、VDB性能更好吗?【第十三课】...
40136 4
实名

通过了实名认证的内容创造者

发布于 2023-8-8 10:30:40

您需要 登录 才可以下载或查看,没有账号?注册

x

VDB代表“体积数据库”,这是一种用于表示体积数据的数据格式,如烟雾、火灾、云和其他类型的模拟描述它的最简单方法是体积。它是一种开源的标准化格式,因此您可以从Houdini导出VDB,将其加载到Maya中,然后在VRay中渲染。它有几家公司有助于推动它(Dreamworks,Double负,Sidefx是最著名的)
不过,它不仅仅是Alembic,因为Alembic主要是一种文件格式,还有一些示例工具来操纵和查看Alembic文件。VDB工具包既是存储音量的一种方法,也是一组操纵量的算法
VDB的存储格式在Houdini中以原始的(一个有趣的'VDB原始'的含义)暴露,并且操纵工具被视为SOP,主要是带有VDB前缀或后缀
Houdini支持两种体积类型,它自己的体积格式(也就是-Volume,有两种)和VDB格式volume 体积是voxel 体素集合(模拟像素);图像是像素的集合
1a2323aad4bf1f9e9ae765d6347c259e.png

d20e5148824eabfa753d887d3a772a01.png


【体素】



【volumes】
Fog volume和SDF volume是Houdini自带的不同类型的体积,他们的特点是每个体素都有值
Fog volume实际是储存了每个体素的密度


SDF volume中(SDF Signed Distance Filed 是带符号的距离场),每个体素存储了一个数值,数的值表示到表面的距离,正数代表在物体外,负数代表在物体内,0表示在物体表面(需要精度较高)。所以将几何体转化为碰撞物的时候,实质就是转化为SDF,利用体素的数值来判断是否发生碰撞


#VDBVDB(梦工厂研发,又叫openVDB)是一种较新的开源体积数据类型(可以使用houdini导出vdb给maya使用等),这个里面包含了多种密度等体积数据,是比fog,SDF等更大的一个合集数据
Volume是一种密集的体素存储格式,而VDB是一种稀疏的体素存储格式,只存需要的东西,所以解算起来很快,正在被越来越多的流程使用。VDB为什么快?因为它运行了大量的遍历,能得到一种非常有效的存储结构。先大范围扫描,忽略没有东西的部分,再以同样的方式扫描,层层递进,最终确认到确实有几何体的体素

绿框 – 黄框 – 蓝框 – 红框(确定存储)VDB 不会在空体素上浪费存储空间。与其他格式相比,VDB 在磁盘上的占用要小得多
当体素具有相同的值时,它们将按平铺进行分组您可以在节点vdbvisializetre中看到这种现象。(颜色编码与上图相同!)


检查OpenVDB示例


新方法更有效地创建卷→ VDB (创建雾 VDB)


VDB更加高效,并且能够更好地查找更少的体素(看猪头的嘴)

引用地址:http://fxtd.free.fr/index.php/wiki/volume/
VDB曲线


曲线最大化显示


#绘制Volumevop
节点:paintfogvolume



参数调节:密度、采样、半径等



调整体素大小



手动绘制+球体转换


#Volume Velocity 体积速度



SDF体积与Morph SDF



融合多个几何体【这有点像Zbrush中的ZRemesher】






修改网格细分



添加一些噪波



减面



Volume与VDB区
Volume
VDB
Houdini自己的
开源(Maya、Blender都有用)
只储存Float类型(Float3)
可以储存向量Vector
填满容器
不填满(优点:体积小)

#格式转换Convert To:常用是转换成Polygons
VDB Precision:压缩32、64位
Polygon Soup:优化了polygons体积更下


#VDB vs Houdini volumesHoudini 自己的volumes格式在 VDB 出现之前已经存在了一段时间,因此有大量的节点可以用来处理它们(您可以在选项卡菜单中键入“卷”,在 sops 中看到这一点)。VDB 有自己的节点集合(前缀或后缀为 VDB)VDB 可以大大小于本地 Houdini 卷(节省50% 是常见的) ,而且通常 VDB Sops 比本地 Houdini 卷更快,具有更有趣的特性有一个Vdb 文件格式(用于导出到其他应用程序) ,但不需要写出。为了节省空间,在 Houdini 只要有一个 VDB 原语就足够了。一个 Houdini 卷原语可以随时转换为 VDB 原语,只需放置一个转换 VDB 节点,将其模式设置为 VDB。如果您在节点上中键单击,您将看到用 VDB 替换了卷原语。现在可以将此缓存到。Bgeo 和 Houdini geo 的其他部分一样但是它比你没有转换的要小得多令人欣慰的是,许多核心 Houdini 卷工具也已经更新,可以使用 VDB 原语。例如,音量 VOPS 和音量角度都与 VDB 一起工作。这意味着在任何时候使用 VDB 都相当安全,因为如果需要,可以很容易地将 VDB 临时转换为本机卷,然后再转换回来

#SDF



体积(或 vdb)可以代表雾或火等无定形形状,也可以代表固体表面。当执行后者时,每个体素都会存储到表面上最近点的距离,以及它是否位于该表面的内部或外部。因为这些值可以是分数(例如距离表面 1.42 个单位而不仅仅是 1),所以它们可以给出输入几何图形的相当好的近似值。为了判断体素是在表面的内部还是外部,它变为正值或负值;正为外,负为内。如果将其可视化,它看起来就像形状轮廓上的 0 渐变,以及在形状内部和外部延伸的平滑渐变。该体积称为有符号距离场或 SDF


【正值是红色到黄色,负值是深到浅蓝色】
这对于很多事情来说都很方便。如果您有一种强大的方法来生成 SDF(当然我们在 Houdini 中就是这样做的),那么这是生成用于模拟的碰撞几何体的好方法。粒子或 RBD 对象可以非常快速地对 SDF 进行采样,如果它们的符号为负,则它们位于形状内部。然后,他们可以测量 SDF 的梯度,并准确确定要推动多远和多少才能停止相交。
如果您采用 SDF 并将其转换回多边形,您将获得均匀网格、防水的表面。您可以平滑地扩展或扩大曲面,您可以组合 SDF 并获得非常干净的布尔值,它们在很多情况下都很方便




Houdini 为您提供了 2 种从多边形地理生成 SDF 的方法;本机 Houdini 方式(SDF 体积模式下的 IsoOffset SOP)和 VDB 方式(VDB-from-polygons sop)。我的 30 秒测试表明 VDB 对于更详细的几何图形要快得多Houdini 使用每个体素的精灵来可视化 SDF 体积,其中 SDF 场为 0。看起来它使用 SDF 梯度来导出精灵的法线,因此它们对光照做出响应

#部分引用内容源http://visysl.com/post/graphics/voxel/https://www.tokeru.com/cgwiki/HoudiniVolumes更多深入内容还需大家看更多视频学习此处只是基础简介
本期笔记分享就到这里,我们下期见!

评分

参与人数 4元素币 +29 活跃度 +9 展开 理由
番茄酱子... + 7 + 1 千点万点,不如微元素指点。
houjiajian + 9 + 2 这都没人吗?
椰果 + 10 + 3 好人一生平安
大朋友 + 3 + 3 爱了

查看全部评分

本帖被以下画板推荐:

微信公众号:Game艺视界
使用道具 <
仰空越梦  发表于 2023-8-8 15:15:15  
2#
不错 蟹蟹分享~
回复 收起回复
使用道具
yukigo  发表于 2023-8-8 19:15:54  
3#
沙发!
回复 收起回复
使用道具
qq_萝卜_v7e  发表于 2023-8-9 00:37:34  
4#
1
回复 收起回复
使用道具
kiss2110000  发表于 2023-10-7 12:11:16  
5#
学习了
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表