新闻  |   论坛  |   博客  |   在线研讨会
Cocos Creator:详细级别
xyni2023 | 2023-04-24 11:39:06    阅读:442   发布文章

3e1047ad02881dd95ea92f39725e1af8_11-1.png

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT 编辑器
详细级别

细节层次(LOD)是大场景开发中常用的优化方法,LOD的核心是减少远处或不重要物体的显示细节,以提高渲染效率。

LOD 的常见做法是对某些远离屏幕或不重要的对象使用低多边形。

要在引擎中启用 LOD,请选择“检查器”面板中的“添加组件”按钮,然后选择 LOD 组组件。

添加详细级别组

添加后,“剔除”“LOD”字样将显示在场景中。

启用

性能

财产

详细级别组组件的属性描述如下。

性能描述
重新计算边界重新计算边界 单击此按钮
时,将重新计算整个组的模型边界 此按钮调用接口以重新计算
边界,这也将影响“对象大小”属性
recalculateBounds
对象大小边界框大小 计算对象的边界框,取 X、Y、Z
中最大值的轴 单击右侧的“重置对象大小
”按钮会将此属性重置为 1
LOD(0 ~ 3)LOD。点击左侧>符号展开进行配置,展开内容请参考下图。
LOD0 表示最丰富的显示细节
LOD2 显示低多边形
当对象的屏幕比例小于 LOD2 的屏幕比例值时,对象将被剔除

单击检查器面板上的任意> LOD(0 ~ 3) 将其展开,将显示下图。

LOD0

其属性和说明如下。

性能描述
筛分率(%)屏幕比例 [0, 1]。
开发者可以在后置输入框中输入自定义屏幕比例,也可以使用应用当前屏幕比例自动计算屏幕比例 当屏幕比例
低于当前配置的值时,LOD会自动切换到下一个级别;如果没有更多关卡,则对象将被剔除
应用当前屏幕比率应用当前屏幕比率
按下时,LOD 组组件将当前显示状态的屏幕比率作为屏幕比率 (%) 的值
网格渲染器网格渲染器
有关更多详细信息,请参阅以下文档
0 三角形 - 0 子网格此属性显示在当前级别配置的三角化曲面的数量及其子网格的数量
网格渲染器属性

可以通过单击下面的

+

-

按钮来更改网格渲染器以添加或删除操作。

添加后,可以通过拖放以下内容来配置层次结构管理器中具有网格渲染器的节点。

拖动网格

详细位置

将鼠标悬停在 LOD 的右侧以显示网格信息,以显示“添加或删除色阶”按钮。

添加删除级别

单击将在

+

数组末尾添加新的 LOD。

单击

-

将删除鼠标当前指向的LOD;删除后,后续 LOD 会自动向前移动。

预览

配置LOD后,您可以在场景管理器中使用鼠标滚轮预览不同的关卡。

预览

随着鼠标滚动的变化,场景摄像机会逐渐拉开,LOD的级别也会发生变化,如果当前对象的屏幕比例低于LOD2配置的屏幕比例,场景管理系统会剔除它。屏幕将显示当前详细级别组的层次结构状态 LOD(0~3) 或已剔除。

脚本的使用

开发人员可以通过该方法获取组件。getComponent

import { _decorator, Component, Node, LODGroup } from 'cc';
const { ccclass, property, requireComponent } = _decorator;

@ccclass('LOD')
@requireComponent(LODGroup)
export class LOD extends Component {

    lodGroup : LODGroup | null = null;

    start() {
        this.lodGroup = this.node.getComponent(LODGroup);        
    }

    update(deltaTime: number) {

    }
}

可在详细级别组 API 中找到 API 参考

美术工作流程

在实际项目开发中,美术师可以在DCC软件(Maya,3D Max,Blender)中执行分面操作并导出模型。

通常可以在不同级别导出多个模型,或向同一模型添加不同的子网格以表示不同的LOD级别。

出口

自动匹配

详细级别组组件会自动匹配通过 DCC 软件导出的模型的子网格或网格渲染器,这些模型具有多个以 _lod+[0,N] 结尾的子节点。

自动匹配示例

确保已根据上述规则导出适当的模型。

将准备好的 FBX 或 glTF 文件导入引擎的资源管理器中,****为

导入资产

在这种情况下,资源导入系统会自动识别这些节点,并启用详细级别组以进行自动匹配。

自动匹配

问答

我可以添加多个详细级别组吗?

是的。他们将彼此合作得很好。

我可以在 2D 场景中使用 LOD 吗?

由于 LOD 组组件只能识别网格渲染器,而 2D 或 UI 组件通常没有网格渲染器,因此这样做没有多大意义。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客