持续记录,  虚幻-UE4

UE4-1-世界场景构建总览及基础名词

本文于2021年1月31日由AlvinCR更新

本文包括:世界场景构建;构建总览;游戏渲染建模常用到的相关名词-(烘焙、法线、LOD、UV坐标、各向异性)

 

本文由AlvinCR总结自官网教程:

https://learn.unrealengine.com/course/3584597/module/6933184

一:世界构建

1 UE版本

场景构建的理念:以关卡为中心的工作流,

UE1-》UE2-》UE3-》UE4

BSP网格-》BSP+网格体混合工作流,添加网格-》添加Kismet可视化脚本+编辑器-》添加蓝图+工具

2 构建流程

上图从1-8依次为:

1:编辑器的各种工具。

2:类、内容、集合。

3:编辑器,通过工具和类等进行创建,创建后倒入引擎编辑器中,生成一个关卡。

4:关卡,生成的关卡。

5:重建,如果是动态的则可以进行重建。

6:子关卡

7:运行测试

8:设置及其它工具

通过各种工具协同才能构造出关卡,这就要求使用的工具和子编辑器都需要遵守相同的样式、相同的逻辑。

二:世界场景构建

1:运行体验项目

2:可放入世界场景的选项,可以被触发,不能放入3Dactor

3:可放入世界场景的3D项目,例如模型、人物

4:辅助构建3D项目的3D工具

5:控制关卡的工具,能够控制项目、3D项目

6:重建流程

7:关卡流送

8:性能工具

1 普通项目内容

(1)声音发射器

(2)粒子发射器

(3)反射捕获器。用于渲染,包括:球体反射、平面反射以及盒型反射

(4)光源。定向光源、点光源、聚光源、矩形光源、天光源。此外可以将其设为被烘焙过的静态光源、可移动的动态光源、介于两者之间的混合光源

(5)体积。可以设置包括隐形的碰撞物等一系列体积,还可以通过销毁ZVolume来限制玩家活动范围:当进入设定高度以下时将会死亡。

(6)几何体编辑。可以修改体积等选项参数

(7)蓝图。UE的核心内容,不仅可以用于游戏玩法,还有助于构建世界场景和管理内容。AlvinCR非常喜欢可以自动化添加场景的工具,

(8)其它:工作流、Gameplay、触发器、玩家出生点、生成点

2 3D项目

2.1 静态网格体

UE中默认使用静态的3D网格体,场景中很多物品都是采用静态网格体进行填充。

以下工具用于辅助生成静态网格体:

<1> HOLD。用于组合远处的网格体

<2> 实例化静态网格。在UE中的普通网格体不是实力静态化网格体,而是在内存中批量处理。

<3> 样条。通过设置样条,使得网格体跟随样条进行设置,用于制作管道和栏杆类的倾斜网格体。

<4> 骨骼网格体。用于制作人物模型。

<5> 几何体编辑器,仅用于制作原型测试以及白盒测试,在项目中使用可能会出现问题。因为这里用的是BSP(二进制空间分区)的原始版本。

<6> 程序化网格体,允许对生成的网格体进行编码。

<7> 环境部分。添加植被和地形,通过UE设置的植被可以批量生成,处理的时候也是批量进行处理,AlvinCR觉得实际使用效果不错,并没有重复性的感受。

<8> 几何体集合。Chaos可破坏物为几何体集合提供相关的功能,chaos是UE新的系统,可以生成可破坏物场景,因此几何体集合具有存储和破裂网格体的能力

<9>地形系统。通过添加小的区域方块地图来构造整个地图。小型区块地图可以设置为各种形状,此外还提供雕刻功能。

<10>天空。实际上是一个巨大的网格体,一般将天空设置为球体,再设置材质。-

2.2 3D工具

<1> 雕刻工具

<2> 建模工具

<3> UV工具。可以重置UV和修改引擎中的UV,用于修改光照贴图。

<4> 简化网格体,可以生成LOD、构建小程序蓝图及脚本

<5> 控制关卡。主要有四个工具,世界属性(主要)、包含时间轴(用于控制门等物体活动,无需设置骨骼)的关卡蓝图、变体管理器、Sequencer

<6> 重建。

重建贴图、体积光照贴图(可以使得关注度更高的位置获得更高的光照效果,从而排除背景,使背景占用更低的资源)、计算与构建HLOD、反射捕获、导航网格体、光照贴图

<7> 流送。

2.3 子关卡

在创作大型场景的时候非常有用,在编辑器中会有一定的延迟,但是在打包之后将采用完全异步运行,因此不能用编辑器的流畅度来判定游戏实际效果。

2.4 关卡流送

  1. 使用蓝图函数或代码。
  2. 关联的体积。
  3. 世界场景构建。将父关卡设置为持久关卡,设置子关卡作为父关卡的补充,可以设置一个距离进行加载预设,当XY轴(不包括Z轴)接近预设位置时。

由于网络卡顿,明天继续

www.alvincr.com更新中……

 

 

——下文2021.1.30编辑———

3 其它参数

  • 状态查询。stat
  • GPU信息。
  • 统计数据面板。可以查看纹理及光照
  • 视图模式。
  • 绘画距离。可删除远距离网格体
  • 可延展性。
  • 世界详情。

 

 

 

三:相关名词

1 烘焙

1.1 个人理解

烘焙是3D MAX中的术语,其它建模中也经常使用到,烘焙通过将光照信息渲染成贴图,然后将贴图贴回场景,由于光照需要实时渲染而贴图只需要普通渲染,因此可以节省GPU/CPU资源。

 

普通渲染时会根据光照分布生成相应的图像,而烘焙相当于直接将最终效果记录在硬盘中,再次打开的时候就直接从硬盘读取,不需要在临时渲染,因此对于复杂场景的渲染有重要意义,但是对于静态帧而言则意义不大。

 

通过创建2D位图图片并根据UV坐标映射到物体上,来实现烘焙的效果。烘焙,虽然能够节省渲染时间,但是在开发过程中进行运行和配置需要耗费一定的时间,可能会出现卡顿的情况。

1.2 相关文章

https://www.foro3d.com/f223/texturing-techniques-to-enhance-your-images-76896.html

 

Render baking creates 2d bitmap images of a Mesh object rendered surface. These images can be re-mapped onto the object using the object UV coordinates. Baquíng is done for each individual Mesh, and can only be done if that Mesh has ben unwrapped. While it takes time todo set up and Perform, it sabes render time. If you are rendering a long animation, the time spent baking can be much less than time spent rendering out each frame of a long animation.

 

Use render bake in intensive light/shadow solutions, such as AO or software shadows from área lights. If you bake AO for the main objects, you Will not have todo enable it for the full render, saving render time.

 

Use full render or textures todo create an image texture, baked procedural textures can be used as a starting point for further texture painting. Use normals todo make a Low-resolution Mesh look like a high-resolution Mesh. To do that, unwrap a high-resolution, finely sculpted Mesh and bake its normals. Save that Normal Map, and map todo the UV of a similarly unwrapped Low-resolution Mesh. The Low-resolution Mesh Will look just like the high-resolution, but Will have much fewer Faces/Polygons.

 

 

2 法线

2.1 参考文章

法线贴图(英语:Normal mapping)是一种模拟凹凸处光照效果的技术,是凸凹贴图的一种实现。法线贴图可以在不添加多边形的前提下,为模型添加细节。常见的使用场景是为低多边形模型改善外观、添加细节,此时的法线贴图一般根据高多边形模型或高度贴图生成。——WIKI

 

 

https://learnopengl.com/Advanced-Lighting/Normal-Mapping

The lighting doesn’t take any of the small cracks and holes into account and completely ignores the deep stripes between the bricks; the surface looks perfectly flat. We can partly fix the flat look by using a specular map to pretend some surfaces are less lit due to depth or other details, but that’s more of a hack than a real solution. What we need is some way to inform the lighting system about all the little depth-like details of the surface.

 

If we think about this from a light’s perspective: how comes the surface is lit as a completely flat surface? The answer is the surface’s normal vector. From the lighting technique’s point of view, the only way it determines the shape of an object is by its perpendicular normal vector. The brick surface only has a single normal vector, and as a result the surface is uniformly lit based on this normal vector’s direction. What if we, instead of a per-surface normal that is the same for each fragment, use a per-fragment normal that is different for each fragment? This way we can slightly deviate the normal vector based on a surface’s little details; this gives the illusion the surface is a lot more complex:

 

2.2 个人理解

物理中的法线是指:始终垂直于某平面的虚线,在法线贴图中也类似于物理中的辅助显示效果。

这里的法线贴图实现的效果类似于游戏中的各向异性光照,都具有占用的性能很低、细节提升大的特点。通过将具有高细节的模型烘焙出法线贴图,并将其贴在低端模型的法线贴图上,使原有模型变成拥有光影分布的新模型,从而达到优化动画和游戏的渲染效果,并且还能能大大降低表现物体渲染时需要的面数,节省计算资源。

 

2.3 纹理为什么偏色

几乎所有法线贴图都是偏蓝色调的纹理。这是因为所有法线指向都偏向于z轴(0, 0, 1),而Z轴使用偏蓝的颜色进行显示。由于法线向量从z轴方向也向其他方向轻微偏移,因此颜色也发生了轻微变化,这样看起来便有了一种深度。偏向Y轴的纹理则偏绿色。

 

3 LOD

LOD全称Levels of Detail,即细节层次。,当物体覆盖屏幕较小区域时,可以使用该物体对较粗糙的模型进行描述,较大的物体则采用与其规模相匹配的精细模型,通过此方法对复杂场景进行快速绘制。

 

LOD技术在不影响画面视觉效果的条件下,通过逐次简化景物的表面细节来减少场景的几何复杂性,从而提高绘制算法的效率。该技术通常对每一原始多面体模型建立几个不同逼近精度的几何模型。与原模型相比,每个模型均保留了一定层次的细节。在绘制时,根据不同的标准选择适当的层次模型来表示物体。

 

 

 

4 UV坐标

4.1 参考文章

“UV”这里是指u,v纹理贴图坐标的简称(它和空间模型的X, Y, Z轴是类似的). 它定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面纹理贴图的位置. UV就是将图像上每一个点精确对应到模型物体的表面. 在点与点之间的间隙位置由软件进行图像光滑插值处理. 这就是所谓的UV贴图. 那为什么用UV坐标而不是标准的投影坐标呢? 通常给物体纹理贴图最标准的方法就是以planar(平面),cylindrical(圆柱), spherical(球形),cubic(方盒)坐标方式投影贴图. Planar projection(平面投影方式)是将图像沿x,y或z轴直接投影到物体. 这种方法使用于纸张, 布告, 书的封面等 – 也就是表面平整的物体.平面投影的缺点是如果表面不平整, 或者物体边缘弯曲, 就会产生如图A的不理想接缝和变形. 避免这种情况需要创建带有alpha通道的图像, 来掩盖临近的平面投影接缝, 而这会是非常烦琐的工作. 所以不要对有较大厚度的物体和不平整的表面运用平面投影方式. 对于立方体可以在x, y方向分别进行平面投影, 但是要注意边缘接缝的融合. 或者采用无缝连续的纹理, 并使用cubic投影方式. 多数软件有图片自动缩放功能, 使图像与表面吻合. 显然, 如果你的图像与表面形状不同, 自动缩放就会改变图像的比例以吻合表面. 这通常会产生不理想的效果, 所以制作贴图前先测量你的物体尺寸.——Baike

4.2 个人总结

对于一个二维的图像文件而言,通过水平和垂直方向就能描述出:文件中的模型在场景中的位置。把水平方向记为U,垂直方向记为V,这样就确定了二维的UV坐标系,就可以直接定位图像的位置。

使用UV坐标能够避免投影坐标产生夸张弯曲的现象,得到较为理想的效果。

 

 

5 各向异性

5.1 各向异性光照

参考:https://docs.unrealengine.com/udk/Three/AnisotropicLightingCH.html

各项异性表面从表面上细致的纹理、槽或丝缕来获得它特有的外观,比如拉丝金属、CD的闪光面。当使用普通的材质进行光照时,计算仅考虑表面的法线向量、到光源的向量、及到相机的向量。但是对于各向异性表面,没有真正可以使用的连续的法线向量,因为每个丝缕或槽都有各种不同的法线方向,法线方向和槽的方向垂直。

 

5.2 各向异性过滤

参考:WIKI

各向异性过滤(英语:Anisotropic filtering,简称AF)是一种3D显示技术,如其名称所示,它是对周围各个方向上的像素进行取样计算后映射到目标像素上的技术。与双线性过滤和三线性过滤相比,它在大角度显示方面具有更高的精度,令画面更逼真,但计算量也更大,对显卡的要求也更高。

 

5.3 各向异性滤波

 

各向异性扩散滤波主要是用于处理平滑图像,克服了高斯模糊的缺陷。图像倾向于向差异值不大的地区运动,因此差异较大的区域就得以保留,所以本质上各向异性滤波是图像边缘保留滤波器(EPF)。

AlvinCR个人理解:

传统的双/三线性过滤使用的是各向同性,各方向的矢量值相同,通过将相邻像素及其关系记录下来,然后再视角改变之时展示出两者之间的差异。各向异性过滤采样的数量相对于各向同性而言更多,因此效果更好。各向异性与各向同性都是为了处理纹理之间的细节部分,因为两者的作用都是处理像素及其相邻像素的关系。

 

Leave a Reply

邮箱地址不会被公开。 必填项已用*标注

UE4-1-世界场景构建总览及基础名词