LOD模型自动切换方法、装置、电子设备及存储介质与流程

文档序号:23619236发布日期:2021-01-12 10:29阅读:221来源:国知局
LOD模型自动切换方法、装置、电子设备及存储介质与流程

本发明涉及lod模型构建技术领域,尤其涉及一种lod模型自动切换方法、装置、电子设备及存储介质。



背景技术:

lod(levelsofdetail),即多细节层次技术,是一种根据三维模型与视口间距离的远近(或者模型的视口渲染的像素大小),来选择合适精细度模型进行高效渲染的技术。

当可视化窗口中的目标体从原始lod模型切换到其他层级的lod模型时,目标体距离视口变远,目标体在可视化窗口的渲染大小变小,此时采用较为粗糙的目标体模型替换原始精确的目标体模型进行渲染,目标体的渲染效果基本不受影响,但渲染的模型顶点数降低,进而可以提升渲染性能。

目前在进行不同精细度模型的切换过程中大多通过不断的人工调试和测试,选取合适的lod切换参数。这种方法效果好,但工作量大,且不通用。

因此如何实现在实时渲染时,根据当前目标体模型大小所对应的切换参数,选取对应精确度的模型进行渲染成为了亟需解决的技术问题。



技术实现要素:

本发明的主要目的在于提供一种lod模型自动切换方法、装置、电子设备及存储介质,旨在如何实现在实时渲染时,根据当前目标体模型大小所对应的切换参数,选取对应精确度的模型进行渲染的问题。

为实现上述目的,本发明提供的一种lod模型自动切换方法,该方法包括:

确定步骤:确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;

计算步骤:根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值;

匹配步骤:根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的lod模型;

渲染步骤:调用opengl的glbufferdata接口将确定的lod模型传送至显卡对经缩放或移动后得到的目标体进行渲染;所述包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:

其中,为模型矩阵,通过opengl的glgetfloatv(gl_modelview_matrix,mat)获取;

为投影矩阵,通过opengl的glgetfloatv(gl_projection_matrix,mat)获取;

为可视化窗口矩阵,计算公式如下:

为可视化窗口位置坐标,为可视化窗口宽和高,通过opengl的glutget函数获取。

优选地,所述包围盒在可视化窗口上显示像素值通过以下算法计算得到:

其中,是boundingbox'上的顶点,表示之间的距离。

优选地,所述匹配规则包括:

根据预先创建的显示像素值与预设的lod切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的lod切换参数范围;

根据确定的lod切换参数范围对应的lod模型层级匹配与该lod模型层级对应的lod模型。

优选地,所述lod切换参数范围为:

其中,为包围盒在可视化窗口上显示像素值,为误差的显示像素,与原始模型之间的误差,表示分别获取上的每个顶点到所有顶点的最近距离,从中选取距离最大者对应的距离作为与原始模型之间的误差,为包围盒的实际大小,层级lod模型在误差最大时的模型像素值,即lod层级切换临界值。

优选地,所述lod模型通过vcg的meshsimplification函数对原始模型进行精简得到;

其中,为精简前的原始模型,n为lod模型层级,为lod任一层级,为每级精简的比例,,modeli为精简后的lod模型。

为实现上述目的,本发明还进一步提供一种lod模型自动切换装置,所述lod模型自动切换装置包括:

确定模块,用于确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;

计算模块,用于根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值;

匹配模块,用于根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的lod模型;

渲染模块,用于调用opengl的glbufferdata接口将确定的lod模型传送至显卡对经缩放或移动后得到的目标体进行渲染;所述包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:

其中,为模型矩阵,通过opengl的glgetfloatv(gl_modelview_matrix,mat)获取;

为投影矩阵,通过opengl的glgetfloatv(gl_projection_matrix,mat)获取;

为可视化窗口矩阵,计算公式如下:

为可视化窗口位置坐标,为可视化窗口宽和高,通过opengl的glutget函数获取。

为实现上述目的,本发明还进一步提供一种电子设备,所述电子设备包括:

存储器,存储至少一个指令;及

处理器,执行所述存储器中存储的指令以实现上述所述的lod模型自动切换方法。

为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有lod模型自动切换程序,所述lod模型自动切换程序可被一个或者多个处理器执行,以实现如上所述的lod模型自动切换方法的步骤。

本发明提出的lod模型自动切换方法、装置、电子设备及存储介质,通过确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上的显示像素值;根据所述包围盒在可视化窗口上的显示像素值及预设匹配规则选择与该包围盒匹配的lod模型;调用opengl的glbufferdata接口将确定的lod模型传送至显卡对经缩放或移动后得到的目标体进行渲染。本发明能实现在实时渲染时,根据当前目标体模型大小所对应的切换参数,选取对应精确度的模型进行渲染。通过最大可接受误差自动生成的lod切换参数,可确保lod显示效果在可接受范围,不会过于粗糙,也不会过于精细,达到性能与显示效果的平衡。

附图说明

图1为本发明一实施例提供的实现lod模型自动切换方法的流程示意图;

图2为本发明一实施例提供的lod模型自动切换装置的模块示意图;

图3为本发明一实施例提供的lod模型自动切换方法的电子设备的内部结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参附图做进一步说明。

具体实施方式

为了使本发明的目的、技术本实施例及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术本实施例可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术本实施例的结合出现相互矛盾或无法实现时应当认为这种技术本实施例的结合不存在,也不在本发明要求的保护范围之内。

本发明提供一种lod模型自动切换方法。参照图1所示,为本发明一实施例提供的lod模型自动切换方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。

该方法包括:

s110,确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒。

在本实施例中,当系统检测到用户对当前可视化窗口中的目标体进行缩放或移动时,确定当前可视化窗口中经缩放或移动后得到的目标体模型,并建立与该目标体对应的包围盒。

需要解释的是,包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。一个三维模型的包围盒就是一个能包围该模型的最小六面体,每一边都平行于一个坐标平面。

s120,根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值。

在本实施例中,通过包围盒在可视化窗口上的像素值来为后续进行lod参数切换创造必要条件。包围盒在可视化窗口上显示像素值根据包围盒在可视化窗口上的投影的像素值进行计算,包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:

其中,为模型矩阵,通过opengl的glgetfloatv(gl_modelview_matrix,mat)获取;

为投影矩阵,通过opengl的glgetfloatv(gl_projection_matrix,mat)获取;

为可视化窗口矩阵,计算公式如下:

为可视化窗口位置坐标,为可视化窗口宽和高,通过opengl的glutget函数获取。

在得到包围盒在可视化窗口上的投影的像素值后,通过下述算法计算包围盒在可视化窗口上的显示像素值:

其中,是boundingbox'上的顶点,表示之间的距离。

s130,根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的lod模型。

在本实施例中,根据包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的lod模型。

其中,匹配规则包括:

根据预先创建的显示像素值与预设的lod切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的lod切换参数范围;

根据确定的lod切换参数范围对应的lod模型层级匹配与该lod模型层级对应的lod模型。

lod切换参数范围为:

其中,为包围盒在可视化窗口上显示像素值,取模型包围盒最小边的长度作为模型大小,避免长条形模型显示模型精细度过低:

为误差的显示像素,,例如,把10个显示像素作为最大可容忍误差,根据包围盒真实大小与在可视化窗口中显示的大小成比例,计算出包围盒显示误差达到最大时对应的lod模型像素大小。现有技术的lod模型切换参数都是人工设定的,通过引入误差的概念,可以自动的更精确确定切换临界值。

与原始模型之间的误差,模型精简后的误差使用原始模型与精简模型的hausdorff距离表示,hausdorff距离是描述两组点集之间相似程度的一种量度:

表示分别获取上的每个顶点到所有顶点的最近距离,从中选取距离最大者对应的距离作为与原始模型之间的误差。

为包围盒的实际大小,层级lod模型在误差最大时的模型像素值,即lod层级切换临界值。

s140,调用opengl的glbufferdata接口将确定的lod模型传送至显卡对经缩放或移动后得到的目标体进行渲染。

在本实施例中,在确定好与当前目标体适配的lod模型后,调用opengl的glbufferdata接口将确定的lod模型传送至显卡进行渲染。lod模型通过vcg的meshsimplification函数对原始模型进行精简得到;

其中,模型简化使用如vcg(一个开源计算机图形库)的meshsimplification方法对三维模型进行精简。具体如下:

为精简前的原始模型,n为lod模型层级,为lod任一层级,为每级精简的比例,,modeli为精简后的lod模型。

在另一实施例中,模型简化也可以使用如vtk(visualizationtoolkit开源库)的vtkquadricdecimation类对三维模型进行精简。

为了更进一步对本发明进行解释,本发明通过以下例子加以说明:

1.采用半径为100的球由1600个顶点表示,取,模型简化后得到的lod模型如下:

2.计算误差:

3.计算切换参数:

4.切换模型:

假设某台计算机可以流畅显示100万个顶点的三维模型,当视图变换(如缩放、旋转)后,某时刻视图中显示模型缩放后计算模型大小为200像素,则传递model1到显示设备。

如上表所示,当模型比较小时,显示比较粗糙模型即可达到比较好的显示效果,此时窗口可以容纳更多模型而不降低性能;当模型比较大时,窗口需要显示的模型更少,可以在相同性能下显示更多细节。

通过最大可接受误差自动生成的lod切换参数,可确保lod显示效果在可接受范围,不会过于粗糙,也不会过于精细,达到性能与显示效果的平衡。

如图2所示,是本发明lod模型自动切换装置100的功能模块图。

本发明所述lod模型自动切换装置100可以安装于电子设备中。根据实现的功能,所述lod模型自动切换装置100可以包括确定模块110、计算模块120、匹配模块130及渲染模块140。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。

在本实施例中,关于各模块/单元的功能如下:

确定模块110,用于确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒。

在本实施例中,当系统检测到用户对当前可视化窗口中的目标体进行缩放或移动时,确定当前可视化窗口中经缩放或移动后得到的目标体模型,并建立与该目标体对应的包围盒。

需要解释的是,包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。一个三维模型的包围盒就是一个能包围该模型的最小六面体,每一边都平行于一个坐标平面。

计算模块120,用于根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值。

在本实施例中,通过包围盒在可视化窗口上的像素值来为后续进行lod参数切换创造必要条件。包围盒在可视化窗口上显示像素值根据包围盒在可视化窗口上的投影的像素值进行计算,包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:

其中,为模型矩阵,通过opengl的glgetfloatv(gl_modelview_matrix,mat)获取;

为投影矩阵,通过opengl的glgetfloatv(gl_projection_matrix,mat)获取;

为可视化窗口矩阵,计算公式如下:

为可视化窗口位置坐标,为可视化窗口宽和高,通过opengl的glutget函数获取。

在得到包围盒在可视化窗口上的投影的像素值后,通过下述算法计算包围盒在可视化窗口上的显示像素值:

其中,是boundingbox'上的顶点,表示之间的距离。

匹配模块130,用于根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的lod模型。

在本实施例中,根据包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的lod模型。

其中,匹配规则包括:

根据预先创建的显示像素值与预设的lod切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的lod切换参数范围;

根据确定的lod切换参数范围对应的lod模型层级匹配与该lod模型层级对应的lod模型。

lod切换参数范围为:

其中,为包围盒在可视化窗口上显示像素值,取模型包围盒最小边的长度作为模型大小,避免长条形模型显示模型精细度过低:

为误差的显示像素,,例如,把10个显示像素作为最大可容忍误差,根据包围盒真实大小与在可视化窗口中显示的大小成比例,计算出包围盒显示误差达到最大时对应的lod模型像素大小。现有技术的lod模型切换参数都是人工设定的,通过引入误差的概念,可以自动的更精确确定切换临界值。

与原始模型之间的误差,模型精简后的误差使用原始模型与精简模型的hausdorff距离表示,hausdorff距离是描述两组点集之间相似程度的一种量度:

表示分别获取上的每个顶点到所有顶点的最近距离,从中选取距离最大者对应的距离作为与原始模型之间的误差,为包围盒的实际大小,层级lod模型在误差最大时的模型像素值,即lod层级切换临界值。

渲染模块140,用于调用opengl的glbufferdata接口将确定的lod模型传送至显卡对经缩放或移动后得到的目标体进行渲染。

在本实施例中,在确定好与当前目标体适配的lod模型后,调用opengl的glbufferdata接口将确定的lod模型传送至显卡进行渲染。lod模型通过vcg的meshsimplification函数对原始模型进行精简得到;

其中,模型简化使用如vcg(一个开源计算机图形库)的meshsimplification方法对三维模型进行精简。具体如下:

为精简前的原始模型,n为lod模型层级,为lod任一层级,为每级精简的比例,,modeli为精简后的lod模型。

在另一实施例中,模型简化也可以使用如vtk(visualizationtoolkit开源库)的vtkquadricdecimation类对三维模型进行精简。

为了更进一步对本发明进行解释,本发明通过以下例子加以说明:

1.采用半径为100的球由1600个顶点表示,取,模型简化后得到的lod模型如下:

2.计算误差:

3.计算切换参数:

4.切换模型:

假设某台计算机可以流畅显示100万个顶点的三维模型,当视图变换(如缩放、旋转)后,某时刻视图中显示模型缩放后计算模型大小为200像素,则传递model1到显示设备。

如上表所示,当模型比较小时,显示比较粗糙模型即可达到比较好的显示效果,此时窗口可以容纳更多模型而不降低性能;当模型比较大时,窗口需要显示的模型更少,可以在相同性能下显示更多细节。

通过最大可接受误差自动生成的lod切换参数,可确保lod显示效果在可接受范围,不会过于粗糙,也不会过于精细,达到性能与显示效果的平衡。

如图3所示,是本发明实现lod模型自动切换方法的电子设备的结构示意图。

所述电子设备1可以包括处理器12、存储器11和总线,还可以包括存储在所述存储器11中并可在所述处理器12上运行的计算机程序,如lod模型自动切换程序10。

其中,所述存储器11至少包括一种类型的可读存储介质,所述计算机可用存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smartmediacard,smc)、安全数字(securedigital,sd)卡、闪存卡(flashcard)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如lod模型自动切换程序10的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

所述处理器12在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(centralprocessingunit,cpu)、微处理器、数字处理芯片、图形处理器及各种判断芯片的组合等。所述处理器12是所述电子设备的判断核心(controlunit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如lod模型自动切换程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。

所述总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、判断总线等。所述总线被设置为实现所述存储器11以及至少一个处理器12等之间的连接通信。

图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器12逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。

进一步地,所述电子设备1还可以包括网络接口13,可选地,所述网络接口13可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。

可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。

所述电子设备1中的所述存储器11存储的lod模型自动切换程序10是多个指令的组合,在所述处理器12中运行时,可以实现:

确定步骤:确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;

计算步骤:根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上的显示像素值;

匹配步骤:根据所述包围盒在可视化窗口上的显示像素值及预设匹配规则选择与该包围盒匹配的lod模型;

渲染步骤:调用opengl的glbufferdata接口将确定的lod模型传送至显卡对经缩放或移动后得到的目标体进行渲染。

具体地,所述处理器12对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。

因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。

此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1