HOU211学习总结

来源:互联网 发布:淘宝达人如何合作 编辑:程序博客网 时间:2024/05/29 11:48

关于fxphd HOU211 - houdini ocean effect的学习总结

*分类进行总结,非按流程顺序

类别分为:
boat(geo/ani),
ocean_procedual,
ocean_sim,
foam,
white_water


boat_geo

这里要做的事情就是设置碰撞体,将不必要解算的东西删除,等一些列的cleanup,合并点,加N之类的,没什么好说的。

boat_ani

这个教程中的做法还是值得学习的,用sop模拟出boat在海洋中上下颠簸,牛逼的是还能配合海浪起伏。
具体做法:
1. K一个船的基本的行驶方向;
2. 就是在穿身底部建一条线,让这条线,跟随船移动(可以依据船身的bbox建立),resample 3个点即可(3个点足够反映船随浪的运动趋势);
3. 让这条带有船基本运动方向的线的点紧贴海洋表面,可以用wrangle的intersect方法(vop也可以,wrangle计算比较快),同时带有海洋表面的N,用attribute promote的方法平均这三个点的P,N,变成一个点,让这个点带有平均后的P,N;
4. 根据点的N利用2次cross product,计算出aim,up(N),side,up就等于N,用float to matrix转成一个3*3矩阵,将aim,up,side视为x, y,z坐标系,再利用extract maxtrix求出translate,rotation,给到obj层级下的null obj用作locator,建立一个geo里面包含静态的船,作为locator的子物体;
这里写图片描述

5 这样会发现船运动不够平滑,因为translate和rotation都是根据点的N算出来的,所以在chop中用geo节点导入N属性,用filter节点平滑,配合lag节点做船运动的延迟效果,最后在sop用channel节点导入平滑好的N;
*进入chop之前,需要将进入chop的节点结果做一个cache(cache节点)
*摄像机也可以用这种方法,可以多点平滑和延迟。


ocean_procedual

ocean surface中会有多个grid,ocean_evaluate,但只有一个ocean_spectrum,这里说的ocean_procedual就是一个巨大的grid,只要能覆盖镜头就好. 因为houdini ocean都是考贴图的置换给出的foam和海洋细节,需要实现导出displacement map才会渲染出置换(ocean_evaluate),在rop中用compsite节点back map比较方便. 这样渲染出来因为grid的拓扑是规则的,所以置换的运用都是重复的,需要在sop noise一下grid的拓扑(xz轴).


ocean_sim

  1. 因为教程中建立splash的方法就是用工具架上的splash tank,因此会自动建立ocean sim和white sim;
  2. 在建立发射源阶段需要修改ocean_specturm以匹配原来的ocean,之后让发射源(ocean_source节点)的范围依据船的bbox设置,让source能跟随船运动
  3. 解算阶段没什么好说的,设置好碰撞体和flip的splash的程度就好了
    *增大flip的splash的几种方法:
    (1)flip solver - collision - velocity scale 增大
    (2)surface extrapolation 减小
    (3)velocity smooth 减小
  4. 解算之后的粒子用vdb生成mesh三(可以适当配合vdb reshape sdf),mesh需要保留粒子的v,N,保留mesh 表面,可以用intersect的方法比较方便,速度也快;
  5. 让mesh的边缘有更高的ocean细节,需要事先建立一个高细分的grid带有海洋燥波,导入,用intersect的方法,让mesh投射到高细节的grid上,再与原mesh做边缘的blendshape,将uv属性也传递过去;
    这里写图片描述

  6. 用measure节点计算curvature,结合solver,作出mesh上foammask属性,用到ocean surface shader中的foammask.
    *渲染海洋高细节置换的方法在back map的时候,在该cop下用,先blur 再减去源displace,可以得到相当高的置换贴图.
    这里写图片描述


0 0
原创粉丝点击