首页 > 其他分享 >UE4地形系统(Landscape)

UE4地形系统(Landscape)

时间:2023-07-16 23:47:50浏览次数:48  
标签:笔刷 地形 控制点 Landscape UE4 grass landscape

地形Landscape) 系统使您能够为您的世界场景创建地形 - 山脉、山谷、起伏或倾斜的地面,甚至洞穴的开口(Sculpt 模式中选择 Visibility 工具)。并通过使用一系列工具轻松修改地形的形状和外观。

 

概述

 

一个关卡中可以有多个地形Actor对象(ALandscape)。

一个场景世界中只有一个小工具Actor对象(ALandscapeGizmoActiveActor),用于编辑时的地形的拷贝。

 

通过obj list class=Actor -alphasort命令查看场景中Landscape个数和大小

 

地形结构组成

边框颜色

地形单元

包含

黄色

地形Actor边缘

包括2x2个Components

浅绿色

组件(Component)边缘

包括2x2个Sections

中绿色

分段(Section)边缘

包含7x7个Quads

深绿色

四边形(Quad)

每个Quad被缩放100倍,即长宽为100uu(虚幻单位),为1m

 

更多信息请参考:地形技术指南创建地形创建和使用自定义高度图和图层

 

创建地形

点击Create按钮创建地形

注:7条鲜绿的横线和7条鲜绿的竖线将地块划分成8x8个Components

 

 

去掉Component之间的缝隙印记

方法①:将场景中的Directional Light设为Movable后,再设回Stationary

方法②:执行Build Lighting Only

 

 

 

地形系统有三种模式:Manage(管理模式)、Sculpt(塑形模式)和Paint(绘制模式)

 

 

Manage(管理模式)

用Select工具来选择地块

点击地块即可选中所在的Component,按Shift键点击则会取消Component的选择

注1:Brush Size为1表示选择面积为1个Component大小

注2:点击Clear Component Selection按钮,可取消掉所有选中的地块

 

用Add工具来添加地块

点击地块即可在绿色方块光标处添加Component。绿色方块光标的大小即为Brush Size指定的值。

注:Brush Size为1表示选择面积为1个Component大小

 

用Delete工具来删除地块

点击地块即可将橙色实心方块光标处的Component删除。橙色实心方块光标的大小即为Brush Size指定的值。

注:Brush Size为1表示选择面积为1个Component大小

 

用Move工具将点中的地块移动到当前关卡中

 

查看Persistent Level关卡中的地块

 

查看LandScapeLevel关卡中的地块

 

用Resize工具来调整地形的所有地块

① Expand模式

 

 

② Clip模式

 

 

③ Resample模式

 

 

地形样条线

按Ctrl键,在地形上点击来添加样条线控制点

注:勾选Use Auto Rotate Control Point(使用自动旋转控制点),释放光标后样条点会自动旋转,使样条保持平滑。更多信息参见:地形样条线

 

更多快捷键:

鼠标左键 选择控制点或分段。
Shift+鼠标左键 选择多个控制点或分段。
Ctrl+A 选择所有连接到当前选定控制点的控制点和/或所有连接到当前选定分段的分段。
Ctrl+鼠标左键

① 添加新控制点,并自动连接到任何选定的控制点。

② 在选定一个或多个控制点的情况下,创建分段将所有选定的控制点连接到新的控制点。

③ 在选定一个分段的情况下,在该点拆分分段并插入新的控制点。

ALT+鼠标左键拖动

① 在选定一个控制点的情况下,添加新控制点并将它朝拖动方向平移。

② 在拖动穿过现有分段时拆分路径。

③ 在从样条任一端拖开时添加新分段。

Delete 删除选定的控制点或分段。
R 自动计算选定样条控制点的旋转。
T 自动翻转选定控制点/分段的切线。
F 翻转选定的样条分段(仅影响样条上的网格体)。
End 将选定控制点对齐到下方的地形。

 

 

选中某个控制点来调整位置

 

 

 

 

选中一个样条控制点,然后在Details面板中点击Segments来选中整个样条,然后在Landscape Spline Meshes中为整个样条添加StaticMesh资源

 

 

Sculpt(塑形模式)

 

常用快捷键

鼠标左键 通过笔划将所选工具的效果叠加应用至高度图。
鼠标左键+Shift 通过笔划将所选工具的效果删减应用至高度图。
Ctrl+Z 撤销。
Ctrl+Y 重做。

 

属性说明

属性

说明

Tool Strength(笔刷强度,绿框中)

决定使用造型工具时升高或降低的量。

Brush Size(笔刷尺寸,篮框中)

决定着笔刷的尺寸(为320个虚幻单位)

Brush Falloff(笔刷衰减,白框中)

决定了衰减开始处笔刷范围的百分比。本质上来说,它决定着笔刷边缘的硬度。

0.0的衰减意味着笔刷拥有硬边,整体皆拥有完整的效果。1.0的衰减意味着笔刷只在中心拥有完整效果,效果将从其所在的整个区域到边缘逐渐减弱。

Use Clay Brush(使用泥浆笔刷)

可以用一种有机的、叠加的方法雕刻地形

 

笔刷形状

形状 Circle(圆形) Alpha(透明度) Pattern(图案) Component(组件)
设置项

 

 



Circle(圆形)形状画刷周围衰减

类型 Smooth(平滑) Linear(线性) Spherical(球形) Tip(尖端)
呈现效果

更多请参考:地形笔刷

 

塑形工具

工具 说明
造型(Sculpt) 以当前选中笔刷和衰减的形状升高和降低地形高度图的高度。
平滑(Smooth) 能够柔化高度图绘制值,消除使用造型或侵蚀工具后有时会出现的锯齿穿帮,使地形的外观平滑流畅。
平整(Flatten) 将把高度图的所有部分推拉至鼠标之下的水平线上。 这样便可将周围的高度图数值升高或降低到相同的数值。
斜坡(Ramp) 可在地形上选择两个位置并在两个点之间创建一个平板斜坡,并在侧边指定衰减。
侵蚀(Erosion) 利用热力侵蚀模拟调整地形高度图的高度。它模拟土壤被自然力量从高处移动向低处的效果。 高低落差越大,产生的侵蚀效果越强。该工具还可在侵蚀上应用 noise 效果,呈现出自然真实的随机外貌。
水力侵蚀(Hydro Erosion) 利用水力侵蚀模拟(由水流形成的侵蚀)调整地形高度图的高度。Noise 过滤器用于决定模拟中初始降雨的出现位置。 计算出的模拟将确定初始降雨的水流,以及消融、水流迁移和蒸发。 计算结果将产生实际用于降低高度图的数值。
噪点(Noise) 应用一个噪点过滤器,在地形高度图表面生成各种变化效果。
拓扑(Retopologize) 通过 X/Y 偏移贴图自动调整地形顶点,改善所需区域中的顶点密度(如陡峭悬崖)。它将顶点分散到这些密度较低的区域中, 从而减少这类区域中的纹理拉伸。
可视性(Visibility) 用于在地形部分上如洞穴之类的区域进行遮罩(创建洞窟)。
蓝图笔刷(Blueprint)

提供了一套用户自定义造型笔刷堆栈,其支持非破坏性操纵。因此,若堆栈中的低层笔刷若发生变化,变化也将自动流到堆栈上方的笔刷上。

该笔刷可用于将多个地形操纵彼此叠加,同时让各个操纵相互分离,必要时用户可以围绕地形重新排列或移动地形操纵。

镜像(Mirror) 可沿 X 轴或 Y 轴镜像或旋转现有的地形高度图几何体。

 

使用编辑层(Edit Layers)来管理塑形修改

首先在创建地形时,需要勾选Enable Edit Layers,以层编辑模式来创建

 

创建地形之后,就可以在如下Edit Layers中用Layer来管理对地形的修改了

 

创建并选中RampLayer编辑层,然后选择Ramp工具,在场景中点击来添加控制点,选中控制点来调整位置

 

点击Add Ramp来修改地形

 

隐藏SculptLayer编辑层后,之前所做的修改没有应用到地形上(地形变平了)

 

区域选择

注:点击Clear Region Selection可以取消所有区域选择    更多信息请参考:区域选择

 

区域拷贝与粘贴

点击Fit Gizmo to Selected Regions,可快速将Gizmo移动到选择区域

注:可自由拖动Gizmo到目标位置

 

点击Copy Data to Gizmo按钮,来拷贝Gizmo所在的地形数据

 

拖放Gizmo选择Cube到新的位置之后,按Ctrl + V来粘贴

 

得到最终的结果:

 

更多信息请参考:复制与粘贴区域地形小工具

 

Paint(绘制模式)

常用快捷键

鼠标左键 将选中Layer的颜色应用到地形。
鼠标左键+Shift 将擦除应用到地形特定部分的选中材质。
Ctrl+Z 撤销。
Ctrl+Y 重做。

 

属性说明

下面属性的含义与Sculpt模式是一致的:

①  Tool Strength(笔刷强度)、Brush Size(笔刷尺寸)、Brush Falloff(笔刷衰减)、笔刷形状【Circle(圆形)、Alpha(透明度)、Pattern(图案)和Component(组件)】

② Circle(圆形)形状画刷周围衰减【Smooth(平滑)、Linear(线性)、Spherical(球形)和Tip(尖端)】的含义同Sculpt(塑形模式)中一样。

更多信息请查看:绘制模式

 

绘制工具

工具 说明
绘制(Paint) 以当前选定的笔刷和衰减的形式,增加或减少应用于地形的材质图层的权重。
平滑(Smooth) 平滑受其影响的地形范围内的图层权重。强度决定平滑量。
平整(Flatten) 将选定图层的权重设置为 工具强度(Tool Strength) 滑块的值。
噪点(Noise) 将噪点滤波器应用于图层权重。强度决定噪点量。
蓝图笔刷(Blueprint) 提供了一套用户自定义绘制笔刷

 

地形材质节点

地形材质也是一个普通的材质球。只是在材质中使用了一些地形节点的功能。这些节点如下:

更多请查看:地形材质

 

制作带颜色的地形材质

创建一个材质,然后在LandscapeLayerBlend节点上新建如下4个Layer(Grass、Flower、Rock、Ground),并分别为它们赋不同的颜色值

 

为地形设置材质

 

为地形层创建LayerInfo文件

注1:地形材质(Landscape Material )中定义的图层将自动在地形工具的 绘制(Paint) 模式下填充 目标图层(Target Layers) 列表中。

注2:地形图层决定纹理(或材质)如何应用于地形Actor。地形可以使用多个具有不同纹理的图层来创建最终的纹理地形。

 

注:选择保存LayerInfo文件的目录,然后点击OK按钮。

 

用选择的地形图层进行绘制

 

制作带纹理的地形材质

 

制作带植被的地形材质

创建LandScape Grass Type资产

 

设置LandScape Grass Type资产的StaticMesh

 

在地形材质中添加LandscapeGrassOutput结点和LandscapeLayerSample结点,并配置LandScape Grass Type资产

 

带颜色的材质效果

 

带纹理的材质效果

 

带植被的材质效果

 

孤立图层

如果一个图层在填充了一个地形的 目标图层(Target Layers) 列表后被从地形材质中移除,并且它已经在此地形上绘制了数据,那么它在此列表中将显示一个 ? 图标。这表示一个孤立图层。

 

控制台命令

grass.CullDistanceScale Multiplier on all grass cull distances.
grass.CullSubsections 1: Cull each foliage component; 0: Cull only based on the landscape component.
grass.densityScale Multiplier on all grass densities.
grass.DisableDynamicShadows 0: Dynamic shadows from grass follow the grass type bCastDynamicShadow flag; 1: Dynamic shadows are disabled for all grass
grass.DisableGPUCull For debugging. Set this to zero to see where the grass is generated. Useful for tweaking the guard bands.
grass.DiscardDataOnLoad 1: Discard grass data on load (disables grass); 0: Keep grass data (requires reloading level)
grass.DumpExclusionBoxes Print the exclusion boxes, debugging.
grass.Enable 1: Enable Grass; 0: Disable Grass
grass.FlushCache Flush the grass cache, debugging.
grass.FlushCachePIE Flush the grass cache, debugging.
grass.GuardBandDiscardMultiplier Used to control discarding in the grass system. Approximate range, 1-4. Multiplied by the cull distance to control when we discard grass components.
grass.GuardBandMultiplier Used to control discarding in the grass system. Approximate range, 1-4. Multiplied by the cull distance to control when we add grass components.
grass.IgnoreExcludeBoxes For debugging. Ignores any exclusion boxes.
grass.MaxAsyncTasks Used to control the number of hierarchical components created at a time.
grass.MaxCreatePerFrame Maximum number of Grass components to create per frame
grass.MaxInstancesPerComponent Used to control the number of hierarchical components created. More can be more efficient, but can be hitchy as new components come into range
grass.MinFramesToKeepGrass Minimum number of frames before cached grass can be discarded; used to prevent thrashing.
grass.MinTimeToKeepGrass Minimum number of seconds before cached grass can be discarded; used to prevent thrashing.
grass.PrerenderGrassmaps 1: Pre-render grass maps for all components in the editor; 0: Generate grass maps on demand while moving through the editor
grass.TickInterval Number of frames between grass ticks.
grass.UseHaltonDistribution Used to control the distribution of grass instances. If non-zero, use a halton sequence.
grass.UseStreamingManagerForCameras 1: Use Streaming Manager; 0: Use ViewLocationsRenderedLastFrame
landscape.BrushFramePadding The number of frames to wait before pushing a full Landscape update when a brush is calling RequestLandscapeUpdate
landscape.BrushOptim This will enable landscape layers optim.
Landscape.ClearDirty Clears all Landscape Dirty Debug Data
Landscape.Combine Set landscape component combining mode : 0 = Default, 1 = Combine All, 2 = Disabled
Landscape.DebugViewMode Change the view mode of the landscape rendering. Valid Input: 0 = Normal, 2 = DebugLayer, 3 = LayerDensity, 4 = LayerUsage, 5 = LOD Distribution, 6 = WireframeOnTop, 7 = LayerContribution
Landscape.DumpLODs Will dump the current status of LOD value and current texture streaming status
Landscape.FixSplines One off fix for bad layer width
landscape.Optim This will enable landscape layers optim.
landscape.OutputDiffBitmap This will save images for readback textures that have changed in the last layer blend phase. (= 1 Heightmap Diff, = 2 Weightmap Diff, = 3 All Diffs
landscape.OutputLayersDebugDrawCallName This will output the name of each draw call for Scope Draw call event. This will allow readable draw call info through RenderDoc, for example.
landscape.OutputLayersRTContent This will output the content of render target. This is used for debugging only.
landscape.OutputLayersWeightmapsRTContent This will output the content of render target used for weightmap. This is used for debugging only.
Landscape.Patches Show/hide Landscape patches
Landscape.ShadowMapWorldUnitsToTexelFactor Used to specify tolerance factor for mesh size related to cascade shadow resolution
landscape.ShowDirty This will highlight the data that as changed during the layer blend phase.
landscape.SimulatePhysics This will enable physic simulation on worlds containing landscape.
landscape.SplineFalloffModulation Enable Texture Modulation fo Spline Layer Falloff.
Landscape.Static Enable/disable Landscape static drawlists
landscape.TrackDirty This will track the accumulation of data changes during the layer blend phase.
r.LandscapeLOD0DistributionScale Multiplier for the landscape LOD0DistributionSetting property
r.LandscapeLODBias LOD bias for landscape/terrain meshes.
r.LandscapeLODDistributionScale Multiplier for the landscape LODDistributionSetting property
r.Mobile.CompressLandscapeWeightMaps Whether to compress the terrain weight maps for mobile.
r.Mobile.LandscapeHoleMesh Set to 0 to skip loading of landscape hole meshes on mobile.

 

扩展阅读

视频:A Boy & His Kite: An Animated Short | Unreal Engine        marketplace

草地工具快速入门 

程序化植被工具快速入门

开放世界场景工具提示和技巧

ContentExamples中的LandScape示例

Landscapes | 5-Minute Materials [UE4]

Landscape Grass | 5-Minute Materials [UE4]

Quick Unreal Engine 4 Grass Tutorial

 

标签:笔刷,地形,控制点,Landscape,UE4,grass,landscape
From: https://www.cnblogs.com/kekec/p/16907471.html

相关文章

  • 山地、山脉、山系、山区、地形之间区别
    山地、山脉、山系、山区、地形之间区别  山地是众多山体的统称,由山岭和山谷组合而成。山脉是沿一定方向有规律分布的若干相邻山岭的总称。山地延伸成脉状即为山脉。山脉构成中国地形的骨架,常常是不同地形区的分界,山脉延伸的方向称作走向山系是沿一定方向延伸,在成因上有......
  • Unity3D学习笔记(二)创建地形和漫游
    七月3201212:35上午上一章粗略介绍了一下Unity游戏引擎的概念定义和界面功能,这次就来实践一下。我们的目标是没有蛀牙(误),目标是创建一个地形,上面有山脉和盆地,然后再放置一个人物,以第一人称的视角来漫游、观察我们所创建的世界。 在开始设计游戏之前我们需要先重新......
  • UE4常用快捷键及快捷方法
    隐藏显示H/SHIFT+H快速复制ALT+鼠标左键(在平移对象时)视角变换鼠标左键/鼠标右键/鼠标滚轮+W/A/S/D/Q/E框选对象CTRL+ALT+鼠标左键......
  • UE4 自定义StaticMesh碰撞失效
    将画刷编辑的Actor转换成静态网格体后,原有的碰撞消失了,解决办法如下:首先在内容浏览器中找到需要更改碰撞配置的网格体双击进入静态网格编辑器页面,右侧找到细节面板找到碰撞-->碰撞复杂度-->选择将复杂碰撞用作简单碰撞保存即可......
  • [UE4]资源异步加载(Assets Asynchronous Loading)与内存释放(Free Memory)
    为什么需要异步加载资源,因为当一次性加载的资源较多或者单个资源较大时,普通的LoadObject()方式会阻塞引擎的主线程。 假设测试工程叫TestTD4,自定义Character叫ATestTD4Character(头文件为TestTD4Character.h)假设在Content/Assets/目录下放了三个动画文件(AnimSequence)。异步加......
  • UE4 Standalone Object继承树
    objclassesObject(48)GCObjectReferencer(120)TextBuffer(88)Field(56)Struct(192)ScriptStruct(208)MovieSceneKeyStructType(400)UserDefinedStruct(312)AISenseBlueprintListener(312)Class(632)......
  • 【虚幻引擎】UE4源码解析FWorldContent、UWorld、ULevel、UGameInstance、UEngine
    一、UEngineEngine,因为也是很基础的类,再加上开发过程中会经常访问到该类型,因此UE4引擎也在代码全局范围内定义了一个该类型的全局变量:UEngine*GEngine供开发者直接调用。该最基础的类型分化成了两个子类:UGameEngine和UEditorEngine。UGameEngine保存了唯一的一个UGameInstan......
  • UE4添加人物动画之前后左右移动
    这也一节,我们来使用动画状态机的逻辑。1)编译一下,回到UE4编辑器双击我们的动画蓝图,选择动画图标,创建一个状态机,并双击状态机。2)点击引脚拉出来一个节点选择添加状态。3)更改名字为Idle说明是静止状态,然后在Idle节点拉出一个Move节点表示是移动状态,然后再从......
  • UE4添加人物摄像机
    在这一节中,我们需要添加两个组件分别是摄像机弹簧臂组件和摄像机组件。摄像机弹簧臂组件摄像机弹簧臂组件,可以想象成是我们的手臂和手。手拿着摄像机,当我们想移动摄像机的时候,我们移动的是我们的手臂而不是摄像机。1)打开VS编辑器,在PlayingCharacter.h文件添加摄像机弹簧组......
  • UE4添加人物模型
    在正式使用UE4添加人物模型之前,我们先来解释几个概念。什么是组件在添加人物模型之前先介绍一个概念叫“组件”,组件是什么呢?组件的作用是为了让Actor实现一个功能,比如说:我们现在的角色,没有模型,我们需要一个模型那怎么办呢?那么我就要在Character身上挂一个“骨骼模型组件”......