All Houdini Unreal Engine 4

Houdini Terrain Unreal

 
 

https://www.youtube.com/watch?v=iUGRAbTHynE&t=1298s

 
 

这个教程是将houdini制作的地形应用于unreal引擎,我们来看是怎么制作的。

 
 

首先在houdini里面制作一个最简易的地形,建立一个geometry节点,然后在里面实现一个基础地形如下:

 
 

然后打包成输出节点:

 
 

设置文件名路径后点接收,然后我们要选择删除空闲的节点选项,不然会出错:

 
 

这样以后这个节点就可以在Unreal里面使用了,直接将生成的文件拖到Unreal里面,然后再拖到游戏窗口即可有下列效果:

 
 

这边作者还讲了下暴露参数给Unreal使用,这就是修改输出节点的参数列表如下,具体操作见unity那边讲过多次的操作:

 
 

更新houdini里面的内容后,unreal里面重新reimport:

 
 

然后前面设置的两个参数就会在Unreal里面出现,你可以通过调节这两个参数来看到实时变化的地形效果。

 
 

然后我们再来建立基本的材质,我们现在unreal里面建立一个有三层的材质球如下,并将这个材质球给地形用:

 
 

这时候在unreal刷地形的工具底下就能看到有三个layer可供选择:

 
 

然后点击右边的添加按钮创建层,全部都创建。

 
 

则会保存下图所示三个文件,同时你也可以选中任意一个层,在地形上面刷颜色:

 
 

但是明显这样的效果不是很尽如人意,因此我们看怎么通过houdini来获得更好的效果。

这边houdini的目标就是通过houdini内来实现自动分层,使得每一层可以用上前面地形材质球里面的各层材质,使得效果比较完美。

因此我们来看怎么做,对于每一层主要包含两个节点,一个mask节点圈出这一层材质的作用范围,然后是copylayer节点来标记这一层。这边要特别注意的是copylayer节点的描述要和unreal里面的节点命名一致:

 
 

用类似方法我们需要mask出unreal里面的三层材质,最终的节点图如下:

(这边还是要强调每一个copylayer里面的描述字段要和unreal材质层的命名一致。)

 
 

看上述图我们可以发现,处理mountaintopsteepslops的做法是类似的,都是mask+copylayer,处理base层的时候就是将上面两层没有覆盖到的地方覆盖base,因此就是combine+incert即可,但是这两个处理节点要注意的是如下设置,因为我们处理的是mask信息:

 
 

 
 

最终结果我们可以看一下,蓝绿色的地方包含三个:MountainTop, SteepSlops, Base这三个Attrib即是正确的。

 
 

然后unreal里面reimport这个节点,然后重新将材质节点附上,就可以得到结果:

 
 

附材质节点这一步骤也可以在houdini里面完成,做法是首先建立一个attribcreate节点,设置参数如下:

非常要注意的是命名和类型是不能随便填的,是有约定的,这个查看下面这个链接,还有路径的填写则看下面的说明。

https://www.sidefx.com/docs/unreal/_attributes.html

 
 

数据来源:

你会得到下面一串string:Material’/Game/Materials/Landscape.Landscape’

然后掐头去尾只要中间的路径,就可以得到上面截图所示的string内容填写。

 
 

这样重新导入到Unreal,就不需要手动填写材质了,材质就自动挂载上去了!!!

 
 

 
 

 
 

下面是看怎么在地形上面开洞:

 
 

第一步绘制一个洞的mask

 
 

然后同样建立一个输出层,注意描述命名:

 
 

然后即可保存这个节点用于unreal,unreal里面需要为这个洞赋予新材质,因此要对材质作如下修改:

新建一个材质landscape_hole

 
 

即可得到效果:

 
 

同样的这个材质设置也能在houdini里面实现:

 
 

这边要特别注意的是,houdini有个极其傻叉的行为就是,对于string的填写,如果存在空格,编辑器里面是自动忽略的,但是其真实的值是存在的,因此会导致结果不对,如上面所示有个感叹号,就是填写的名称包含了一个空格导致的。

 
 

但是貌似上面的设置又是没对,真的是,反正就是路径或者命名存在问题。

但是反正这边这个设置到uneal里面手动设反倒是更好的,所以也就不纠结了。