找回密码
 立即注册
查看: 432|回复: 15

【UE4】浅谈LOD(Level Of Details)

[复制链接]
发表于 2023-1-5 09:45 | 显示全部楼层 |阅读模式
本菜鸡不才,如有纰漏,欢迎各路神仙指出。





一、LOD 简介:

LOD:(Level of Details),简称为多细节层次。LOD技术根据模型的节点在显示环境中所处的位置(Screen Size)和重要度,来决定物体渲染的资源分配,降低非重要物体的面数和细节数,从而获得高效率的渲染计算。



我们在吃鸡跳伞的时候,地面上的树和房子是逐渐从模糊变清晰的,由简面变精面的,根据距离的不同所需要渲染的模型的精度当然也不同,要不然整个场景如果都按最优化进行渲染,不是画面卡成PPT,就是手机背面能煎鸡蛋。


二、相关DCC软件改变模型不同的面数方法:

在Blender当中我们可以使用以下两个Modifier对模型进行面数的增减:

  • 我们用Decimate给模型减面,使模型更加简单
  • 用Subdivision Surface进行加面,使模型更加精致




三、UE4自动生成LOD:

【3.1】准备模型以进行测验

我们可以先将UE4当中的小白人(Skeletal Mesh)变成 Static Mesh(静态网格物体)(额,其实Skeletal Mesh也是可以的,文末展示)

  • 骨骼网架体,缩略图(Thumbnail)为 大红色
  • 静态网格体,缩略图(Thumbnail)为青色


打开Static Mesh后,屏幕左上角有我们模型的详细参数,包括模型面数,尺寸,当前屏幕空间等等。

  • 当你按下【F】快捷键 或者是倒数第三个Button的Reset Camera的时候,可以回到ScreenSize为默认值的状态。(方便后期调试)



  • 切换至LOD AUTO 可自行观察不同的LOD变化效果(如没有添加,只有Auto和LOD 0)
【3.2】LOD Picker

选取不同的LOD进行设置


【3.2.1】 LOD 选取指定的LOD进行相关设置

【3.2.2】 打勾Custom 展开所有的LOD,并进行相关设置


  • LOD 0 为我们的基础LOD
  • 之后的LOD模型面数相应减少。(LOD 1~3)

【3.3】LOD 0/1/2/3


  • 设置屏幕空间尺寸
  • 设置减面比例
  • 查看顶点数量


当然还有这个Build Settings,LOD主要是模型的面数变化吧,这个暂时用不到。


【3.4】LOD Settings

【3.4.1】Auto Compute LOD Distances(关闭掉)

可以自己自定义设置各LOD的ScreenSize和面数。(3.3当中设置)


【3.4.2】Number of LODs 然后 Apply Changes

确定应用最终增加/减少的LOD数量
【3.4.3】LOD Group更改相对应模型的预设





四、UE4当中调试测验

切换至LOD AUTO 可自行观察不同的LOD变化效果


之后我们可以看到小白人从迪迦奥特曼变成雷欧奥特曼的完整变化过程:



【UE4】LOD
https://www.zhihu.com/video/1235974379571871744

当然你可以在世界场景当中打开 Level Of Detail Coloration->Mesh LODs(可以用红绿蓝三种颜色来检验不同屏幕尺寸的LOD变化),然后左右分屏以调整屏幕尺寸的参数。




五、导入外部LOD资源:

【5.1】导入/导出相关模型进入DCC软件当中

当然如果对UE4自动生成LOD的模型不太满意的话,自己可以在DCC软件当中分别调整好相应的模型。
当我们更改完相关LOD之后,我们导出模型,进入Blender,会发现连带的所有LOD都导进来了。


我们可以删掉后面三个,然后Shift+D复制两次基础模型,添加Decimate Modifier进行减面操作。
【注意】

  • 模型位置不要有相应移动
  • 复制后的名字也要保持后缀一致(规整化)
【5.2】更改相关减面参数

以下为Blender当中的相关设置:(只做演示)



LOD 1 和 LOD 2 单个导出模型。LOD 0  为Base 不用变。
【5.3】导出单个模型注意事项

注意,不是选中模型(模型轮廓高亮)就能够导出所选模型,关闭小眼睛也不管用。需要在导出时要勾选Selected  Objects,才能正确导出单个模型:



【5.4】导入LOD模型进入UE4当中:

1.可以直接在内容浏览器当中右键导入添加


2.也可以在Static Mesh 页面当中直接导入:


【5.5】最终效果


【UE4】LOD设置
https://www.zhihu.com/video/1235987043349336064


六、Skeletal Mesh的LOD

(前面是之前为了演示整的Static Mesh)
下面是Skeletal Mesh的,这里拿官方漂亮的小姐姐Shinbi做演示。



【Unreal】Skeletal Mesh LOD
https://www.zhihu.com/video/1239315001707872256
结语:

说白了,LOD就跟ShapeKey 一样,只不过变化条件是屏幕距离尺寸,根据不同的距离开启相对应的不同精度的模型而已。

如有纰漏,欢迎各位大佬指出。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-1-5 09:54 | 显示全部楼层
受教了!
发表于 2023-1-5 10:03 | 显示全部楼层
之前加载贴图现在加载模型了
发表于 2023-1-5 10:10 | 显示全部楼层
楼主,想问下赛车游戏车内视角用lod技术的制作原理,比如说我们在用车内视角,一般摄像机只能看到前面和上面一点点,和左右两边,后面的细节由于摄像机视角限制,看不到或者说最多看到个车后面的窗子,后面大部分建模模型是看不到的,那是不是可以理解为摄像机看到的前方或左右两边,在lod(我用通俗的话来说)就是第一层,后面看不到的就是第二层,如果赛车游戏中由于漂移或者刹车过猛,镜头晃动过大,导致第二层看不到的进去第一层了,才显示画面,如果平时平稳的开,第二层的就不显示了或者说就降低画面了,就是一个特别简单的建模?
发表于 2023-1-5 10:17 | 显示全部楼层
楼主,想问下赛车游戏车内视角用lod技术的制作原理,比如说我们在用车内视角,一般摄像机只能看到前面和上面一点点,和左右两边,后面的细节由于摄像机视角限制,看不到或者说最多看到个车后面的窗子,后面大部分建模模型是看不到的,那是不是可以理解为摄像机看到的前方或左右两边,在lod(我用通俗的话来说)就是第一层,后面看不到的就是第二层,如果赛车游戏中由于漂移或者刹车过猛,镜头晃动过大,导致第二层看不到的进去第一层了,才显示画面,如果平时平稳的开,第二层的就不显示了或者说就降低画面了,就是一个特别简单的建模?
发表于 2023-1-5 10:22 | 显示全部楼层
这个不是LOD的事儿,这个就是屏幕渲染的事儿了,不在屏幕上的模型就不会被渲染。你可以去了解一下实时渲染相关的知识, 顶点着色器,剔除,光栅化,绘制调用等。https://zhuanlan.zhihu.com/p/183120314
发表于 2023-1-5 10:28 | 显示全部楼层
那车内后面不渲染的话,我不太会表达,那车内模型是不是就只有摄像机显示范围的前面和左右两面,后面看不到的只是没渲染,但是建模还是有的,
发表于 2023-1-5 10:32 | 显示全部楼层
对,车整体肯定是个完整的模型,外面肯定要全,里面的话如果只看到前方,那么车后座的模型可以不用建。
发表于 2023-1-5 10:40 | 显示全部楼层
但是车外视角的话,里面的前后座椅呀,什么的都可以看到,摄像机放置车内的车内视角是后面没建模型,那是分别建了两套模型?
发表于 2023-1-5 10:42 | 显示全部楼层
内饰和外饰。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 02:43 , Processed in 0.072011 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表