使用Houdini制作风格化树
网上有很多制作风格化树的教程,不过大多是建模软件手动处理。我分析了下制作过程,使用Houdini程序化去处理。
B站链接:https://www.bilibili.com/video/BV15L4y1q74a
视频是一年前的了,评论都是求教程的,那就写篇教程吧_(:з」∠)_
渲染方式
1.插片模型,双面渲染
非常常用的制作方式,网上教程很多就不多说了,直接放截图(和视频里不一样是因为录完我又改了材质)
2.特殊UV模型,公告板渲染
渲染思路来源:https://www.youtube.com/watch?v=iASMFba7GeI
核心就是模型的每个四边面都要用整个UV空间,且使用硬边。每个面(叶子)当成独立公告板渲染。视频里使用的是unity,我用的是unreal。
World Position Offset
Unreal屏幕坐标原点在左上角,所以UV坐标从0-1转换到-1-1时,需要翻转V值
相机空间转换到模型空间,此时可以添加一个缩放参数(叶子尺寸)。然后再从模型空间转换到世界空间,添加顶点法线上的偏移增加一点变化。最后给一个整体的缩放值。
加入风力抖动
Base Color
基础色和偏色混色,混色Alpha根据顶点法线和顶点上烘焙的AO信息(如果有的话)计算
Emissive Color
自发光模拟边缘高光
Opacity Mask
叶子alpha蒙版
程序化建模
不同模型对应的是不同渲染方式,片状指的是用插片,块状指的是特殊处理UV的模型。
Houdini也有生成树的工具,虽然偏写实,但是有些思路可以借鉴参考(Labs工具中真的可以学到很多技巧)
Houdini Labs quick basic tree
整个工具并不复杂,分成下面几块。
树干曲线
输入初始主干曲线,设置pscale(树干粗细),lift(分支抬起角度)
选取主干可以生成分支的区域,生成几个一级分支就循环几次。
另一边设置分支曲线,和主干一样的处理,这里旋转曲线朝向Z轴,方便后续根据主干上点的法线方向copy to point分支曲线。
重新计算点的法线方向,添加一些随机变化,lift属性在此处用来控制倾斜角度,随机选择一个点作为本次循环分支。
使用主干上point的pscale属性缩放复制分支曲线,bend曲线,capture的Length是分支曲线的长度。
同理制作二级分支,这里加了个小处理是有一定概率不生长二级分支,是否有二级分支整体做了个switch。当然可以做成循环,做更多层分支,不过是做风格化树,枝干一般不会特别多层,所以我这里偷个小懒。
分支比主干pscale更小,合并主干和分支曲线。
最后给曲线加点noise,就完成了树干曲线。主干底部需要处理下最后的旋转,我这里还略微加粗了一点。
树干模型
sweep曲线得到树干模型
根据像素密度重新计算UV,调整UV大小旋转(匹配贴图),添加材质属性。
树叶大型
选取主干分支的末端
每个点周围继续撒点,控制撒点范围的shadpe和size,这会影响整个树冠造型。
Particle Fluid Surface节点可以根据点生成表面模型,重新计算表面法线,blur一下法线更柔和。得到树冠轮廓,之后可以用它来传递法线(参考球形法线)和AO。
在原来基础上再做些小球,给树冠造型更多小变化,得到树冠大型。
片状树叶
插片树叶模型,也可以导入外部模型。
根据树叶大型撒点复制树叶,调整树叶数量,大小,朝向。
用树冠轮廓传递法线和AO信息
块状树叶
树叶大型删除面只保留点,重新计算粒子流体表面后减面。
细分平滑,保证每个面都是四边面,计算AO和法线。
计算每个面的UV,使UV平铺整个UV空间,使用Vex直接指定UV值。
加了点随机,UV原点可以是四个顶点任意一点,这样UV会有旋转变化。
树叶材质路径
最后删除多余属性后合并输出,大功告成。
总结
除了调整HDA参数,调整曲线也可改变树的造型(感觉当初标题就应该取得大胆点,几秒一个!)
这是一次渲染知识与程序化知识结合的小测试。HDA中某些处理是为了渲染服务,理解整个制作过程,模型和材质都正确才能达到好的效果。另外,个人感受是不用过度追求程序化,完全随机可能不是美术想要的结果。合理拆分模块,比如树干和大型也可以直接用DCC软件制作,导入Houdini进行后续处理,这样得到的树造型更可控。