针对游戏的剧情设计:角色流落荒岛,寻找食物和水,等待救援。只有按时找到才能存活。否则游戏失败了。

新建一个第三人称游戏。可以将项目名称命名为《CastAway》

启动Landmass插件

然后启用Water插件。

然后删除场景中不需要的东西。保留荒岛可用的光线、渲染、人物、后处理体积等。

然后将当前场景保存。

新建Maps文件夹

 然后将当前关卡,保存到maps中,然后命名为CastAway。为我们的主关卡。

我们希望每次打开项目时,CastAway关卡为默认打开的关卡,而不是每次都是第三人称视角。

【项目设置】【地图和模式】【默认地图】将【开始地图】和【默认地图】设置为刚才保存的CastAway关卡。

然后保存所有。

准备工作做完了。接下来转入雕刻构建场景和地图。




地形LandScape

首先进入到地形模式中。

我们要创建一张材质:当垂直面时,它是岩石,当水平面时,它可以覆盖植被,当在底层时,他可以是一些砂砾。百度一张海岸风景。

为了做到这点:我们创造一种景观材料。

我们在内容抽屉中,新建一个文件夹【Materials】,用来存储材质。然后进入其中,右键新建材质,命名为ML_Landscape。然后双击进入材质编辑。

这个LandscapeLayerBlend可以让我们编辑不同的地貌图层,并且混合在一起。

我们将需要3种不同的材质:SandRockGrass

我们可以从Megascans(Quixel Bridge)Library中获取。当前看来在左侧:当前图层数为零。 我们需要添加四个图层。分别是:Sand,Rock, Grass, Automatically combine。

设置好图层之后,我们需要将所有图层的所需纹理摆在材质编辑界面中。但是这样会使的整个界面非常混乱和复杂。最好的做法:我们把每一层分解成他们各自的材料函数【Material Function】。所以我们从内容抽屉中,新建【材质和纹理】【材质函数】,然后命名为MF_Grass。



我们需要从Bridge中,选择一种草地的材质。然后作为基础材质,配置出我们想要的自己的草地材质。

从内容抽屉中,将草地的diffuse、Roughness、NormalMap。拖入到编辑区域中,待用。

然后我们需要一个关于材质的属性结点,用于连接这些编辑项或者配置项。

再配置纹理前,需要牢记一点,我们的场景很大,这种情况下,在部署纹理时,很容易导致草地纹理不断重复平铺的现象。有一个技巧:

你可以根据距离的远近来控制重复的次数:我们可以通过最小化纹理来实现。

为了控制远近,我们需要一个坐标系,来计算距离的远近。

添加一个LandscapeLayerCoord节点。景观层坐标节点。

将坐标接入到Multiply节点。输入multiply或者快捷键M加鼠标左键。

同时需要一个Scalar。常量值,constant或者数字1加左键。然后将其参数化。右键转换为参数。

这个属性参数用来:根据我们与纹理的接近程度来改变纹理的大小。参数命名为:GrassClose。

我们希望所有的UV值跟随距离一起变化。所以Mulitply节点接入所有的UVs中。

如果我们远离Grass时,我们希望UV值也跟着改变,如何操作?复制上面的节点。重新影响UV值。将景观坐标节点重用。然后将常量参数节点复制,重命名为GrassFar。然后连接新的UVs值。

我们将GrassClose默认值设置为0.5。然后将GrassFar默认值设置为0.005。


然后我们需要一个线性插值的结点。通过距离来控制画面的显示。

线性插值节点,快捷键:L+左键。每一个属性(Diffuse、Roughness、NormalMap)特征都需要一个插值节点。

这个插值是从大向小(从近向远)之间的插值。所以。需要近和远的值,分别接入到线性插值的A点和B点中。

Diffuse的值,选择RGB即可。

至于Roughness。 我们点击查看发现,只有R通道信息最全。

至于NormalMap。我们选择RGB。

接下来,我们需要DistanceBlend。关于距离的过渡

这个DistanceBlend,有两个参数:一个是BlendRange,一个是:StartOffset。

常见做法是:新建两个常量,然后将其转为参数。数字键1+鼠标左键。然后右键:转换成参数。

分别命名为:BlendRangeStartOffset。分别设置默认值为10000和-3000。

我们将上图NormalMap和Roughness换一下位置。然后将Roughness的线性插值模块连接至输出设置属性的Roughness和AmbientOcclusion环境遮挡。然后将Diffuse的线性插值模块和BaseColor连接到一起。NormalMap和NormalMap连接。保存、编译。完成对Grass的配置。

然后回到Content Drawer中,然后复制粘贴材质,分别命名为MF_Rock和MF_Sand。

然后分别将材质更换。先更换Sand。按住Ctrl,然后多选,选中两个Diffuse。

选中长距离和短距离下材质的Diffuse然后将纹理更换为Sand对应的Diffuse。

然后是Roughness。

最后是NormalMap

然后是Rock。

 

 这样我们把材料函数MF配置好,然后插入到LandScape我们每一个图层的混合槽中。

然后添加一个BreakMaterialAttributes,

这个BreakMaterialAttribute将把所有的材质,分解成单独的属性。

接下来我们处理一下这个自动图层AutoLayer,自动图层根据地形的坡度决定前进的角度,然后在草地和岩石上Paint。为了实现这一点,我们将使用一个名为WorldAlignedBlend的节点。需要两个输入:一个是Blend Sharpness,这个就是斜率。第二个是Blend Bias,偏差,决定这些材料如何混合在一起。两个标量。

按1,然后左键。然后右键将其转换为参数。命名为Slope Angle。然后第二个标量转换为参数,然后命名为Blend Bias。

我们需要命名BlendMaterialAttributes的节点,将两个不同的函数融合在一起。

然后将融合函数与AutoLayer图层连接。

接下来,我们在内容抽屉中,找到StarterContent下的Materials下面的M_Metal_Gold。双击打开。

这个材质有两个模块,一个是宏观纹理变量。另一个是降低宏对比度 。

这两个模块:有助于打破颜色,使其看起来更加真实。

我们将其应用到我们的景观纹理上,它将景观纹理分解,使它们看起来更可信。

将两个框,Ctrl + C,然后,复制到我们的LandScape材质中。

然后引入一个Multiply节点。如上图,通过multiply将两部分融合起来。

最后应用保存。关闭返回到主界面中。

这里就是我们要设置地形材质的地方。但是在此之前,我们要确保这是一个材质实例。 

将材料实例命名为:MLI_LandScape。然后双击,将我们设置的参数全部启用。

关闭返回到主页面。然后将材质实例拖动,放入主页面的地形材质中。 

切换到地形编辑模式下。

切换到【绘图】选项,点击加号 + 。我们需要制定这些层是权重混合层还是非权重混合层。

所有这些材质图层都是权重混合图层。 将参数保存在默认路径下。

设置完成后,整个页面风格开始改变。

然后开始雕刻。雕刻时,我们在【Paint绘制】界面选择要绘制的图层(沙子,岩石,草地等),然后在【雕刻】界面中,雕刻出我们需要的地形结构。绘制岩石,切换到绘制界面下,点击岩石图层。绘制时,可以调整绘制刷子的大小。

我将陡峭的地方绘制为岩石。顶端带有一点植被。山体用沙子雕刻而起。

如果不喜欢自己的作品,可以删除LandScape下的所有文件,删除LandScape。

然后进入地形编辑模式,选择重新建一个地形。

然后重新设置选择地形材质,MLI_LandScape。这次我们选择Auto图层。选中Auto图层,设置为权重混合图层。进行绘制和雕刻。如果我们可以直接利用之前的权重。也可以。

此时应该是Grass,而不应该是石头。因为,我们在材质实例中,并没有指定岩石何时开始倾斜。即指定岩石倾斜的角度。我们双击打开材质实例的配置项。

 如果我们把起始倾斜角度设置为30度。那么场景中。立马变成草地。

而且草地上的草也是特别的大。我们修正一下草的大小。修改参数GrassFar参数。 

此时的草地也会出现平铺的现象。

我们将参数设置如下:

 如果此时我们开始雕刻,会发现:还是无法出现岩石,我们需要将BlendBias设置为-10。 

我们实现了这种陡峭位置岩石光秃,然后平整位置草地的雕刻图层Auto效果。




UE5笔记【十四】漂流者游戏制作【一】地形材质准备相关推荐

  1. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:// ...

  2. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  3. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  4. 【Visual C++】游戏开发五十七 浅墨DirectX教程二十四 打造游戏GUI界面(二)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/16922703 作者:毛星 ...

  5. 强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现

    强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现 TD3算法简介 TD3是Twin Delayed Deep Deterministic policy gradie ...

  6. photoshop第十四章:制作阳光浪漫场景效果

    第十四章:制作阳光浪漫场景效果 1.制作良辰美景效果 素材: 1 2 3 4 5 效果: (1)打开照片"背景" (2)选中工具栏中的"矩形选框工具"-> ...

  7. 【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结

    本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/78884513 导读 这是一篇1万3千 ...

  8. 【转载】【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结

    本文由@浅墨_毛星云 出品,转载请注明出处.    文章链接:  http://blog.csdn.net/poem_qianmo/article/details/78884513 导读 这是一篇1万 ...

  9. 机器学习笔记十四:随机森林

    在上一篇机器学习笔记十三:Ensemble思想(上)中,简要的提了一下集成学习的原理和两种主要的集成学习形式.  而在这部分要讲的随机森林,就算是其中属于bagging思路的一种学习方法.为了篇幅,b ...

最新文章

  1. Spring MVC Controller 要点
  2. mssql,mysql,oracle中查询数据库表的比较
  3. docker 保存 环境持久化_18、docker的持久化存储和数据共享
  4. 【UOJ207】共价大爷游长沙【LCT】【异或】【随机化】
  5. poj doubles_余数运算符在Java中用于Doubles
  6. 怎么用python画饼状图_Python入门进阶:Python绘制饼图到Microsoft Excel
  7. Python flask 特殊装饰器 @app.before_request 和 @app.after_request 以及@app.errorhandler介绍
  8. 数据结构:单链表和双向链表
  9. PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.13. 事件系统
  10. 2018-2019-1 20165214 《信息安全系统设计基础》第八周学习总结
  11. HTML5 学习总结(二)——HTML5新增属性与表单元素
  12. 文本相似度计算--余弦定理和广义Jaccard系数
  13. ACL实验详细过程讲解
  14. 操作系统原理第五章(资源分配与调度)
  15. 执行SQL语句时出现问题操作必须使用一个可更新的查询错误的解决方法
  16. oracle优化日记脚本
  17. 前端连接websocket失败_websocket连接失败后多久会触发error事件?
  18. [代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE
  19. 非参数统计的Python实现——卡方独立性检验
  20. 华为不要php开发,华为手机开发者选项的利与弊!有些设置最好不要打开

热门文章

  1. 练习(一)——决策树与随机森林分析Titanic数据集船员生还情况
  2. 学会浪漫!男士必看!
  3. 虚拟网络技术:TUN设备
  4. 你对python有什么看法_对python的看法
  5. 华为手机恢复出厂设置出现com.android.phone,华为手机恢复出厂设置后怎么还原【图文】...
  6. 不使用接口的方式获取数据(登录无验证码)
  7. window环境鼠标右键菜单使用微信快捷键如何截图?
  8. 字符串连接函数strcat
  9. 2017 Deformable ConvNets V1介绍及分析(包括代码)
  10. 巧用条件表达式—表达式1?表达式2:表达式3