制作地形

文章目录[x]
  1. 1:基础平面创建
  2. 2:UE4 材质引用 (在制作材质资产最后一个节点添加)
  3. 3:大型创建(多次迭代)
  4. 4:提升 (悬崖)
  5. 5:侵蚀(风化)
  6. 6:梯田
  7. 7:下降 (泥石流沉降)
  8. 8:中间 采样 侵蚀
  9. 8.1:削弱过于崎岖的位置
  10. 9:利用 最终 侵蚀 添加 细节
  11. 10:湖泊
  12. 11:创建子网络
  13. 12:创建数字资产
  14. 13:调用参数
  15. 14:导入 UE4
  16. 15:拖动导入的文件到视图窗
  17. 15.1:归零变换
  18. 15.2:验证控制参数
  19. 15.3:添加额外的控制参数
  20. 15.4:验证mask匹配
  21. 15.5:Bake模型
  22. 16:给需要上材质的位置分层
  23. 17:小技巧
  24. 17.1:Tips01 避免出现 层信息 未完全覆盖地形 而导致的 某部分没有材质,解决如下图
  25. 18:创建材质资产
  26. 19:材质资产使用
  27. 19.1:Bake上级模型
  28. 19.2:导入houdini材质资产
  29. 19.3:归零变换
  30. 19.4:更新输入源地形的数据
  31. 20:制作简单低质量混合材质
  32. 20.1:每个分层材质的制作
  33. 20.2:混合分层材质(多种方法,经测试结果基本一致)
  34. 20.3:存在的问题
  35. 21:制作高质量通用混合材质
  36. 21.1:地形UV控制
  37. 21.2:材质基础部分
  38. 21.3:法线凹凸
  39. 21.4:置换凹凸
  40. 21.5:UE4 中通过材质 实现实例化模型
  41. 22:Bake材质
  42. 23:实例化资产包简单制作步骤大纲
  43. 24:(多种树等模型随机分布)
  44. 25:(在树的附近长草)
  45. 26:(进UE4 自动替换 模型)UE4 实例化模型 位置引用
  46. 26.1:本质
  47. 26.2:添加 标签名
  48. 26.3:二、将 点属性中属性名为 tag 且值为 cao 的点打到一个组里
  49. 26.4:三、其他模型步骤同上 (石头、树等)
  50. 26.5:四、将 houdini 中的实例化模型的连线断开
  51. 26.6:其他可能的问题
  52. 27:实例化资产使用
  53. 27.1:Bake材质到模型上
  54. 27.2:导入houdini实例化资产
  55. 27.3:问题

制作地形

地形制作的基本思路:

基础平面创建——大型创建(多次迭代)——提升(悬崖)——侵蚀(雨水冲刷等)——梯田——泥石流(下降)——中间采样侵蚀——利用最终侵蚀添加细节——湖泊

基础平面创建

与 UE4 协同工作需要注意,按照UE4标准 对 heightfield 进行设置

否则导入 UE4 后地形边缘一圈会出现拉伸

Overall size /vertices Quads/section Sections/component Component size Total component
总体尺寸(顶点) 四分之一/切片 切片/组件 组件尺寸 组件 总数
8129*8129 127 4(2*2) 254*254 1024(32*32)
4033*4033 63 4(2*2) 126*126 1024(32*32)
2017*2017 63 4(2*2) 126*126 256(16*16)
1009*1009 63 4(2*2) 126*126 64(8*8)
1009*1009 63 1 63*63 256(16*16)
505*505 63 4(2*2) 126*126 16(4*4)
505*505 63 1 63*63 64(8*8)
253*253 63 4(2*2) 126*126 4(2*2)
253*253 63 1 63*63 16(4*4)
127*127 63 4(2*2) 126*126 1
127*127 63 1 63*63 4(2*2)
Size(地形的面积) 再切块的 单位边长 每块切块再切块

切成几份

每块切块的面积 将地形切成多少块
Gridspacing 网格间距(对应UE4中地形的精度(细节多少))

 

如:

UE4 材质引用 (在制作材质资产最后一个节点添加)

在UE4中创建一个地形材质,作材质引用

右键材质 复制引用

Attribcreate 属性创建

将引用在attribcreate节点里面设置给unreal_material 属性,记得路径要去头去尾 即 /Game/NewMaterial3.NewMaterial3

这样设置好之后 地形被导入UE4就会自动赋予指定材质

大型创建(多次迭代)

主要节点 heightfield_pattern 独立的山体

heightfield_distort 给独立的山体添加扭曲

heightfield_layer 将独立的山体融合成连绵的山体 模式选择 maximum

提升 (悬崖)

heightfield_maskbyfeature 根据特征 对需要提升的区域进行选区

heightfield_maskblur 模糊选区

heightfield_distort 扭曲选区

heightfield_noise 对选区提升 noise 类型 选 worley(cellular)F2-F1

heightfield_maskclear 清除mask

侵蚀(风化)

heightfield_resample 重采样 降低网格精度 侵蚀节点耗资源 用低网格精度 模拟

heightfield_erode 侵蚀模拟

heightfield_resample 侵蚀完成后 拉高网格精度

heightfield_resample 将原地形精度拉高

heightfield_layer 将两者形态混合 模式选择blend

梯田

heightfield_maskbyfeature 根据特征选区

heightfield_distort 选区扭曲

heightfield_terrace 梯田制作

heightfield_maskclear 清除mask

同样的步骤制作另一种形态的梯田

对需要融合的区域选区

heightfield_masknoise 对选区加一个noise

heightfield_layer4 融合两种形态的梯田根据mask 方式选blend

下降 (泥石流沉降)

heightfield_distort7 对山体进行扭曲

heightfield_maskbyfeature4 根据特征 对需要进行泥石流的位置选区

heightfield_slump1 泥石流沉降

heightfield_maskclear4 清除mask

中间 采样 侵蚀

heightfield_resample4 降低精度

heightfield_erode2 侵蚀

heightfield_resample5 提高精度

削弱过于崎岖的位置

heightfield_wrangle1 选区

heightfield_maskblur2 模糊选区

heightfield_blur1 对地形选区位置模糊

heightfield_layer5 将原形态与侵蚀过得地形混合

利用 最终 侵蚀 添加 细节

heightfield_distort8 对地形扭曲

heightfield_erode3 侵蚀

heightfield_layer6 原地形与侵蚀过的地形混合

湖泊

heightfield_maskbyfeature6 选区 湖泊生成区域

heightfield_blur2 根据选区 对形态模糊

heightfield_blur3 收缩选区 模式选择 收缩

heightfield_blur4 模糊选区

heightfield_remap1 重映射 根据mask 重映射高度

heightfield_maskclear5 清除mask

heightfield_resample6 重采样 提高精度

以上 地形部分制作完成

制作地形数字资产

以另一个简单的地形为例:

zhizao

创建子网络

选中所有节点

点击 从选择的节点创建子网络

tianjiaziwang

重命名

创建数字资产

右键 子网络包 创建数字资产

更改资产存放路径

调用参数

方便在UE4里继续修改 以山脉高度、位置举例 保存为hda文件

diaoyong

调用方法 参数栏-根据节点-子网包-节点-属性-添加调用-更改标签名(支持中文)-确认

以上为模型的数字资产

HDA数字资产的使用

导入 UE4

将 houdini 中的hda地形数字资产 导入到 UE4中

daoruue4

导入UE4

拖动HDA文件到内容浏览器窗口 或者

导入+路径

拖动导入的文件到视图窗

ue4_jiemian观察视图 大纲视图 houdini参数

归零变换

在UE4的内容浏览器中将houdini的资产拖动到场景中,HDA会自动把houdini中创建的地形COOK出来,然后把houdini资产文件 在 UE4中的变换属性 归零

Houdini generated meshes 翻译为 Houdini生成的网格

验证控制参数

山脉高度拉到特别低之后 验证有效果

ue4_jiemian02

添加额外的控制参数

当所需的控制参数不够 回到houdini-选择包-内容物-参数信息面板-继续添加-保存

ercibian

UE4内更新 进UE4 内容浏览器 右键houdini资产 重新导入

右键选择-重建所选择

chongjianxuanze

验证mask匹配

注意将houdini中的layer名 和UE4中材质的layer名匹配上,UE4找不到layer信息会显示全黑

其中 一、bedrock 是 基岩层
三、sediment 是 沉积物层

二、Debris 是 碎片层

四、Water 是 水层

Bake模型

确认模型没问题之后 在houdini generated meshes中将地形bake出来 ,之后大纲里的资产文件就可以删除了

制作材质数字资产

给需要上材质的位置分层

  1. 当分层区域精度不够时 可以 提高精度 并且 加一个 blur 节点

  1. 将所有的分层做一次重映射,并将参数提取到资产文件中,以备在UE4 中继续调整

三、heightfield_copylayer1 拷贝层信息 为在UE4 中上材质使用

heightfield_maskbyfeature 根据特征画mask

heightfield_copylayer7 将 mask信息 拷贝为 层信息

以这三个为例


小技巧

Tips01 避免出现 层信息 未完全覆盖地形 而导致的 某部分没有材质,解决如下图

第一层 第二层 层信息合并

所有有用的层 合并完

反转层信息 并给此层命名

此时所有自定义的层信息全部保留下来

并且自定义层信息未覆盖到的位置也创建了一个层信息

在UE4中给材质时就可以解决不完全覆盖的问题

创建材质资产

全选节点

将这些节点打包成数字资产

注意 留一个输入端连接模型资产

此资产为材质资产

材质资产使用

Bake上级模型

导入houdini材质资产

归零变换

更新输入源地形的数据

再输入里选择风景画输入 选择bake出来的地形 勾选 更新输入源地形的数据,不勾选会创建一个新的

制作简单低质量混合材质

每个分层材质的制作

选择需要的材质包

根据需要选择材质包 以 UE4 内置的石头 草地 水 木头 为例

找到内置的草地材质包 双击打开

创建带输出端的材质 make material attributes

创建一个 make material attributes 节点(制作材质属性)

将端口分一条线(双击连线创建分支)连接到新节点上

全选节点 ctrl+a 复制所有节点

创建材质表达式

在内容浏览器右键新建一个 材质表达式 双击打开

将之前复制的节点粘贴到 材质表达式 里 并连接输出 然后保存

将所有的texcoord 替换为 Landscapecoords 并将 Landscapecoords UV类型
改为 LCCT Weight Map UV

根据原来的 texcoord UV缩放量 乘一个倍增

同方法制作其他的材质包

其他材质同样操作 做好 草地 木头 石头 水 等材质备用

目的

内置的材质包没有输出端口 需要改成带输出端口的材质 然后用来混合材质

混合分层材质(多种方法,经测试结果基本一致)

拖入

打开地形上之前上好的材质 将修改完毕的材质包全部拖入

混合材质 Landscape layer blend

方法一 连接方式最繁琐 混合前打断
打断材质 break material attributes

目的: 材质输出的材质信息的数据类型不一样(basecolor roughness) 必须把他们分开 分别混合 所以需要用到此节点

创建break material attributes 节点(打断 材质属性) 连接拖入的材质

混合材质

根据需要 将用到的材质信息混合到对应层

比如 地形的水痕层需要 上一个水材质

那么 将水材质的 基础颜色 金属度 粗糙度 normal (水材质包中只有这几个有信息)

输出分别连到 water(水痕层)

然后 再把 层混合节点 的 输出端 连接到对应的属性上

石头 木头 草地 材质包同理

全部完成后 保存 即可看到 场景中 材质已经更新完毕

 

方法二 连接方式最简洁 混合前后都不需要打断
输出 勾选 使用 材质属性 use material attributes

将 材质结果节点 模式改为 使用材质属性

勾选 use material attributes

或者 不勾选 使用 材质属性 直接连接

混合前后都不需要打断

方法三 复杂度中等 混合后打断

存在的问题

边缘处材质出现莫名其妙的错误

选区精度不够 接缝边缘马赛克

制作高质量通用混合材质

地形UV控制

材质基础部分

法线凹凸

置换凹凸

应用曲面细分的模式

曲面细分时出现皲裂时勾选此项

模型UV信息

通过混合的高度图信息得到表面各个位置的0—1的值

与顶点法线方向相乘得到表面各个位置的不同大小的凹凸

与模型自身的缩放倍数相乘得到一个随模型缩放大小变化的凹凸信息值

整体乘一个倍增控制一下凹凸强度

对原模型进行细分的精度

通过使用 静态网格体 自身的顶点 进行置换

通过使用 对静态网格体 曲面细分后的顶点 进行置换

对静态网格体曲面细分 时的 细分精度

UE4 中通过材质 实现实例化模型

Bake材质

上完材质之后 bake 出来,如果地形没有bake 调整材质资产中的参数会直接应用到地形上

制作实例化数字资产

实例化资产包简单制作步骤大纲

绘制实例化模型分布位置的选区

将选区转为层信息

将这些节点打包成数字资产

注意 留一个输入端连接材质资产

此资产为实例化资产

(多种树等模型随机分布)

(在树的附近长草)

四种撒点方式 使用 mask 层的覆盖面积

使用 mask 层 的 密度

使用 mask层的 总点数

撒点前计算 使用来源点的位置(在树的附近长草)

来源点 标签 选择 自定义的树的标签

还包括 数量控制 位置控制(半径、距离等)

(进UE4 自动替换 模型)UE4 实例化模型 位置引用

本质

添加虚幻能识别的一个属性和值

添加 标签名

(实际就是 撒点

并且给点创建一个 叫 tag 的字符串属性

值为cao (本示例中 可自定义) )

二、将 点属性中属性名为 tag 且值为 cao 的点打到一个组里

操作层级为 点层级

如果 随机属性(根据点序号做的0—1的随机值(可加一个种子值)) 小于0.6

(即 在这个点组中60% 的点 表达为真)

那么 虚幻中的实例物体用这个引用(UE4中复制引用 掐头去尾);

否则

那么 虚幻中的实例物体用另一个引用(UE4中复制引用 掐头去尾);

适用于多个模型 不同比例分布

三、其他模型步骤同上 (石头、树等)

四、将 houdini 中的实例化模型的连线断开

如果未断开 在UE4中将优先执行这些连接的模型 导致未能正确自动替换模型

其他可能的问题

UE4 中的实例引用路径中 存在 中文路径 可能导致不识别(未测试)

进UE4 依次点选 重新导入 重建所有实例 重建所选择 防止未正确更新资产

保存hda 导入UE4

实例化资产使用

Bake材质到模型上

导入houdini实例化资产

UE4 中添加 雾 和 后期效果(后处理场)

Ue4地形和层信息给回到houdini继续修改

网格缩放值=ue XY缩放值/100

高度缩放值=ue Z缩放值/100

高度偏移值=ue Z位置值/100

位移X =手动调

位移Y =手动调

旋转Y=90

问题

边缘有拉伸

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像