ue4 导出插件 c++_「美术」UE4配合Houdini的地表制作过程

本系列文章主要介绍:

1、Houdini中的地表制作过程。

2、如何将Houdini中制作的地表在UE4中重建。

3、如何利用Houdini中提供的信息,在UE4中自动创建地表材质。

注:此处以熟悉Houdini为前提,不会介绍Houdini的基本操作

Houdini制作地形,个人感觉有几个先天的优势:

1、程序化生成方式,方便随时对各种细节进行调节。

8625e2f2a689f7865e3347dc49bb515f.png

一个比较复杂的地形创建

2、强大的高度场(Houdini中的地形Terrain工具都称为HeightField)程序节点。可以通过简单的拖拽和调节来实现很高细节精度的地形。

37982b19d75968b3294ff1e3fbec7a44.png

几个常用的且强大的高度场节点

3、方便的地形创建方式,可以通过高度图、模型创建或直接创建地形。

13a9dfe25c796bcf6e757a5ab31518eb.png

直接通过高度图创建地形

4、多种资源输出方式,方便引擎以此来实现各种各样的地形效果。

a9908d31c1eb1af225f626268d74e25a.png

地形数据的几种资源导出方式

5、以很方便的方式生成各种Mask图,来对地形进行针对性的材质赋予和调节。

8e61ffcc713456c87767e7a1d608e300.png

可手动绘制,导入Mask图,函数生成等,且很多Mask也都可以导出

6、配合地形的撒点方式,可以很简单的实现很自然的地形植被或物品的分布。且支持引擎的GPU Instance渲染。

6a0ad6b26e122067b019a8f441934376.png

可以将植被数据导出并在引擎中替换

本次先介绍Houdini美术部分的地形创建过程。

Houdini中的地形创建,大体遵循这几个步骤:

83e1c2935aa6212e32c2a46ea3e7e84e.png

基本流程

1、基本塑性:用来创建地形及调整地形的大体形状。

根据关卡或美术设计,简单绘制高度图。

929abac77ad5a0dc524e6fa2622eb2ce.png

简单区分大体的高度即可

用HeightField_File来导入高度图,进行必要的参数调节,自动生成地形。

c2728b3e7bc12d85e0f92e0a4fd2458e.png

注意这里的选项,选择Mask的话,会将该图当作Mask导入

2,绘制Mask:配合各种遮罩,更精确的调整地形的形状。

这里使用了特征遮罩来创建Mask。该节点功能很强大,可以根据坡度、高度、曲率、方向、环境遮蔽来创建不同种类的遮罩。

47d2ccedf34cadec4e1d8042e262ddea.png

MaskFeature来创建遮罩

也可以使用HeightFieldPaint或者DrawMask等节点来进行遮罩的创建。红色部分既为之后的操作会生效的部分,可以通过勾选InvertMask来简单的进行遮罩的反转。遮罩也可以与之前的遮罩进行叠加、相乘等各种操作。

3、加入随机:对地形进行细节上的随机创建。

这里配合前面生成的Mask来进行地形的随机高度调节。相比过去美术用笔刷进行高度的绘制,配合Mask进行Noise的高度调节速度和效果都会有很大提升。这里注意,Noise的高度叠加方式有多种,如替换、相加、相减、差异、相乘、取大、取小等等,选择适合的即可。下面还有多种Noise的类型可供选择。配合HeightFieldLayer,可以制作很多个性化的地形效果。

ad2aabb3b0ba0bbb7df60965c34e3361.png

配合Mask,两侧山体进行Noise高度调节

4、重映射:重新映射地形(或遮罩层)的高度字段中的值。

就是将地形的高度值重新映射到一个合适的高度。点击ComputerRange,会计算出地形的最低和最高点。之后填入映射目标最低最高点数值即可。例如,可以把随机生成的地形在保证整体相对起伏不变的情况下,限定在高度为0~255之间,即地形最低点为0,最高点为255。并非只能线性映射,下面有多种映射类型可选择并且可以调整映射曲线。

2952be2607ab5abfa0d3d6d219531def.png

上图为将25~362的地形高度映射为0~150的高度区间

5、升采样:即将地形网格的密度加大,进行更进一步的细节雕刻。

基本就类似于Zbrush中的高模雕刻。先在较低面数下,调整地形的大体形状,然后增加面数,进行细节的进一步添加。

890ae98907c1056367833a543d4380e3.png

变为2倍采样率后,体素(面数)从25升到了100万

然后重复2~3的步骤,对地形的细节进行雕刻。在地形基本满意后,开始进行地貌侵蚀操作。

9、加入侵蚀:模拟地貌的水流和热侵蚀,生成更自然的地貌景观。

用Houdini进行自然地貌制作的最强大工具,我认为就是地貌侵蚀了。即使什么参数都不进行调整,只要挂上该节点,并进行侵蚀计算,地形的地貌特征就会变得相当自然。而且通过该侵蚀节点,可以生成陆地,泥沙,水流的不同地貌Mask,后期可导出为贴图进行不同地形材质的区分参考。

侵蚀主要分两种,水流和热侵蚀,且都有大量参数进行调节。具体作用可以参看Houdini的帮助。

2864d08bdfd4e58e1c982ec7a6c8e586.gif

对地形进行地貌侵蚀前后对比

之后,一个基本的地形就制作完成了。地形制作过程中的技巧还有很多,比如映射几何体可以利用几何体的形状来修改地形。再比如地形层混合,可以将多种地形根据Mask进行层混合,组合出更丰富的地形地貌。大家有兴趣可以将HeightField中的各个节点都试一下,保证会有很多很新奇的发现。

下面讲讲如何将Houdini与引擎联动,获取地形数据。

先介绍我知道的几个可用于Terrain的Houdini数据输出吧:

1、高度图输出节点

b7e7df4acb49d00f73f66f9837cf7be8.png

这个节点不仅可以将刷好的地形的高度进行导出,还可以自定义导出的图片格式,对各个地形的模板参数进行导出:

183ef51c705fb0d42e3110f462c7943d.png

例如导出泥地Mask,水Mask,如果水中设置了湍流,还可以导出FlowMask,等等。这些Mask会被分别放入不同的通道,供引擎材质进行导入使用。

2、简模导出。

1a09f3115bc59132298a924aee63447e.png

可以将生成的Terrain高度场,先转化为多边形,然后进行减面操作,并导出模型进行使用。主要是解决一些没有Terrain系统或不太适合用Terrain系统的引擎进行使用。

3、数字资产导出。

9f12be07b234e85ed1859173b716c898.png

这个我自己没试过,据说一些高版本的引擎本身就支持或者自己开发一些Houdini的工具插件来进行支持。我直接选择并导出数字资产以后,引擎里面也只能看到地表,并没有可以进行笔刷编辑或节点调节的参数(即使我导出的时候,设置了要暴露的一些节点和笔刷)。

好了,下面说一下UE4中的地表重现操作:

1、新建一个场景,选择“景观”标签,切换到“管理”。下面的新景观选择“从文件导入”标签。

c02bd576b6c02d0824db2aff222b42c1.png

大体说一下这边的设置项吧:

Heightmap File:就是选择你要导入的高度图,可以导入png或者raw等格式,位数可以是8~16位图,尽量选择高位图,8位可能会有锯齿或噪点。

高度图分辨率:显示你导入的高度图的图片分辨率。

Material:给新创建的地表添加景观材质。

Layer Alphamap Type和Layers:为地形添加的地形材质层的混合模式和各层。两种混合模式,Add,叠加模式,UE4默认,就是权重永远以网上叠加的方式绘制。Layer模式就是正常的层模式,权重绘制可以正常的相互替换。

Location,Rotation,Scale:就是正常的地形矩阵变换,位置,旋转,缩放。

SectionSize:地形渲染最小单位棋盘格里的顶点数量。

Sections Per Component:设置每个景观单位中的渲染和剪裁的基本单位Component中含有的Section数量(分段数)。粒度越细剪裁越精确,渲染性能越好但剪裁负担越重。

Number of Components:景观整体大小。

总分辨率:就是场景的顶点数量,等于以上三个单位的乘积。

总组件数量:就是Components的数量,所以就是Number of Components里面的两个数的乘积。

都设置完成以后,点击创建,不出意外的话,就得到如下显示的地形了。

d8d779cd078c28dc77b0452e24bec636.png

和我们Houdini中创建的是不是一毛一样?

好了,下面说一下材质,也就是那些Mask图的用法:

这些图都是我们预先生成好的,并不是在UE4里面刷的,所以景观材质节点中的landscapeblend啥的应该就没法用了。

1、没关系,我们先创建一个材质函数,将雪,山体,草地,泥沙,水的材质都创建出来。

2、山体和雪的,通过地形高度来做mask,并开放参数作为调整,用高度来自动创建雪和普通山体材质。

7f29bf90486c3d55e21f0497220d5a49.png

其中纹理参数输入高度图,然后叠加一个参数常数来调整雪线,power来调整过度的硬度。当然,为了过度自然,还可以叠加一个Noise来使用。

3、山体和草的材质,通过一张Noisemask,配合高度Mask来进行过度,海拔低的地方,草权重高,高的地方,草皮减少。做法基本同上。

4、使用我们Houdini中输出来的那几个Mask图通道,作为泥沙和水的可见Mask,叠加到雪线以下的材质上。

最后一步,将该材质函数像链接通常景观材质的方式一样的连接到LayerBlend节点的默认层上(预设权重为1)。OK,一个能根据高度和Mask自动匹配纹理又能通过笔刷进行细部调整的景观材质就连好了(至于每种地貌的材质怎么制作会更好看,后面有时间再讲吧,当然,去网上找点儿可商用材质素材库,不是更简单。昨天听一位有13年3A大作制作经验的技术特效师分享时,也说到这事儿,他们就是通过公司购买数字资源的形式来获取素材,而且公司规定,不能自己制作任何其他素材,只能使用购买的素材库,简直棒 )。

974f0d244cea679b30fe17ff82b244c7.png

好了,好了,我节点都连的很随意,效果也是单色代替的-_-。讲解功能嘛,大家明白那个意思就好了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值