最近项目需求制作一个场景的远景部分。正好可以尝试使用一下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. NHibernate系列文章二十三:NHibernate查询之Criteria查询(附程序下载)

    摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面 ...

  2. C语言中内存操作函数

      一.malloc/calloc 名称: Malloc/calloc 功能: 动态内存分配函数 头文件: #include <stdlib.h> 函数原形: void *malloc(s ...

  3. SequoiaDB 笔记

    SequoiaDB 笔记 这几天翻了翻SequoiaDB的代码,记了点笔记.不保证下面内容的正确性(肯定有错的地方) 个人观感 优点 代码还不错,设计也算简洁. EDU和CB的使用让整个系统变得简单很 ...

  4. 使用jxl,poi读取excel文件

    作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp ...

  5. springMVC和mybatis整合,jsp对时间进行格式化

    发现jsp显示的时间,是java Date类型的默认格式,一串鸡肠.... 可在jsp对输出进行格式化: 1.加入taglib <%@ taglib prefix="fmt" ...

  6. eclipse 查看变量或方法在什么地方被调用的快捷键

    选中方法名,点鼠标右键,菜单里有个”打开调用层次结构 ( Open Call Hierarchy )“,选中或者按下快捷键Ctrl+Alt+H,就在下面栏目里能看到调用的树形结构了. 或者: 1.双击 ...

  7. Mac升级到Yosemite后默认的php版本不支持imagetfftext函数问题解决

    Mac升级到yosemite后,php也自动升级,运行项目的时候发现后台验证码显示不出来.调试一下发现imagetfftext这个函数不存在,应该gd没有安装完全,因为Mac上的php实现系统自带的, ...

  8. ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录

    已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...

  9. Node入门(转)

    原文链接:http://www.nodebeginner.org/index-zh-cn.html Node入门 作者: Manuel Kiessling翻译: goddyzhao & Gra ...

  10. 《Pro Git》阅读随想

    之前做版本管理,我使用最多的是SVN,而且也只是在用一些最常用的操作.最近公司里很多项目都开始上Git,借这个机会,我计划好好学习一下Git的操作和原理,以及蕴含在其中的设计思想.同事推荐了一本< ...