导言
最近程序化建模的风气在国内兴起,建立好程序化建模流程,通过调参就可以生成丰富的美术资源。可以程序化建模的内容有很多,国外的程序化曼哈顿、林中小屋等都是很好的例子,所有带有规律的模型都可以程序化来做。程序化可以做从0到1,也可以做资源整合,加速开发进度,也降低了美术成本。
目前市面上的dcc工具诸如max,maya,blender等都可以通过编写脚本来进行程序化建模,当然houdini是首当其冲最方便的(别的我也不会丫)。
所以我也来凑个热闹,从最小的石头开始进入程序化建模的世界。
注:这篇文章主要是为了介绍一下程序化的流程,详细的石头细节制作方式点关注然后期待吧!
准备部分
这里我们不需要用到hda文件和houdini engine plugin,所以这部分还是回头去看看地形部分相关的内容吧~
键盘侠·伍德:Houdini Terrian & UE4 (一)基础的地形工作流zhuanlan.zhihu.com但是这里除了安装houdini以外,还需要安装官方的gamedevtool哦!
sideeffects/GameDevelopmentToolsetgithub.com下载后按照说明加载到houdini环境即可。
Step 1 基础形状
这里我用一个球来开始我的石头制作,增加面数后用montain节点来做一个大幅度的扰动,然后通过softtransform来压扁一点。
注:球半径设置在0.5,加快后面的生成速度。
Step 2 通过SDF来增加石头纹理
这里其实有两种选择,一个是继续用montain或者point vop来在polygon上增加扰动,但是很容易出现穿模的问题,需要反复修正很麻烦。
所以我们干脆直接用SDF来增加扰动,SDF(signed distance field)是houdini种volume的一种,通过voxel的surface属性来表达到表面的有向距离,具体细节自行查阅文档吧~
这里我们SDF的粒度被设置在0.002,粒度越高细节越多但是计算也会慢很多。
VDB Activate SDF是用来激活SDF范围的,值越高,SDF的扩展范围越大,后面计算就不容易出现镂空的情况。
增加完纹理后我们再把SDF转回到polygon即可。
Volume VOP是我们用来添加噪声的节点,想要让SDF的surface属性能够绑定到density上,记得按下图勾选哦!
vop种有多种样式的noise节点,aanoise worleynoise等,但是最喜欢的还是这个unifiednoise,它内置了足够的可调参数。记得这里的各种ampitude参数都是在0.001这个级别的,一下模型看不见了不要紧张!
关于各种noise的含义,给大家推荐一下扣脚大佬的文章!
YivanLee:虚幻4渲染编程(程序化纹理篇)【第一卷:UnrealSubstance工具节点搭建---噪波】zhuanlan.zhihu.com总之。通过一波noise操作,我们就可以得到一个(有点像样的)石头了。
当然在最后,我们可以通过point vop来增加一些细节上的单向扰动(模拟水蚀或者风蚀),这个节点稍微调一点参数就很出效果的!
最后记得把模型移动到中心点哦!
Step 3 烘培低模
上面生成的polygon少说几百万面,肯定是无法作为游戏中的模型直接使用的,所以我们要把它烘培到地模上。
左边一绺就是创建地模的过程,还是利用SDF,粒度大一点,一次来回就能得到面数较低的模型了。remesh是用来吧模型三角化的。然后normal来区分软硬边。
sop_autouv就是gamedevtools里的一个节点,可以自动展uv。
右边的montain2是用很小的噪点来最后一次为模型增加凹凸感的。
最后利用simple baker节点,把高模上的细节烘成地模上的各种贴图。
点render制作各种贴图!
Step 4 导入UE4
模型导入ue4的时候记得先放大,毕竟两个工具的距离单位不一样。
贴图直接导入即可。
做一个简单的材质球,把贴图放上去,就可以看到引擎内的效果了。
我们也可以加一点石头纹理的贴图上去,做一下表现。
总结
一个程序化石头的基本流程大概就是这样了,其实烘培的过程都大同小异,想要出效果就得在noise阶段下功夫了,容我继续慢慢研究慢慢写!(不点赞不关注还想白嫖?)
“志之所趋,无远弗界,穷山距海,不能限也”。