Houdini Terrian & UE4 (一)基础的地形工作流
地编场景制作3D场景引擎地编地图编辑 294 1
实名

通过了实名认证的内容创造者

发布于 2023-9-2 10:32:22

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 毒游搬运小行家 于 2020-11-22 18:55 编辑

Houdini Terrian & UE4 (一)基础的地形工作流

文/键盘侠·伍德

image.png

导言

houdini本身是很优秀的地形编辑工具,houdini engine让我们可以在UE4中使用houdini生成的HDA文件快速的构建地形地貌,并且支持协同工作。
image.png

UE4 & Houdini Pipeline
   这里要了解到的一个概念是:我们在houdini中制作好了hda文件之后,在ue4中就可以反复的使用这个文件来做修改了,并不是传统的互相修改同一份文件来实现的,这使得ue4中可以进行闭环的操作,而不需要每一个使用到这部分功能的制作人员都掌握houdini使用方法
(注:未安装houdiniFX的电脑上,要想使用hda,一种选择是装sidefx提供的houdini engine版本,还有一种选择是在一台共用机上安装一个houdini engine,所有人在插件设置里使用tcp连接到共用机)。
这篇教程主要是为了带着大家走一遍houdini&ue4的基础,从houdini制作基础的高度图开始,导入ue4,在ue4中做一些调整,然后再使用hda文件cook一次,这就是最基础的一套操作环节啦!
关于一些houdini中基础的地形节点,请参照这篇文章呢!

1、houdini中制作height field

首先我们在obj目录里创建一个Geometry节点。
然后我们创建一个新的assert



这里我们把输入设置到0,因为初始化地形的节点并不需要输入


然后我们在之前创建的Geometry节点里面,创建这个assert。





这里我们要打开编辑功能才能进去编辑LandScapeInit节点




这里我们就之做一个最基本的地形生成,怎么做的好看就自己研究啦~





对于最基础的节点,我们按照ue4的标准来设置地形信息,否则导入ue4后地形边缘一圈会出现拉伸。







这里插一个步骤,我们在ue4中先创建一个地形材质,这里我们简单的用颜色来表达。





然后复制这个材质的引用






用上面的引用在create attribute节点里面设置给unreal_material属性,记得要去头去尾哦。
这里的属性name是约定的。具体其他的属性可以参见官方文档或者看源码。
这里我们设置好以后,地形被导入UE4时就会自动被赋予指定的材质


然后我们选中最后一个节点并保存这个hda

2、导入ue4
刚刚我们创建好的hda文件,我们把它拖入UE4,这时候就能看到一个houdini图标的uassert了。

然后拖入到场景当中,hda会自动把我们上面创建的地形cook出来。

这里我们看到的地形因为没有layer的信息,所以是全黑的。

点击LandScapeInit里面detail面板上的bake按钮,把地形脱离开来,这时候LandScapeInit文件就可以从场景中删除了。

到这里,地形的高度信息就已经导入成功了,下面我们要给地形生成一些mask。后续可以用作山顶、斜坡贴图等。

3、创建一个制作mask信息的hda文件

和上面一样。我们创建一个新的assert叫LandScapeMask,但是这里我们希望它有一个输入参数,来接收一个heightfield。


我们把这个节点创建到之前的LandScapeInit之后
打开允许编辑,我们来制作这个hda文件。
同样,这里也是做一个简单的mask创建。我们在这里用mask by feature对斜率信息做一个mask,然后把mask赋值到Slope。
后面反转slope层作为Base mask。


选择最后一个节点,保存


4、回到UE4

我们把新的hda文件拖入UE4。

然后我们就能看到刚刚我们定义的Input出现在了Detail面板里。


这里我们选择Update Input Landscape Data(更新输入的地形数据,不勾选的话会创建一个新的),然后点击列表中的Landscape,hda就会自动把地形送到houdini library处理了。

处理完之后我们就能看到我们的地形上的斜坡被着色了。


我们将这个处理之后的地形bake出来以后,可以做一些修改。这里我们在UE4中拉了一下地形。


拖入LandScapeMask再次提交地形就可以看到,被提交的地形重新计算了slope layer的信息。

5.将houdini的调整参数带入UE4

打开houdini,进入LandScapeMask节点

这里就是可以放入参数并带入UE4的地方啦。

6.注意点

  可以注意到我们这里用了两个hda节点来制作,其实也是个人自己觉得比较方便的方式。毕竟除了初始化地形的操作以外,很多操作如果没有输入是无法直接在houdini中预览效果的。通过这样的制作和连接方式,我们可以在制作mask活着后面撒点的时候都可以有个预览。


parameter和input都可以把参数抛进UE4中,但是input更常用一点,毕竟在houdini中input可以直接作为输入口来预览。


  每次用hda文件cook出结果后,最好都把结果bake出来,然后删除hda节点,下次要使用的时候再把hda拖进场景。当然,在确保没问题的情况下,把修改的地形放在hda下面能够得到更加及时的更新。


   每次hda操作之前和之后最好都保存并重新打开场景。

   如果操作前不保存,可能出现输入houdini engine的数据并不是当前最新的情况。

   如果操作后不保存重启,地形上的mask信息可能是错乱的,而且会发现调整地形或者画layer的时候笔刷在地形上很卡的情况。保存重开保存重开!真的很重要!

后记
  到这里为止,我们在没有修改houdini engine插件的情况下完成了一次地形的基础工作流。在一些更加深入的工作流程探究时,我们还是会发现有很多不如人意的地方,这里暂不一一举例。
  使用houdini&UE4做开发,除了houdini本身的使用外,还有很大一部分就是houdini engine根据项目的需求进行定制化,后面的分享也会围绕houdini engine定制来写。
还望多点赞,多指正,感谢感谢!
END








天若有情天亦老, 人间正道是沧桑。
使用道具 <
冯建飞  发表于 2021-2-6 01:54:52  
2#
元素辣么大~我想去干干
土豪金那么少~啥也杠不了
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表