一种基于Unity3D静态剔除显示节点的方法及终端技术

技术编号:38460311 阅读:15 留言:0更新日期:2023-08-11 14:37
本发明专利技术涉及一种基于Unity3D静态剔除显示节点的方法及终端,将世界空间中的所有场景元素节点划分至不同区域,设置每个区域的相机裁切面,获取各个区域中的渲染组件,合并各个区域中的所有渲染组件得到各个区域的Bounds数据结构,基于每个区域的相机裁切面和Bounds数据结构生成配置并导出;读取配置,遍历所有区域的相机裁切面,在世界空间中设置一个裁切相机,根据裁切相机的aspect、fov和每个区域的相机裁切面生成投影矩阵字典;根据每个区域的相机世界观察矩阵和投影矩阵字典生成世界观察投影矩阵列表,遍历世界观察投影矩阵,根据世界观察投影矩阵生成每个区域的视锥体;遍历各个区域,基于Bounds数据结构判断区域中是否存在有与视锥体相交或包含的区域实现区域显示。在有与视锥体相交或包含的区域实现区域显示。在有与视锥体相交或包含的区域实现区域显示。

【技术实现步骤摘要】
一种基于Unity3D静态剔除显示节点的方法及终端


[0001]本专利技术涉及Unity3D
,尤其涉及一种基于Unity3D静态剔除显示节点的方法及终端。

技术介绍

[0002]画面呈现于用户手机屏幕时,如果将游戏互动中的所有元素进行渲染,这种代价都是比较高昂的。在unity 3D中也提供了多种剔除元素渲染的方式,如其中比较主要的动态剔除与静态剔除两种方式,但不管那种方式,当场景元素的量多时,随之而来的剔除耗时就变得高昂。

技术实现思路

[0003](一)要解决的技术问题
[0004]为了解决现有技术的上述问题,本专利技术提供一种基于Unity3D静态剔除显示节点的方法及终端,在画面渲染显示时,能够提高了场景元素节点的剔除效率以及提供物体动态加载的时机。
[0005](二)技术方案
[0006]为了达到上述目的,本专利技术采用的一种技术方案为:一种基于Unity3D静态剔除显示节点的方法,包括:
[0007]S1、基于场景元素节点的位置将世界空间中的所有场景元素节点划分至不同区域,设置每个区域单独的相机裁切面,获取各个区域中所有场景元素节点的渲染组件,所述渲染组件中包含Bounds数据结构,合并各个区域中的所有渲染组件得到各个区域所有的Bounds数据结构,基于每个区域的相机裁切面和所有Bounds数据结构生成配置并导出;
[0008]S2、读取所述配置,遍历所有区域的相机裁切面,在世界空间中设置一个裁切相机,根据所述裁切相机的视锥宽高比、视角广度和每个区域的相机裁切面生成每个区域的投影矩阵字典;
[0009]S3、根据每个区域的所述裁切相机的相机世界观察矩阵以及投影矩阵字典生成世界观察投影矩阵列表,遍历每个区域的所述世界观察投影矩阵列表中的世界观察投影矩阵,根据所述世界观察投影矩阵生成每个区域的视锥体,所述视锥体为六个平面构成的四椎体可视区域;
[0010]S4、遍历各个区域,基于所在区域的Bounds数据结构判断所述区域中是否存在有与所述视锥体相交或包含的区域,若是,则显示所述Bounds数据结构所在的区域,若否,则不显示。
[0011]本专利技术采用的另一种技术方案为:一种基于Unity3D静态剔除显示节点的终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0012]S1、基于场景元素节点的位置将世界空间中的所有场景元素节点划分至不同区
域,设置每个区域单独的相机裁切面,获取各个区域中所有场景元素节点的渲染组件,所述渲染组件中包含Bounds数据结构,合并各个区域中的所有渲染组件得到各个区域所有的Bounds数据结构,基于每个区域的相机裁切面和所有Bounds数据结构生成配置并导出;
[0013]S2、读取所述配置,遍历所有区域的相机裁切面,在世界空间中设置一个裁切相机,根据所述裁切相机的视锥宽高比、视角广度和每个区域的相机裁切面生成每个区域的投影矩阵字典;
[0014]S3、根据每个区域的所述裁切相机的相机世界观察矩阵以及投影矩阵字典生成世界观察投影矩阵列表,遍历每个区域的所述世界观察投影矩阵列表中的世界观察投影矩阵,根据所述世界观察投影矩阵生成每个区域的视锥体,所述视锥体为六个平面构成的四椎体可视区域;
[0015]S4、遍历各个区域,基于所在区域的Bounds数据结构判断所述区域中是否存在有与所述视锥体相交或包含的区域,若是,则显示所述Bounds数据结构所在的区域,若否,则不显示。
[0016](三)有益效果
[0017]本专利技术的有益效果是:通过对场景元素节点进行分区,在画面渲染显示时,能够基于裁切相机的视锥体计算需要渲染的分区以及该区域内需要渲染的场景元素节点,实现需要区域显示的动态加载和剔除渲染,不需要对所有区域的场景元素节点都一一进行剔除计算,进而提高了场景元素节点的剔除效率。进而当场景元素的数量较大时,也能够高效地实现场景元素节点的剔除。
附图说明
[0018]图1为本专利技术的一种基于Unity3D静态剔除显示节点的方法的流程图;
[0019]图2为本专利技术的一种基于Unity3D静态剔除显示节点的方法的细节流程图;
[0020]图3为本专利技术的一种基于Unity3D静态剔除显示节点的终端的结构示意图;
[0021]图4为裁切相机实际应用的侧视图;
[0022]图5为裁切相机实际应用的立体示意图;
[0023]【附图标记说明】
[0024]1、一种基于Unity3D静态剔除显示节点的终端;2、存储器;3、处理器;
[0025]A、近裁切面;B、远裁切面;C、不显示区域;D、显示区域;E、视锥体;F、Bounds;fov、视角广度。
具体实施方式
[0026]为了更好的解释本专利技术,以便于理解,下面结合附图,通过具体实施方式,对本专利技术作详细描述。
[0027]名词解释:
[0028]Bounds:Unity封装的一个数据结构(Struct),表示了一个无旋转的包围盒。
[0029]请参照图1和图2所示,一种基于Unity3D静态剔除显示节点的方法,包括:
[0030]S1、基于场景元素节点的位置将世界空间中的所有场景元素节点划分至不同区域,设置每个区域单独的相机裁切面,获取各个区域中所有场景元素节点的渲染组件,所述
渲染组件中包含Bounds数据结构,合并各个区域中的所有渲染组件得到各个区域所有的Bounds数据结构,基于每个区域的相机裁切面和所有Bounds数据结构生成配置并导出;
[0031]S2、读取所述配置,遍历所有区域的相机裁切面,在世界空间中设置一个裁切相机,根据所述裁切相机的视锥宽高比、视角广度和每个区域的相机裁切面生成每个区域的投影矩阵字典;
[0032]S3、根据每个区域的所述裁切相机的相机世界观察矩阵以及投影矩阵字典生成世界观察投影矩阵列表,遍历每个区域的所述世界观察投影矩阵列表中的世界观察投影矩阵,根据所述世界观察投影矩阵生成每个区域的视锥体,所述视锥体为六个平面构成的四椎体可视区域;
[0033]S4、遍历各个区域,基于所在区域的Bounds数据结构判断所述区域中是否存在有与所述视锥体相交或包含的区域,若是,则显示所述Bounds数据结构所在的区域,若否,则不显示。
[0034]从上述描述可知,本专利技术的有益效果在于:通过对场景元素节点进行分区,在画面渲染显示时,能够基于裁切相机的视锥体计算需要渲染的分区以及该区域内需要渲染的场景元素节点,实现需要区域显示的动态加载和剔除渲染,不需要对所有区域的场景元素节点都一一进行剔除计算,进而提高了场景元素节点的剔除效率。进而当场景元素的数量较大时,也能够高效地实现场景元素节点的剔除。
[0035]在本实施例中,还包括:
[0036]S5、判断是否还需要执行剔除区域操作,若是,则返回S3。
[0037]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Unity3D静态剔除显示节点的方法,其特征在于,包括:S1、基于场景元素节点的位置将世界空间中的所有场景元素节点划分至不同区域,设置每个区域单独的相机裁切面,获取各个区域中所有场景元素节点的渲染组件,所述渲染组件中包含Bounds数据结构,合并各个区域中的所有渲染组件得到各个区域所有的Bounds数据结构,基于每个区域的相机裁切面和所有Bounds数据结构生成配置并导出;S2、读取所述配置,遍历所有区域的相机裁切面,在世界空间中设置一个裁切相机,根据所述裁切相机的视锥宽高比、视角广度和每个区域的相机裁切面生成每个区域的投影矩阵字典;S3、根据每个区域的所述裁切相机的相机世界观察矩阵以及投影矩阵字典生成世界观察投影矩阵列表,遍历每个区域的所述世界观察投影矩阵列表中的世界观察投影矩阵,根据所述世界观察投影矩阵生成每个区域的视锥体,所述视锥体为六个平面构成的四椎体可视区域;S4、遍历各个区域,基于所在区域的Bounds数据结构判断所述区域中是否存在有与所述视锥体相交或包含的区域,若是,则显示所述Bounds数据结构所在的区域,若否,则不显示。2.根据权利要求1所述的基于Unity3D静态剔除显示节点的方法,其特征在于,还包括:S5、判断是否还需要执行剔除区域操作,若是,则返回S3。3.根据权利要求1所述的基于Unity3D静态剔除显示节点的方法,其特征在于,所述S4包括:遍历各个区域,基于所在区域的Bounds数据结构,使用unity提供的GeometryUtility.TestPlanesAABB(planes,bounds)方法判断所述区域内是否存在有与所述视锥体相交或者包含的Bounds数据结构,若是,则显示所述Bounds数据结构所在的区域,若否,则不显示。4.根据权利要求1所述的基于Unity3D静态剔除显示节点的方法,其特征在于,所述S1中基于场景元素节点的位置将世界空间中的所有场景元素节点划分至不同区域之后还包括:分别将同一区域内的场景元素节点挂载至同一个父节点下。5.根据权利要求1所述的基于Unity3D静态剔除显示节点的方法,其特征在于,所述S3中根据所述世界观察投影矩阵生成每个区域的视锥体包括:使用unity提供的GeometryUtility.CalculateFrustumPlanes(worldToProjectionMatrix)方法生成每个区域的视锥体,所述worldToProjectionMatrix表示为世界观察投影矩阵列表。6.一种基于Unity3D静态剔除显示节点的终端,包括存储器、处理...

【专利技术属性】
技术研发人员:张茂流郭镇瑜唐光宇闫乃永卢学明
申请(专利权)人:宝宝巴士股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1