本篇讲如何配合使用Houdini和UE4,来将现成的素材用在自己的地形上。

Houdini部分我们会直接从预处理好的Heightfield开始,关于如何处理可以参考我的另一篇文章的“地形处理”部分https://blog.csdn.net/qq_42219469/article/details/108262472

UE4部分(1):素材的获取与规划

首先,我们可以去epic商城下载到好看的素材包直接导入到现有工程;或者下载完整demo,将demo工程内的Content文件夹移动到现有工程内。

例如下面两张图(前者是素材包,后者是官方的demo工程)

添加完素材后,我们打开UE4工程,打开素材中的demo地图:

先在Outliner中选择地形,然后拖动Details面板到Landscape Material,点击放大镜,下方Browser中就会出现该材质的位置,记下该位置。

然后按shift+3打开地形页面:

选择面板中的“Paint”,然后查看下方有哪些Layer(这些Layer即为Material中绑定的Layer)。

由于我们需要利用Houdini进行程序化生成,而不是手动刷Layer。所以我们需要在Layer列表中观察,找出我们需要的所有材质,并记住对应的Layers名称。

这次我们做一个带小斜坡的平原地形,所以这里我们选择使用Layer_3和Layer_5,分别用来刷到斜坡和草地上。

Houdini部分:地形Layer生成以及材质绑定

接下来,我们在Houdini中使用强大的Heightfield Mask by Feature节点,依次进行如下流程:

创建一个Heightfield Mask by Feature节点,选择Mask by Slope,然后调整下方的两个参数(最小和最大角度),使红色区域覆盖到我们的所有斜坡(红色区域为Layer覆盖的地方)

此时,该Layer存在我们的mask层中。(注:mask层相当于我们的临时工作区,每制作完一个Layer,需要将其另存为一个新Layer,才能在mask层中进行下一个Layer的制作)

我们创建一个Heightfield Copy Layer节点,将目前的mask拷贝到一个新Layer上,并在Destination属性写上该Layer的名字,注意该名字需要和UE4中记录的一致。由于这次我们创建的mask是斜坡,由前面步骤可知,这里要写上Layer_3。

由于我们这次只需要生成两个Layer,即地图上不是斜坡就一定是草地,所以我们可以用取巧的方法,在刚才的mask基础上创建一个Heightfield Remap节点,并进行如下的设置,将当前的mask进行0到1,1到0的倒转映射。

完成之后可以看到mask中红色区域和白色区域交换了,这时我们就可以再次复制mask到新的Layer中,这次Layer为草地,所以命名为Layer_5。

制作完所有Layer后,我们在节点中点击信息页面,可以看到:除了Layer_3,Layer_5,height,mask之外,还有许多不认识的Layer,这些都是之前我们的地形处理节点(如Erode)悄悄添加的,后续用不上它们。

所以我们创建一个Blast节点将没用的Layer全部删除,我们只保留高度层和自己创建的Layer。设置如下,Group中列出需要保留的Layer,然后选择Delete Non Selected即可。

最后,我们添加一个unreal material节点,用来导入unreal中的材质,这样HDA所cook出的地形会自动绑定上材质,注意下图中参数面板中的String。

把这个String拖到subnet-Type Properties中的Parameters面板中暴露给ue4方便更改(这里改了一下其Label)。

设置完成后保存hda,回到UE4。

UE4部分(2):材质的修改与调整

在UE4中将hda拖进场景生成实例,然后打开details中的参数面板。新加的String参数需要我们在ue4中对要用的材质(即我们先前在demo地图中记下的材质)点击右键,选择Copy Reference,然后直接粘贴进去即可。

 

在ue4中recook,效果如下

可以看到Layers起作用了,不过有点丑,跟素材demo差距过大,因为地上并没有草。

有些材质会自带草,但对于不自带的,我们也可以按以下步骤自己加。首先双击打开我们使用的材质球,如果是instance就点击Hierarchy,选择打开它的原始材质球。

PS:原始材质节点中同样可以找到材质绑定的全部layer列表,可以再次对比确认

接下来我们在空白的地方创建两个节点:LandscapeLayerSample和LandscapeGrassOutput并链接它们

首先把sample节点的参数改成你想添加草地的layer名字(这里是Layer_5)

我们点开LandscapeGrassOutput节点参数面板中的两个小三角,发现需要放进一个Grass类。

如果素材中没有的话我们接下来手动创建一个,首先在Content Browser中右键,选择Foliage-Landscape Grass Type。

双击打开它,然后点击Grass Varieties右边的加号,如果想要植被多种多样,就多点几次,对每个新增元素单独修改即可。

点开新增元素的小三角,同时在Content Browser中找到素材中的植物模型,选择自己想用的赋值给Grass Mesh,同时还可以修改下方的Grass Density改变其分布密度大小(例如草坪Density较大,花朵Density较小),顺便注意一下下方的Start/End Cull Distance,等会可能会回来调整。

注意下方还有个Cast Dynamic Shadow建议关掉,会极大影响性能

这边我加了一种草和四种花,草的密度为默认400,花的密度为10-20。做好后将整个类赋值给之前的LandscapeGrassOutput节点,然后recook地形。

可以看到草地Layer的地形自动加上了草和花,而其他Layer没有。注意到远处的草地没有植被,这是因为UE4为了性能会剔除掉远处的物体。如果不想它们被剔除,可以回到刚才的草地类型编辑页面,将刚才提到的Start/End Cull Distance参数修改大一些。(为了性能可以只对草坪进行修改)修改完效果如下

加上之前撒上的树。

总结

重点是在Houdini中为HeightField添加各个Layer,且Layer名称与材质球绑定的Layer对应,然后使用unreal_material节点即可。

其他风格的素材都可以参照这个步骤来使用,从而做出自己想要的地形,创建复杂的多层Layer需要灵活使用Houdini Heightfield Mask by Feature(或by Object等等)节点,使用时请参考官方文档。

按此文章流程生成的最终地形重复率较高,有点不自然。可以尝试在Houdini中制作多层Layer加权混合,尽量还原出素材demo的样式。制作时还可参考下图在demo地图中打开Layer Debug模式,选择不同Layer的RGB显示,来查看demo中的Layer分布。

Houdini+UE4制作好看的地形(材质篇)相关推荐

  1. 如何用UE4制作假透明冰块材质

    冰块是大家生活中必不可少的东西,但是要在引擎中还原出冰块的质感和物理属性却是比较困难的,我这边也只是用了些简单的方法进行模拟,下面就给大家讲下制作流程.先给大家看几张近距离的图片. 较为透明的冰 透明 ...

  2. UE4/UE5 虚幻引擎,材质篇(一)

    1.自发光材质 2.闪烁灯光.呼吸灯 3.流动的材质 (比如流水灯) ●有颜色贴图的 ●没有颜色贴图,只有黑白贴图的,可以自己设置一个颜色. 4.物体燃烧的材质 4.1 .材质Blend Mode 混 ...

  3. 如何用UE4制作2D游戏文档(二)——资源篇

    一.前言 首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容. 视频指路:https://www.bilibili. ...

  4. 如何用UE4制作2D游戏文档(一)——基础篇

    一.前言 首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容. 视频指路:https://www.bilibili. ...

  5. 计算机能力怎么填制作ppt,PPT制作108式 篇一:如何制作好看的PPT?掌握这些小技巧,快速制作专业PPT!...

    PPT制作108式 篇一:如何制作好看的PPT?掌握这些小技巧,快速制作专业PPT! 2019-04-01 14:30:57 7点赞 76收藏 3评论 日常生活.工作中,我们免不了要参加会议或者是工作 ...

  6. UE4蓝图案例:制作实时反射镜面材质

    UE4蓝图案例:制作实时反射镜面材质 UE4版本 4.7.6 通过蓝图来制作实时反射镜面材质 一.新建一个空的项目 如图1 二.向场景中添加[Modes]->[Basic]->[Cube] ...

  7. 如何用UE4制作2D游戏文档(三)——角色篇

    一.前言 首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容. 视频指路:https://www.bilibili. ...

  8. UE4--材质地形篇——地形材质的运用(混合材质)

    引言 我们所做的的地形材质都是多种多样的,有的地形是山地,其中可能有植被与岩石:有的地形是荒漠,它就包括了泥土与沙子.总之,其中材质远不止一种,那么我们如何创建多个材质组成的混合体呢? 我们创建材质的 ...

  9. ue4网格转地形_UE4教程:创建地形材质

    文件夹设置 完成地形的造型后即可为其添加材质,使其与现实世界中的地形相似. 在执行操作之前应先对文件夹进行设置,以便存储创建和迁移的内容. 在教程的此部分中,我们将创建以下四个文件夹. 如需了解在虚幻 ...

  10. UE5笔记【十四】漂流者游戏制作【一】地形材质准备

    针对游戏的剧情设计:角色流落荒岛,寻找食物和水,等待救援.只有按时找到才能存活.否则游戏失败了. 新建一个第三人称游戏.可以将项目名称命名为<CastAway> 启动Landmass插件 ...

最新文章

  1. 引进博士:118万安家房补+18万经费;硕士:42万安家房补+10万经费
  2. 防火墙(二)SNAT和DNAT
  3. Docker上的虚拟网络-Weave Net
  4. php的server和location,3、Nginx关于server块和location块的配置
  5. 报名本科学习了,又报考了研究生考试了!!
  6. Go进阶(3): 函数+闭包+defer
  7. 百度搜索与推荐引擎的云原生改造
  8. 使用 Hyper-v 虚拟化域控制器
  9. ASP.NET 经典60道面试题
  10. wxPython练习
  11. YII2 使用curl请求,返回false
  12. java定义一个描述三角形的类_用java语言定义一个三角形类 Triangle ,
  13. 计算机文档加密如何解锁,电脑提示文档已被administrator锁定怎么办
  14. 信息安全论学习笔记(一):绪论
  15. 2022数学建模美赛B题详细思路获取
  16. A systems-biology model of the tumor necrosis factor (TNF) interactions with TNF receptor 1 and 2
  17. 云服务器修改dns服务器为阿里云公共dns服务器
  18. Harbor安装教程-完全根据官方文档2.6.0版本
  19. 阿里巴巴字体图标使用方法
  20. 浙大 java语言程序设计编程答案,浙大《Java语言程序设计》编程答案4

热门文章

  1. 深入SpringBoot源码(二)getSpringFactoriesInstances方法详解
  2. C语言学习:合数和质数的判断
  3. 姓舒男孩名字简单大气,帮你解决起名的烦恼!
  4. Hive ANALYZE NOSCAN
  5. html 圣诞节贺卡模板,圣诞节立体贺卡模板大全
  6. 网站分析实战总结(一)
  7. (笔记)一些有意思的电路
  8. 第1章 计算机基础知识
  9. LeetCode13-罗马数字转整数
  10. 硬回车、软回车、java转义字符