【houdini】CG猎人第007期houdini完全基础入门学习笔记-sop海洋和撞车动力学
—— 微资讯 · 微课程 ——
利用零碎时间,走上超神之路!
课程概述
结合sop和pop进行船过海面的模拟案例制作和使用dop动力学制作汽车相撞案例。
学习建议
教程难度 ★★
教程质量 ★★★★
入门教程(高级卷),这里最后面效果不一定渲染,但是确实基于houdini官方文旦的技术的全面讲解,对于基础的全面掌握非常有用。第007课包含了sop和pop结合进行船过海面的模拟案例制作和使用dop动力学制作汽车相撞案例。特别是第二个案例,小编收获了大量的知识点,比如rbdkeyactive节点和modify data的用法,动画和动力学切换问题,如何在obj成绩提取动力学解算的数据,如何使用低模解算控制高模型,如何使用通道进行关键帧的修改,传递和烘焙等。
教程是houdini12的版本,houdini16有了非常大变化,小编担心大家在学习时候会有各种问题,所以小编自己花了2个小时用houdini16把两个案例走了一遍,当然也把里面的变化和问题记录下来。同时也会把小编的工程文件分享给大家,希望大家能够顺利高效地学习。非小白用户可以直接看蓝色字体部分。红色字为houdini16变化内容。
学习统计
教程观看 2倍速度
观看时间 2小时
笔记整理 2小时
练习实践:2小时
学习笔记
06pop和sop模拟船航行浪花效果
001加载模型obj 模型处理:
facet 计算法线或者使用attribute delete节点删除所有属性*,这个是做特效的一个好习惯,避免各种模型问题,输出为bgeo格式。
002创建海洋
grid→point节点,在y轴上使用nosie函数
noise函数讲解 noise(floatx,floaty,floatz)需要输入三个浮点值,关于倍帧,频率和偏移类似于sin函数,a*nosie($BBX*b+$T*0.1,$BBY*b+$T*0.1,$BBZ*c+$T*0.1) a是整体幅度,b是频率 $T*0.1是基于时间偏移。
houdini的point节点已经变成了point_old节点,有一个新的point节点进行设置。
因为有三个元素,每次调整频率和速度需要调整三次,所以小编这里使用了自定义变量进行统一控制
freq波浪频率 speed速度,amp幅度
noise($BBX*ch("freq")+$T*ch("speed")*2,$BBY*ch("freq")+$T*ch("speed"),$BBZ*ch("freq")+$T*ch("speed"))*ch("amp")。
03 让小船模型基于波浪运动
align节点,把小船对齐到海洋的某个点(挑选一个适合的点)并且去掉勾选 align individual element (把所有点单独适配)而是要小船作为一个整体对齐到grid的选择点上。
方向不对可以通过transform标签进行调整。
04获得水花发射范围:
给海洋撒点→scatter撒点赋予黑色→给小船color赋予红色→attributetransform进行元素传递→delelte节点获得小船周围的粒子。
05popnet进行粒子发射
使用海洋作为碰撞平面(碰撞方式使用slide滑动)→给小船trail节点计算速度,并且在attributetransfer中把速度属性传递给发射粒子→popnet中激活继承发射速度,添加向后的速度→force添加速度→collision detect与海洋碰撞→collision detect 与小船发生碰撞→interact粒子之相互排斥力→drag阻力→kill粒子低于y轴-0.1就删除。
06颜色设置
粒子设置为白色,海洋设置为青蓝色。
07刚体动力学效果
撞车特效案例制作
001基本动力学引擎讲解 bullet系统,RBD系统和ODE系统
bullet对于凸面处理很快,但是对于凹面物体(当成凸面处理)不精确
RBDhoudini原生的动力学解算,支持凹面处理,使用碰撞检测
ODE对于基本的几何形态解算非常快。
002地形创建
grid→选择区域→polyextrude挤出→extrudevolume基础地面厚度,用户碰撞→facet计算法线
houdini16后有不少的改动(除了官方宣传篇),这里小编没有使用手动选择面进行挤出,而是通过group进行区域选择,法线group的编辑功能和删除功能已经拆分出来group comibe和group delelte节点,旧版本这两个功能都是在一个group节点上的。在使用volume extrude的之前,polyextrude不能够勾选背面封闭(否则会出现法线不一致的效果)
003加载汽车
模型(高模)→加载代理模型(使用代理模型进行动力学解算,然后把运动信息赋予给高模)代理模型需要完全包裹高模→调整汽车位置→添加颜色进行区分→使用表达式进行动画控制。
004创建动力学
使用terrain obj命令创建地面动力学→分别对两个代理汽车创建RBDobject→rbdkeyactive制作动力学激活切换,在相撞之前使用动画控制,相撞时候切换为动力学解算。激活use obj path中加载代理模型obj
houdini16的动力学菜单已经找不到terrain的这个工具了,所以可以直接在autodopnet中直接tab输入terrain,然后手动链接地形模型,注意merge到汽车动力学时候需要把地形放在左边。
并且工具架中变化很大,第一个rbdobject工具是创建packe的物体,不是教程中的rbd物体,而是第二个命令hero object才是(小黄鸭图标)。
教程中使用了自定义的全局变量$CRASH用来技术碰撞的时候的帧的值,不过这个没所谓,直接使用时间也行,只是之后修改可能要改多次,但是如果使用全局变量就只需要修改$CRASH的值就好了。
005调整动力学物理属性
优化碰撞结果:不想撞飞太高,调整mass质量,旋转显示,控制rotaitonal stiffness,添加drag阻尼,忽略质量影响。
modifydata直接对动力学数据进行修改:设置属性名字 angvel角速度,旋转矢量vector,修改值[0,0,250],activation仅仅在碰撞的瞬间激活。上面这些参数都需要综合进行调整。
06提取代理动力学的运动信息赋予给高模。
在obj节点使用fetch节点分别提取两个代理车的动力学信息,获得两个点的运动信息,然后复制链接到高模中。
注意fecth中关于动力学物体的提取写路径:动力学问题名字,中间是使用冒号的
../AutoDopNetwork:Proxy_crysler
07把父子链接的运动驱动转化为关键帧
复制出一辆高模车(已经没有父子链接运动)命名为 M300 chops。
chop通道,新建object节点,
target 物体就是 Fectch M300(父子链接的高模车) comom标签中设置export prefix输出为M300 chops,,选择变化信息为tranlate和rotation 这样就把父子链接车运动赋予给单独复制出来的车。
在object节点中鼠标右键,激活Edit data channel,打开channel edit窗口,可以对关键帧进行调整/删除.
点击fit panel快捷菜单,调整过滤值torerance为3,最后点击copy to export destination 导出到模型的通道关键帧中。这样就可以对汽车的关键帧进行调整。
houdini16中chop有较大的变化,当你输入object时候有两个选项,object constrain和import,其实两个都可以,只是constraints是隐藏了transform的选项,直接对被控制物体进行全部控制。import节点可以和教程一样设置使用什么通道控制 translate和rotate
关于编辑数据,在houdini15之后已经放在了save /edit data channels中,可以对通道以关键帧的形式进行编辑。但是小编用houdini16一打开就死机,后面改用houdini15.5操作都很正常,点击fit panel面板,和教程里面基本是一致的设置,可以到处烘焙关键帧。
最终,小编只能在houdini16中实现通道的chops控制而是关键帧的传递,大家试试看用这个命令会不会死机(houdini16)来帮sideeffect找一下bug。目前只能在houdini15.中进行练习了。
获得教程的方法: