阿赵UE学习笔记——16、渲染性能相关

本文介绍了如何在虚幻引擎中评估和优化灯光性能,包括使用光照复杂度检查场景中的照明效果,光照贴图密度帮助调整模型UV,以及着色器复杂度和四边形过度绘制模式用于识别性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿赵UE学习笔记目录

  大家好,我是阿赵。
  继续学习虚幻引擎的使用。上一篇说了灯光的移动性问题,这一篇来看看怎样去辨别灯光性能的好坏。
  虚幻引擎里面有一组显示模式是专门用来看场景当前的灯光和网格渲染的,叫做优化试图模式:
在这里插入图片描述

1、光照复杂度

  打开一个打了灯光的场景,找一个场景的角落,然后选择光照复杂度:
在这里插入图片描述

  可以看到场景变成了各种颜色的叠加:
在这里插入图片描述

  这些颜色代表的含义,在下面有一个颜色参考条,最左边的颜色,是最好的,最右边的颜色,是最差的。刚好我这个截图里面,好的和差的情况,都有出现,说明了这个局部里面打的灯光比较复杂。
  如果换一个角度看,情况就会不一样了:
在这里插入图片描述

  这一边的光照比较简单,所以一片还是保持在比较好的范围。
在这里插入图片描述

  如果觉得上面的场景很复杂,也可以自己建一个小场景去测试一下:
在这里插入图片描述

  这个场景有直射灯、聚光灯和点光源,可以看到不同的光源会产生一个自己的范围,然后互相叠加。
在这里插入图片描述

  通过光照复杂度,我们想做的事情事检查一下场景里面哪些地方的光照复杂,在不太影响整体效果的情况下,尽量降低光照的复杂程度。

2、光照贴图密度

  同样的打开一个场景然后进入光照复杂密度显示模式:
在这里插入图片描述

  这个时候,就看到了场景里面的模型变成了不同深浅的蓝色或者绿色的情况,然后模型上面显示着格子,有点类似于我们在三维软件里面展UV时的UV格子的感觉。
在这里插入图片描述

  由于这个场景还是太复杂了,为了简单观察,还是回到简易场景看看:
在这里插入图片描述

  这个时候可以看出,地面的面片和上面的立方体,他们的格子大小不一样,显示的颜色也不一样。这个代表的是他们展了第二套用于Lightmap的UV,在实际的Lightmap里面占的大小。
  这个概念对于做展UV和模型贴图的朋友会比较熟悉。在使用同一张贴图的情况下,两个模型如果展UV时大小差别很大,那么出来的效果就是两个模型显示贴图的精度会有差别,一个模型清晰一个模型模糊。如果是这样两个模型摆在同一个场景里面,效果会很奇怪。
  同样的,如果在同一个场景里面烘焙Lightmap的两个模型,一个UV占得多一个UV占得少,就会导致模型上的阴影显示精度不一致,也会很奇怪。
  所以我们需要根据这个光照贴图密度来调整,调整的方式有2种:

1.静态网格导入修改

  打开静态网格模型的导入编辑窗口
在这里插入图片描述

  这里搜索lightmap,会看到一个光照贴图分辨率。修改这里的数值,会让所有用到同一个静态网格的模型对象身上的光照贴图分辨率变化。

2.在细节面板修改

  在场景里面选择某个物体对象,然后在细节面板搜索lightmap
在这里插入图片描述

  会找到一个覆盖的光照贴图分辨率。把前面的勾勾上,这个时候,这个对象会忽略了静态网格设置里面的光照贴图分辨率,而使用这个细节面板选项的值。
  两种方法各有好处,根据自己的实际情况来调整就可以。
  经过了微调之后,现在面片和立方体身上的格子大小已经比较的接近,显示的颜色也差别不是很大了。这个时候就证明了我们烘焙Lightmap后,这两个模型的显示精度差别不大。
在这里插入图片描述

3、固定光源重叠

  这个选项是针对光源的移动性为“固定”的情况,固定类型光源本身是可以烘焙光源,又可以使用动态影子的,但固定光源的重叠本身是有上限的,上限是4个。
在这里插入图片描述

  比如下图这个简易场景,我打了很多灯光,有点光源也有聚光灯,它们的类型全部都是固定。
在这里插入图片描述

  可以从场景上看到,有几个灯光的图标上面出现了红色的叉,这几个有叉的光源,代表的意思是,固定光源重叠超过了4个,当前的光源被改为了可移动的。
  如果构建灯光,也可以在消息日志里面看到这部分的说明。
  不过阿赵我没搞懂的是,我进入固定光源重叠模式看,却没有看到说明文档里面提到的可以直观看到哪些灯光会由于叠加而颜色。有知道的朋友麻烦告诉一下我,谢谢。
在这里插入图片描述

4、着色器复杂度

  我觉得这是一个挺牛的功能。我在Unity里面也写了好多年Shader了,但实际上在整个场景里面,有哪些地方使用了比较复杂的Shader计算,我一直都只能是凭感觉来猜。但UE却直接有这样的功能可以显示:
在这里插入图片描述

  在整个场景变了颜色之后,下面有一个颜色条,说明了对应颜色Shader的复杂度
在这里插入图片描述

  这样,就可以很快的找出复杂的Shader,然后进行优化了。

4、着色器复杂度和四边形

  这个模式是在着色器复杂度的基础上,加上了四边形过度绘制的显示:
在这里插入图片描述

  可以看到,除了刚才的Shader复杂度颜色,场景里面还显示出了线框
在这里插入图片描述

5、四边形过度绘制

  这个模式显示的是网格模型绘制的情况
在这里插入图片描述

  场景里面的物体颜色改变了,然后显示了线框。下面有一个颜色条作为好坏对比。
在这里插入图片描述

  这个其实挺有意思的,我经常告诉美术同事,模型不是做得面数越高就越好,首先要看模型在场景里面的显示的大小,是否真的需要做那么精细的模型网格结构,然后看是不是细节的部位一定要用模型网格表达,是否可以用贴图来表现。
  这个四边形过度绘制模型,可以让我们看到哪些地方的网格模型是做得过于密集的。

<think>嗯,用户想要了解UE5中的蓝图基础,特别是键盘和鼠标操作移动。首先,我需要回忆一下UE5的相关知识,确保自己掌握正确的信息。蓝图系统是UE的核心视觉脚本工具,对于没有编程背景的用户来说特别友好。 用户提到的键盘和鼠标操作移动,应该涉及到输入事件的绑定和如何通过蓝图处理这些输入。可能包括移动角色、旋转视角这些基础操作。首先,我需要分解步骤:如何设置输入轴映射,如何在蓝图中获取这些输入值,然后应用到角色移动上。 键盘操作通常涉及WASD键控制前后左右移动,而鼠标移动控制视角旋转。在UE中,这些通常通过“输入轴”来配置。可能需要指导用户进入项目设置,添加轴映射,比如“MoveForward”绑定W和S键,Scale分别为1和-1,类似地处理左右移动。鼠标方面,需要设置水平轴和垂直轴的鼠标X和Y输入。 接下来是蓝图部分,特别是角色蓝图中如何获取这些输入值,然后应用移动和旋转。Character类自带了移动组件,所以可能需要使用Add Movement Input和Add Controller Yaw/Pitch Input这些节点。需要注意的是,鼠标旋转可能涉及到控制器的旋转,而角色移动则是基于控制器的方向。 用户可能有疑问的地方包括:如何正确连接轴事件到移动节点,如何处理旋转的速度,可能还需要调整输入灵敏度。另外,是否需要开启鼠标显示或锁定光标的位置,比如在游戏模式下隐藏光标,这样鼠标移动可以控制视角而不受限制。 还有可能涉及到的问题,比如角色移动的方向是否与摄像机方向一致,这时候可能需要使用Get Control Rotation来获取控制器的旋转,并计算移动方向。如果用户遇到移动方向不正确的问题,可能需要检查是否使用了正确的旋转向量。 另外,用户可能需要了解如何测试这些输入设置,比如在游戏模式下运行查看效果,以及如何调试蓝图逻辑,例如打印输入值到屏幕,确保输入事件被正确触发。 需要提醒用户注意的一些常见错误,比如输入轴名称拼写错误,节点连接错误,或者没有正确设置pawn的自动控制玩家为Player0。这些都会导致输入无法被正确接收。 最后,可能需要给出一个完整的蓝图示例,展示从输入事件到移动和旋转的完整流程,帮助用户更直观地理解。同时,推荐一些进一步学习的资源,如官方文档或教程视频,以便用户深入学习。</think># UE5蓝图基础:键盘鼠标操作移动 ## 一、输入系统配置 1. 打开`项目设置` → `引擎-输入` 2. 创建轴映射: - `MoveForward`:W(Scale 1.0)/S(Scale -1.0) - `MoveRight`:D(Scale 1.0)/A(Scale -1.0) - `Turn`:Mouse X - `LookUp`:Mouse Y ## 二、角色蓝图设置 ### 键盘移动实现 ```cpp // 事件图表 Event Tick → Get Axis Value(MoveForward) → Add Movement Input(GetActorForwardVector()) Get Axis Value(MoveRight) → Add Movement Input(GetActorRightVector()) ``` $$ \text{移动向量} = \text{输入值} \times \text{方向向量} \times \Delta Time \times \text{移动速度} $$ ### 鼠标视角控制 ```cpp // 事件图表 Event Tick → Get Axis Value(Turn) → Add Controller Yaw Input Get Axis Value(LookUp) → Add Controller Pitch Input ``` $$ \text{旋转角度} = \text{输入值} \times \text{灵敏度} \times \Delta Time $$ ## 三、关键参数设置 1. 移动速度:建议初始值600-1200 2. 鼠标灵敏度:推荐X轴0.5-1.5,Y轴0.3-1.0 3. 摄像机限制: - 俯仰角限制(-70°~70°) - 使用`ClampAngle`节点 ## 四、常见问题解决 1. 角色不移动: - 检查Pawn的`Auto Possess Player`是否设置为Player0 - 确认角色碰撞体设置 - 验证移动组件是否启用 2. 鼠标控制失效: ```cpp // 在玩家控制器中设置 bShowMouseCursor = false bEnableClickEvents = false bEnableMouseOverEvents = false ``` ## 五、进阶技巧 1. 输入平滑处理: $$ \text{平滑输入} = FMath::FInterpTo(\text{当前值}, \text{目标值}, \Delta Time, \text{插值速度}) $$ 2. 移动预测: ```cpp Predict Projectile Path By ObjectType → 绘制移动轨迹预览 ``` 建议结合`Enhanced Input`插件实现更复杂的输入处理,可通过`Input Action`创建复合输入事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值