最近项目需求制作一个场景的远景部分。正好可以尝试使用一下UE4的 Landscape。不过直接在 Editor 里刷地形工作量太大,刷出的地形也不真实,最关键的是 Landscape 的工具并不是那么好用。

所以我们决定使用 WorldMachine 作为地形的生成工具,将地形的高度图导入 Editor,再在 Editor 中对细节进行修改。WorldMachine 生成的高度图相对人工算出来的要真实,最重要的是快,用它找坡度,沟壑更加准确。

在 UE4 中使用 WorldMachine 还要解决几个问题。官方有篇 wiki 将的很清楚。World Machine to Unreal Engine 4 - In Depth Guide

问题1:高度图尺寸

UE4 的高度图有一些限制,这与 UE4 地形系统的组织有关。高度图中每一个像素对应着地形系统的一个顶点。UE4 的地形组织分为3层:组件 component,分段 section,四边形 quadsLandscape Technical Guide

四边形是地形系统最小单位,每个四边形对应4个顶点。

分段由四边形组成,是 drawcall 和 LOD 的最小单位。因为要对每个分段单独做 LOD,高度图需要做 mipmap,所以每个分段的高度图都是2的整数次幂,可以是 8x8 到 256x256 中间的一个。分段中每个四边形共享顶点,所以每边四边形的个数是 x-1。

组件由分段组成,每个组件只能有 1x1 个或者 2x2 个分段。组件是渲染、可视性和碰撞的基本单元。每一边组件的数量可以是1到32中的一个,长和宽可以不相同。组件越多,CPU 消耗越大。

了解了以上的关系,高度图的尺寸就可以计算出来了。但是这里推荐的方法是在 Editor 里调整组件和分段的选项,来得到高度图的尺寸。

高度图尺寸

上图中的高度尺寸就是 505x505。

问题2:世界尺寸

第二个问题就是要弄清地形系统中的距离表示的实际世界尺寸。正常地形系统中顶点之间距离是1ued,代表实际中的1cm,但是在创建时可以看到 Scale 是 (100, 100, 100)。所以顶点间距离是1m。地形系统的高度范围是 -255 到 257,同样在 Scale = 100 时,单位是 m。如果希望上图中的设置,高度图1像素对应1m,那么 WorldMachine 的设置是,分辨率 505x505,宽是505m,高是505m。海拔的设置,由于world machine从0开始,所以要设成512m。

分辨率,宽,高

高度

之后的操作就是在 WorldMachine 里做图并导入 Editor。WorldMachine 默认都是 km 级别的,可以放大 100 倍,方便在 WorldMachine 里操作。

问题3:地形材质

地形材质方面主要要搞清 LayerInfo 的2两种混合模式和材质中的3种混合类型的含义。

LayerInfo 的2两种混合模式:Weight-Blend(normal), No Weight-Blend

Weight-Blend(normal), No Weight-Blend

Weight-Blend 的层权重和为1,增加一个层的权重,其他层的权重就会减少。No Weight-Blend 的层单独计算权重,不对其他层有影响。

No Weight-Blend 的层单独计算权重

图中,红色和蓝色部分为 Weight-Blend,绿色部分为 No Weight-Blend。先刷红色,再刷蓝色,绿色。蓝色部分覆盖红色部分的区域,红色部分的权重变成了0。而绿色部分覆盖的区域红色部分权重没有变。

LB_WeightBlend,LB_AlphaBland,LB_HeightBland

WeightBlend 和 HeightBland 都是权重混合。在同一像素上不同层的权重和为1。但是 HeightBland 提供高度图。在边界产生下图效果。

HeightBland

WeightBlend 和 HeightBland 都是无序的, 减少一个层的权重,其他层的权重会增加,但是增加那个并不确定。

AlphaBland 是有序的,好像一层覆盖一层,减少一层会露出下一层。这里官方文档说的也不详细。查了一下代码
int32 UMaterialExpressionLandscapeLayerBlend::Compile(class FMaterialCompiler* Compiler, int32 OutputIndex, int32 MultiplexIndex)

他们的关系应该是这样的。

blend 公式

w是权重,color 是这个点的颜色, AlphaBland 在最后才混合,每个 Alpha 层都会 lerp 一次,顺序不定。

原文链接:http://www.jianshu.com/p/f0feccb546f2

ue4 Worldmachine 结合使用的更多相关文章

  1. UE4高级功能--初探超大无缝地图的实现LevelStream

    转自:http://blog.csdn.net/u011707076/article/details/44903223 LevelStream 实现超大无缝地图--官方文档学习 The Level S ...

  2. Houdini技术体系 基础管线(三) :UE4 Landscape Component的多选支持 下篇

    背景 上篇中,我们介绍了如何修改Houdini Enigne来设置单个Landscape Compnent的Height和Layer的数据,但原生Houdini Engine并不支持多选Compone ...

  3. Houdini技术体系 基础管线(二) :Heightfiled与UE4的无缝导入以及对World Composition的支持

    Authored by TraceYang 前言    传统的制作做比较真实大世界3D关卡地形时,通常的采用的方式是把HeightMap和SplatMap(Layer Mask)导入到引擎的地形系统里 ...

  4. UE4新手引导之下载和安装虚幻4游戏引擎

    1) 进入虚幻4的官方主页(https://www.unrealengine.com/) 这里你可以获得关于虚幻4的最新资讯,包括版本更新.博客更新.新闻和商城等.自2015年起,该引擎已经提供免费下 ...

  5. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  6. ue4 c++学习推荐

    我由易到难推荐,不过在此之前还是先看看官方对于VS设置的推荐: https://docs.unrealengine.com/latest/INT/Programming/Development/Vis ...

  7. 如何创建独立的UE4服务端

    原文作者:@玄冬Wong 转载请注明原文出处:http://aigo.iteye.com/blog/2268777 这是论坛上对UE服务端功能的回答,意思是UE4提供了主流MMO网游服务端所具备的特性 ...

  8. 《Inside UE4》目录

    <Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...

  9. 如何使用的Ue4自带的SQLiteSupport

    在UE4.6版本加入的模块.可以让开发者使用SQLite数据库.SQlite是个轻量型的本地数据库. 我下面就来介绍一下如何使用这个模块. 第一步:下载SQLite源代码以及SQLite GUI管理工 ...

随机推荐

  1. angularjs 遇到的问题汇总

    angular2 学习资源集锦:https://github.com/timjacobi/angular2-education 在学习angular开发项目过程遇到的问题:

  2. Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode

    进行 spring mvc jpa整合时.Junit方法测试时. 异常: org.springframework.beans.factory.BeanCreationException: Error ...

  3. leetcode 189

    189. Rotate Array Rotate an array of n elements to the right by k steps. For example, with n = 7 and ...

  4. 18.虚拟机linux上网问题

    1.1.VMware中虚拟机网络的三种设置第一种:桥接(bridged)第二种:NAT第三种:Host only .该模式下仅主机可以上网,虚拟机不能上网. 1.2.虚拟机上网方式1:NAT方式设置步 ...

  5. 在 Visual Studio 中调试时映射调用堆栈上的方法

    本文转自:https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 1.创建代码图,以便在调试时对调用堆栈进行可视化跟踪. 你可以在图中进行标注以跟 ...

  6. ios10 no route to host

    IdTCPClient1 ios10 no route to host IOS 9 正常 IOS10 出错,参考下面的设置解决问题 http://www.sh-huhe.com/solution/14 ...

  7. EUI Scroller实现图片轮播 组件 ItemScroller

    一 自定义组件如下 /** * 文 件 名:ItemScroll.ts * 功 能: 滚动组件 * 内 容: 自定义组件,支持多张图片水平(垂直)切换滚动 * * Example: * 1. 从自定义 ...

  8. Linux 查找文件

    find 查找目录 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一:locate命令 l ...

  9. 用Linux自带的Logrotate来管理日志

    Logrotate是由cron控制,cron在规定的时间执行 " logrotate  /etc/logrotate.conf "命令.将对象日志进行转储,删除,压缩等操作... ...

  10. Unity 几种优化建议

    转: http://user.qzone.qq.com/289422269/blog/1453815561?ptlang=2052 Unity 几种优化建议 最简单的优化建议: 1.PC平台的话保持场 ...