使用烟雾材质也可以给whitewater: billowy smoke材质
uniformvolume是一种高效的渲染方式,需要指定粒子而不是volume,但是要注意粒子的pscale
使用烟雾材质也可以给whitewater: billowy smoke材质
uniformvolume是一种高效的渲染方式,需要指定粒子而不是volume,但是要注意粒子的pscale
使用体积渲染whitewater: 先定义density属性,然后栅格化成体积.
要给这个体积计算法线,不然无法渲染反射高光
使用VDB combine,反转density,再使用VDB analysis计算把标量density转化成vector,输出name,再和初始的density场合并,就可以正确渲染反射和高光
foam标签下 clumping结块选项开启的话 初衷是为了whitewater更有凝聚力,在大型洋面上可以打开,但是这条2米的小河流打开的话会使之失去细节
repellants驱避剂选项: 让foam粒子呈现块状之间相互排斥的状态:
feature size range:默认0.5~0.9是适合海洋的一种范围,缩小到0.1~0.2后更真实,底层其实是一种排斥粒子,来打散whitewater,可以再object repellants选项中打开可视化
strength range:排斥的力的大小
noise range:有的范围受到噪波影响,有的没有,设置成0.8~1,可以让所有粒子都受到影响
life range排斥粒子的持续时间:是按秒计算的
adhesion附着力选项栏:控制的是泡沫附着在表面的情况
control range:粒子距离surface距离,提高来吸附更多粒子到表面
off velocity angle:速度矢量和surface的夹角,小于xx数值则被吸附到表面
emission标签
lifespan:粒子出生的寿命,这是个按秒计算的数值
solver解算器下高级选项中: aging rates,可以单独控制粒子的存活概率(其实没什么用)
base advection strength:基础平流的力,如果想粒子更多的随流体表面平流,不要那么松散,想要更激烈的平流,则可以提高这个值
base velocity multiplier: 提高来获得更大的速度,在平流之前加速vel场
whitewatersolver需要emission源,指定SOP中制作的源,还需要两个场,直接在solver中添加,surface和vel,勾选import volumes选项导入进来,才可以在object里导航显示
limits中设置: 设置边界大小,设置碰撞SDF
whitewatersource节点设置:
curvature曲率:曲率越大的地方发射的粒子数越多
acceleration加速度:加速度越大的的地方发射粒子数越多
vorticity涡旋:涡旋速度越大的地方发射越多
emission发射器选项:设置速度阈值,还可以钳制whitewater的产生高度(水下的气泡)
Volumes中voxel size调节密度将直接影响到发射速率和数量,降低来获得更多细节
打开Visualization选项来预判断粒子,但这不是真正的粒子
回顾:removeprim需要三个参数
removeprim(哪个输入接口, 哪个编号的面, 删除面是否同时删除点)
particlefluidsurface output节点adaptivity自适应选项: 在大面积不需要细节的地方大幅削减多边形数量,在高细节的地方不做什么改变, 提高此数值,来适当减少多边形数量
fluid compress底层干的事情:
particle fluid surface:voxel scale节点,体素的边长,是这个数值乘以上面的粒子间距得到的,例如粒子间距0.1 voxel scale为0.5 则体素边长为0.05
droplet scale:粒子pscale的倍增器,如果粒子有pscale属性,则可以用来倍增,来确定最终的水滴的mesh有多大
产生splash的三个条件: 1.粒子速度达到阈值 2:沿着Z轴负方向 3:在创建的splash mask体积内. 三个条件同时达成,才把粒子变成splash粒子
vop中,volumesample节点把output2的体积导入进来,将P连接到samplepos节点,来采样这些粒子
在VEX中使用noise:
参考http://mrkunz.com/blog/03-04-2017_Using-noise-in-VEX.html
float vop_fbmNoiseFP(vector4 pos; float rough; int maxoctaves; string noisetype)
vop_fbmNoiseFP:噪波函数名称(施加噪波的位置, 粗糙度,噪波高度,噪波类型)
VOP中使用noise需要先#include一个脚本
频率freq:在pos后乘以一个数值就可
振幅amp:整个函数之后乘以一个数值就可
偏移offset:在pos*freq后减去一个数值就可,但是offset是vextor4,定义vector后需要转化
Gas Vortex Confinement节点,给已经产生的卷曲产生二次卷曲
这个节点需要binding confinement场来控制,在splash rocks周围创建场来控制
vdb from particle下面选择+号,选择density,手动输入density,不要勾选上面的fog VDB,这样的话density值就可以是上面手动设置的density值了,可以得到渐变的效果
opinputpath表达式 返回链接到指定输入接口的节点的完整路径
opinputpath(".", 0) :返回第一个链接的输入接口的路径
sop scalar field里,导入sop中的控制场,由于这是一个静态的场,所以set initial就行了,如果是一个动态变化的场,则需要改成set always
勾选use sop dimensions选项,才能成功加载这个场,记得修改data name
思路:
流体解算器解算会出现surface场,就是SDF场,通过这个场来复制一个temp场,通过turbulence影响这个temp场,来影响粒子运动.
需要gasmatchfield节点来复制surface到temp
需要gas sdf to fog节点来把SDF转化成体积
需要一个scalar field vis节点来可视化这个temp场,也就是fog后的surface场
使用gas turbulence节点来影响temp场
准备创建两个turbulence来影响,一个低频,一个高频
turbulence全部施加在河面上的话会有点怪,需要重新创建一个场来控制turbulence,哪边影响大一些,哪边小一些,下节课中讲
padzero函数: 两个参数
padzero(加上0后一共几位, 在谁面前加0)
padzero(5 , 66) = 00066
padzero(4 , 234) = 0234
particlefuidsurface节点,第二个输入接口可以输入河床几何体,在regions标签下勾选subtract collision volumes选项,可以删除和几何体穿插的地方,是个很好地功能
DOP IMPORT中导出,objmask中必须输入准确的obj路径`dopobjscreatedby("../dopnet_flip_sim/flipobject1/")`,不然会把碰撞obj也导出来产生错误.
Geometry Data Path中输入Geometry/Visualization,可以看到DOP中的可视化效果
xyzdist函数:当前循环中的每个点,去查找第二个输入接口的最近的点
float xyzdist(和哪个几何体做计算, 从这个几何体上哪个矢量来计算)
float dist = xyzdist(1, @P);
if(dist < xxx){
removepoints(0, @ptnum);
}
flipsolver标签下 :
particle motion:
behavior标签下,勾选增加粒子ID属性,这样粒子才会有ID
reseeding标签:每个体素中重新添加粒子,这个标签关闭,因为会大大占用内存,直到超出内存,这个标签是用来防止volume损耗的,太拥挤的时候也会去删除粒子,开启的时候,流体发射最高水位会坍缩,所以还是关闭来一直保持最高水位
separation标签关闭:这个标签打开会使粒子保持特定间距,特殊情况下为了推开粒子会让他开启,这里关闭就可以
Droplets水滴标签:splash产生才需要用,这里暂时关闭
Vorticity涡流标签:需要开启,尽可能去模仿现实流体的运动
Volume Motion:
smooth surface选项: 关闭:使用可以更精确追踪流体的SDF, 可以给舒缓的流体更平滑的表面状态,但是打开的话提升效果没有那么明显,比较占用内存,河流/瀑布中关闭
Viscosity粘稠标签关闭,这里不模拟粘稠的液体
Solver标签下: Use Preconditioner使用预条件容器选项,默认开启,但是一般都是关闭,如果电脑有超过4个内存插槽,则关闭这个选项(很奇怪的条件),使用OpenCL可以加速这个场景模拟
!!!!houdini18中,Use Preconditioner默认已经关闭
flipsolver使从上到下 从左到右进行的一种混合解算器
flipsolver中 volume motion标签下,有个子标签volume limits,其中可以改边界框大小,flip粒子超出这个框就会被杀死
points from volume节点:从体积中创建点,这竟然可以直接使用在polygon上,直接从中间创建点,其中point separation标签,点的间距,这是一个世界单位
这个节点做的功能就是先把几何体转化成volume,再基于separation来分布点
调节jitter seed和scale来使点分布更加随机!
"../copy1"
\\..导航到别的节点 一个点导航到自身
txtport
键入 exheip xxxxx 弹出来对应的 帮助 和鼠标停留是一样的 可选择 翻译