前段时间在maya的智能材质开发的时候,用到了vertexColor顶点着色,在绘制一些材质通道的时候很管用。大家都知道,vertexColor在游戏里的应用已经是很早的事情了,自然UE4这块的功能肯定也不会差的,于是,昨晚就抽空测试了一下,挺方便,只要把Vertex Color节点正确加入材质网络,启用Mesh Paint工具组,就能在场景模型上畅快的绘制材质了。下面来详细说说。
1.准备阶段
先在maya里做一个方形的地面,方便平铺对接就可以了,当然你也可以直接使用UE的地形。这里需要注意的是模型的顶点尽量均匀一些,不然绘制的VertecColor精度就不高。
将maya模型输出FBX,在UE4导入时,去掉Generate Lightmap UVs 后面的勾,因为我已经在maya里做好了光照UV。
导入的模型网格顶点数要有合适,理论上顶点数越高,VertecColor的精度就越高,但是太高消耗也会随之而来,所有够用就好。这里没有具体值,大家在生产中看情况办吧。
这个小练习就用了两层材质纹理,如图Content导入了下面的五张贴图,如果需要制作更复杂的材质混合,可以多加几组贴图进来。这张黑白图是在图片软件混合出来,主要为了制作法线高低变化时材质纹理混合的细节效果。
创建一个材质球,命名:stoneRoad,(各位自己看着来啊),同时转出实例材质。
2.材质连接
接下来就来看看材质网络是如何一步步连接完成的,首先要在材质编辑器创建一个vertexColor节点,作为草地纹理和石头纹理的通道。将输出结果给到材质球的BaseColor。
模型给上材质后,在工具栏启用MeshPaint,位置就在地形工具的下拉菜单里,点小三角就能展开看到了。
可以简单设置一下参数,笔刷大小、强度、衰减等,绘制颜色Vertex Painting,练习中选的是Red红通道。
3.增加材质通道细节
上面已经完成了基本颜色的混合,效果很平,笔刷轮廓也比较粗,为了实现跟细致自然的混合,例如在石头缝隙里有草皮,石头上自动避开草皮。这事就要创建下图的材质网络,做为混合的通道。
混合通道网络里有一个可调的常量,实例材质可以直接调整,视窗中可实时查看纹理混合的细节变化。
为了进一步细化材质纹理效果,下面继续增加了Normal, Specular , World Displacement,节点网络数据。
带有法线信息的材质效果。
这里有一点要注意一下,置换需要在材质球的属性栏Tessellation,将D3D11Tessellat更改为Flat Tessellation。这样材质球上的属性才会被激活。
最后还需要给材质添加UV坐标信息,以便后续能控制贴图的平铺次数,得到纹理比例正确的地面效果。如下图:
现在可以激活实例材质上的常量参数,调整一下材质的属性。
VertexColorPaint的材质网络到此差不多了,为了艺术家调节参数时候方便,这里可以对自定义的常量根据具体的含义进行分组。看上去就一目了然。选择相同的常量,将Material Expression下的Group进行命名,例如stone。
最后完整的VertexColor Paint材质的完成网络如下,这个材质给到模型后,就能对模型进行材质绘制编辑了。
4.种植与后期
为了得到比较丰富的地面效果,我从其他文件迁移了一些资产过来,对地面进行了简单的种植,详细步骤请参看seVen笔记相应的文章,有详细介绍过种植工具Foliage的使用技巧。最后添加PostProcessVolume,简单做了一点后期调整。
好了,以上就是昨晚对UE4顶点着色Vertex Color Paint在材质网络中的应用测试,希望能对大家有所帮助。
欢迎回顾往期文章
UE4 customSkyDome 自定义天空球
UE4自发光效果应用(一)
UE4 maya相机导入与Sequence渲染
UE4 Decal贴花
UE4 Volumetric_Cloud测试
UE4植物放置工具Foliage
UE4水材质(一)
UE4与WorldCreator联合制作地形(一)
UE4真实地形--HeightMap
UE4与speedTree——导入篇
UE4智能地形材质--基础篇
UE4资产与地形自动融合