CN112215935B - Lod模型自动切换方法、装置、电子设备及存储介质 - Google Patents

Lod模型自动切换方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112215935B
CN112215935B CN202011384479.5A CN202011384479A CN112215935B CN 112215935 B CN112215935 B CN 112215935B CN 202011384479 A CN202011384479 A CN 202011384479A CN 112215935 B CN112215935 B CN 112215935B
Authority
CN
China
Prior art keywords
model
lod
bounding box
window
switching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011384479.5A
Other languages
English (en)
Other versions
CN112215935A (zh
Inventor
欧阳强
郝海风
曾江佑
师浩龙
万旻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangxi Booway New Technology Co ltd
Original Assignee
Jiangxi Booway New Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangxi Booway New Technology Co ltd filed Critical Jiangxi Booway New Technology Co ltd
Priority to CN202011384479.5A priority Critical patent/CN112215935B/zh
Publication of CN112215935A publication Critical patent/CN112215935A/zh
Application granted granted Critical
Publication of CN112215935B publication Critical patent/CN112215935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明涉及LOD模型构建技术领域,提供了一种LOD模型自动切换方法、装置、电子设备及存储介质,该方法包括确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上的显示像素值;根据所述包围盒在可视化窗口上的显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型;调用OpenGL的glBufferData接口将确定的LOD模型传送至显卡对经缩放或移动后得到的目标体进行渲染。本发明能实现在实时渲染时,根据当前目标体模型大小所对应的切换参数,选取对应精确度的模型进行渲染。

Description

LOD模型自动切换方法、装置、电子设备及存储介质
技术领域
本发明涉及LOD模型构建技术领域,尤其涉及一种LOD模型自动切换方法、装置、电子设备及存储介质。
背景技术
LOD(Levels of Detail),即多细节层次技术,是一种根据三维模型与视口间距离的远近(或者模型的视口渲染的像素大小),来选择合适精细度模型进行高效渲染的技术。
当可视化窗口中的目标体从原始LOD模型切换到其他层级的LOD模型时,目标体距离视口变远,目标体在可视化窗口的渲染大小变小,此时采用较为粗糙的目标体模型替换原始精确的目标体模型进行渲染,目标体的渲染效果基本不受影响,但渲染的模型顶点数降低,进而可以提升渲染性能。
目前在进行不同精细度模型的切换过程中大多通过不断的人工调试和测试,选取合适的LOD切换参数。这种方法效果好,但工作量大,且不通用。
因此如何实现在实时渲染时,根据当前目标体模型大小所对应的切换参数,选取对应精确度的模型进行渲染成为了亟需解决的技术问题。
发明内容
本发明的主要目的在于提供一种LOD模型自动切换方法、装置、电子设备及存储介质,旨在如何实现在实时渲染时,根据当前目标体模型大小所对应的切换参数,选取对应精确度的模型进行渲染的问题。
为实现上述目的,本发明提供的一种LOD模型自动切换方法,该方法包括:
确定步骤:确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;
计算步骤:根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值;
匹配步骤:根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型;
渲染步骤:调用OpenGL的glBufferData接口将确定的LOD模型
Figure 970086DEST_PATH_IMAGE001
传送至显卡 对经缩放或移动后得到的目标体进行渲染;所述包围盒在可视化窗口上的投影的像素值通 过以下算法计算得到:
Figure 920855DEST_PATH_IMAGE002
其中,
Figure 242115DEST_PATH_IMAGE003
为模型矩阵, 通过OpenGL的glGetFloatv(GL_MODELVIEW_MATRIX, mat) 获取;
Figure 527603DEST_PATH_IMAGE004
为投影矩阵,通过OpenGL的glGetFloatv(GL_PROJECTION_MATRIX, mat)获取;
Figure 929196DEST_PATH_IMAGE005
为可视化窗口矩阵,
Figure 514898DEST_PATH_IMAGE005
计算公式如下:
Figure 492213DEST_PATH_IMAGE006
Figure 264997DEST_PATH_IMAGE007
Figure 336858DEST_PATH_IMAGE008
为可视化窗口位置坐标,
Figure 245908DEST_PATH_IMAGE009
Figure 128544DEST_PATH_IMAGE010
为可视化窗口宽和高,通过OpenGL的glutGet 函数获取。
优选地,所述包围盒在可视化窗口上显示像素值通过以下算法计算得到:
Figure 123045DEST_PATH_IMAGE011
其中,
Figure 998597DEST_PATH_IMAGE012
Figure 762154DEST_PATH_IMAGE013
是Boundingbox'上的顶点,
Figure 812762DEST_PATH_IMAGE014
表示
Figure 294559DEST_PATH_IMAGE015
Figure 708223DEST_PATH_IMAGE016
之间的距离。
优选地,所述匹配规则包括:
根据预先创建的显示像素值与预设的LOD切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的LOD切换参数范围;
根据确定的LOD切换参数范围对应的LOD模型层级匹配与该LOD模型层级对应的LOD模型。
优选地,所述LOD切换参数范围为:
Figure 591865DEST_PATH_IMAGE017
其中,
Figure 816304DEST_PATH_IMAGE018
Figure 785397DEST_PATH_IMAGE019
Figure 2752DEST_PATH_IMAGE020
为包围盒在可视化窗口上显示像素值,
Figure 740901DEST_PATH_IMAGE021
Figure 136241DEST_PATH_IMAGE022
为误差的显示像素,
Figure 592630DEST_PATH_IMAGE023
Figure 348097DEST_PATH_IMAGE024
Figure 206331DEST_PATH_IMAGE025
与原始模型之间的误差,
Figure 506994DEST_PATH_IMAGE026
Figure 450679DEST_PATH_IMAGE027
表示分别获取
Figure 275416DEST_PATH_IMAGE028
上的每个顶点到
Figure 988157DEST_PATH_IMAGE029
所有顶点的最近距离,从 中选取距离最大者对应的距离作为
Figure 456791DEST_PATH_IMAGE030
与原始模型之间的误差,
Figure 887772DEST_PATH_IMAGE031
为包围盒的实 际大小,
Figure 985041DEST_PATH_IMAGE032
Figure 817868DEST_PATH_IMAGE033
层级LOD模型在误差最大时的模型像素值,即LOD层级切换临界值。
优选地,所述LOD模型
Figure 725912DEST_PATH_IMAGE034
通过VCG的meshsimplification函数对原始模型进行 精简得到;
其中,
Figure 378610DEST_PATH_IMAGE035
Figure 279570DEST_PATH_IMAGE036
Figure 966904DEST_PATH_IMAGE037
为精简前的原始模型,n为LOD模 型层级,
Figure 45849DEST_PATH_IMAGE038
为LOD任一层级,
Figure 185844DEST_PATH_IMAGE039
为每级精简的比例,
Figure 828177DEST_PATH_IMAGE040
,Modeli为精简后的LOD模型。
为实现上述目的,本发明还进一步提供一种LOD模型自动切换装置,所述LOD模型自动切换装置包括:
确定模块,用于确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;
计算模块,用于根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值;
匹配模块,用于根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型;
渲染模块,用于调用OpenGL的glBufferData接口将确定的LOD模型
Figure 166755DEST_PATH_IMAGE041
传送至 显卡对经缩放或移动后得到的目标体进行渲染;所述包围盒在可视化窗口上的投影的像素 值通过以下算法计算得到:
Figure 869132DEST_PATH_IMAGE042
其中,
Figure 247155DEST_PATH_IMAGE043
为模型矩阵, 通过OpenGL的glGetFloatv(GL_MODELVIEW_MATRIX, mat) 获取;
Figure 489917DEST_PATH_IMAGE044
为投影矩阵,通过OpenGL的glGetFloatv(GL_PROJECTION_MATRIX, mat)获取;
Figure 886263DEST_PATH_IMAGE045
为可视化窗口矩阵,
Figure 556279DEST_PATH_IMAGE045
计算公式如下:
Figure 418668DEST_PATH_IMAGE046
Figure 465122DEST_PATH_IMAGE047
Figure 715975DEST_PATH_IMAGE048
为可视化窗口位置坐标,
Figure 556892DEST_PATH_IMAGE049
Figure 909507DEST_PATH_IMAGE050
为可视化窗口宽和高,通过OpenGL的glutGet 函数获取。
为实现上述目的,本发明还进一步提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现上述所述的LOD模型自动切换方法。
为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有LOD模型自动切换程序,所述LOD模型自动切换程序可被一个或者多个处理器执行,以实现如上所述的LOD模型自动切换方法的步骤。
本发明提出的LOD模型自动切换方法、装置、电子设备及存储介质,通过确定当前 可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;根据所述包 围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上的显示像素值;根据 所述包围盒在可视化窗口上的显示像素值及预设匹配规则选择与该包围盒匹配的LOD模 型;调用OpenGL的glBufferData接口将确定的LOD模型
Figure 494072DEST_PATH_IMAGE051
传送至显卡对经缩放或移动 后得到的目标体进行渲染。本发明能实现在实时渲染时,根据当前目标体模型大小所对应 的切换参数,选取对应精确度的模型进行渲染。通过最大可接受误差自动生成的LOD切换参 数,可确保LOD显示效果在可接受范围,不会过于粗糙,也不会过于精细,达到性能与显示效 果的平衡。
附图说明
图1为本发明一实施例提供的实现LOD模型自动切换方法的流程示意图;
图2为本发明一实施例提供的LOD模型自动切换装置的模块示意图;
图3为本发明一实施例提供的LOD模型自动切换方法的电子设备的内部结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参附图做进一步说明。
具体实施方式
为了使本发明的目的、技术本实施例及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术本实施例可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术本实施例的结合出现相互矛盾或无法实现时应当认为这种技术本实施例的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种LOD模型自动切换方法。参照图1所示,为本发明一实施例提供的LOD模型自动切换方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
该方法包括:
S110,确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒。
在本实施例中,当系统检测到用户对当前可视化窗口中的目标体进行缩放或移动时,确定当前可视化窗口中经缩放或移动后得到的目标体模型,并建立与该目标体对应的包围盒。
需要解释的是,包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。一个三维模型的包围盒就是一个能包围该模型的最小六面体,每一边都平行于一个坐标平面。
S120,根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值。
在本实施例中,通过包围盒在可视化窗口上的像素值来为后续进行LOD参数切换创造必要条件。包围盒在可视化窗口上显示像素值根据包围盒在可视化窗口上的投影的像素值进行计算,包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:
Figure 865010DEST_PATH_IMAGE052
其中,
Figure 876829DEST_PATH_IMAGE053
为模型矩阵, 通过OpenGL的glGetFloatv(GL_MODELVIEW_MATRIX, mat) 获取;
Figure 716740DEST_PATH_IMAGE054
为投影矩阵,通过OpenGL的glGetFloatv(GL_PROJECTION_MATRIX, mat)获取;
Figure 839417DEST_PATH_IMAGE055
为可视化窗口矩阵,
Figure 64861DEST_PATH_IMAGE055
计算公式如下:
Figure 513160DEST_PATH_IMAGE056
Figure 574788DEST_PATH_IMAGE057
Figure 501156DEST_PATH_IMAGE058
为可视化窗口位置坐标,
Figure 846687DEST_PATH_IMAGE059
Figure 200308DEST_PATH_IMAGE060
为可视化窗口宽和高,通过OpenGL的 glutGet函数获取。
在得到包围盒在可视化窗口上的投影的像素值后,通过下述算法计算包围盒在可视化窗口上的显示像素值:
Figure 746302DEST_PATH_IMAGE061
其中,
Figure 476361DEST_PATH_IMAGE062
Figure 941977DEST_PATH_IMAGE063
是Boundingbox'上的顶点,
Figure 466499DEST_PATH_IMAGE064
表示
Figure 502720DEST_PATH_IMAGE065
Figure 770890DEST_PATH_IMAGE066
之间的距离。
S130,根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型。
在本实施例中,根据包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型。
其中,匹配规则包括:
根据预先创建的显示像素值与预设的LOD切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的LOD切换参数范围;
根据确定的LOD切换参数范围对应的LOD模型层级匹配与该LOD模型层级对应的LOD模型。
LOD切换参数范围为:
Figure 825434DEST_PATH_IMAGE067
其中,
Figure 786436DEST_PATH_IMAGE068
Figure 309953DEST_PATH_IMAGE069
Figure 647393DEST_PATH_IMAGE070
为包围盒在可视化窗口上显示像素值,取模型包围盒最小边的长度作为模型大小,避 免长条形模型显示模型精细度过低:
Figure 556443DEST_PATH_IMAGE071
Figure 173501DEST_PATH_IMAGE072
为误差的显示像素,
Figure 433581DEST_PATH_IMAGE073
,例如,把10个显示像素作为最大可容忍 误差,根据包围盒真实大小与在可视化窗口中显示的大小成比例,计算出包围盒显示误差 达到最大时对应的LOD模型像素大小。现有技术的LOD模型切换参数都是人工设定的,通过 引入误差的概念,可以自动的更精确确定切换临界值。
Figure 43554DEST_PATH_IMAGE074
Figure 72689DEST_PATH_IMAGE075
与原始模型之间的误差,模型精简后的误差
Figure 123298DEST_PATH_IMAGE076
使用原始模型与 精简模型的Hausdorff距离表示,Hausdorff距离是描述两组点集之间相似程度的一种量 度:
Figure 605094DEST_PATH_IMAGE026
Figure 18758DEST_PATH_IMAGE027
表示分别获取
Figure 902401DEST_PATH_IMAGE077
上的每个顶点到
Figure 126840DEST_PATH_IMAGE078
所有顶点的最近距离,从中选取距离最大者对应的距离作为
Figure 95933DEST_PATH_IMAGE079
与原始模型之 间的误差。
Figure 47708DEST_PATH_IMAGE080
为包围盒的实际大小,
Figure 598906DEST_PATH_IMAGE081
Figure 243514DEST_PATH_IMAGE082
层级LOD模型在误差最大时的模型像素 值,即LOD层级切换临界值。
S140,调用OpenGL的glBufferData接口将确定的LOD模型
Figure 699904DEST_PATH_IMAGE083
传送至显卡对经 缩放或移动后得到的目标体进行渲染。
在本实施例中,在确定好与当前目标体适配的LOD模型后,调用OpenGL的 glBufferData接口将确定的LOD模型
Figure 455370DEST_PATH_IMAGE083
传送至显卡进行渲染。LOD模型
Figure 798758DEST_PATH_IMAGE083
通过 VCG的meshsimplification函数对原始模型进行精简得到;
其中,模型简化使用如VCG(一个开源计算机图形库)的meshsimplification方法对三维模型进行精简。具体如下:
Figure 614267DEST_PATH_IMAGE084
Figure 761215DEST_PATH_IMAGE085
Figure 320372DEST_PATH_IMAGE086
为精简前的原始模型,n为LOD模型层 级,
Figure 335512DEST_PATH_IMAGE087
为LOD任一层级,
Figure 56343DEST_PATH_IMAGE088
为每级精简的比例,
Figure 487324DEST_PATH_IMAGE089
,Modeli为精简后的LOD模型。
在另一实施例中,模型简化也可以使用如VTK(visualization toolkit开源库)的vtkQuadricDecimation类对三维模型进行精简。
为了更进一步对本发明进行解释,本发明通过以下例子加以说明:
1. 采用半径为100的球由1600个顶点表示,取
Figure 584593DEST_PATH_IMAGE090
Figure 168153DEST_PATH_IMAGE091
,模型简化后得到 的LOD模型如下:
Figure 856623DEST_PATH_IMAGE092
2. 计算误差:
Figure 774900DEST_PATH_IMAGE093
3. 计算切换参数:
Figure 426593DEST_PATH_IMAGE094
4. 切换模型:
假设某台计算机可以流畅显示100万个顶点的三维模型,当视图变换(如缩放、旋转)后,某时刻视图中显示模型缩放后计算模型大小为200像素,则传递Model1到显示设备。
Figure 848347DEST_PATH_IMAGE095
如上表所示,当模型比较小时,显示比较粗糙模型即可达到比较好的显示效果,此时窗口可以容纳更多模型而不降低性能;当模型比较大时,窗口需要显示的模型更少,可以在相同性能下显示更多细节。
通过最大可接受误差自动生成的LOD切换参数,可确保LOD显示效果在可接受范围,不会过于粗糙,也不会过于精细,达到性能与显示效果的平衡。
如图2所示,是本发明LOD模型自动切换装置100的功能模块图。
本发明所述LOD模型自动切换装置100可以安装于电子设备中。根据实现的功能,所述LOD模型自动切换装置100可以包括确定模块110、计算模块120、匹配模块130及渲染模块140。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
确定模块110,用于确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒。
在本实施例中,当系统检测到用户对当前可视化窗口中的目标体进行缩放或移动时,确定当前可视化窗口中经缩放或移动后得到的目标体模型,并建立与该目标体对应的包围盒。
需要解释的是,包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。一个三维模型的包围盒就是一个能包围该模型的最小六面体,每一边都平行于一个坐标平面。
计算模块120,用于根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值。
在本实施例中,通过包围盒在可视化窗口上的像素值来为后续进行LOD参数切换创造必要条件。包围盒在可视化窗口上显示像素值根据包围盒在可视化窗口上的投影的像素值进行计算,包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:
Figure 176560DEST_PATH_IMAGE096
其中,
Figure 316554DEST_PATH_IMAGE097
为模型矩阵, 通过OpenGL的glGetFloatv(GL_MODELVIEW_MATRIX, mat) 获取;
Figure 771937DEST_PATH_IMAGE098
为投影矩阵,通过OpenGL的glGetFloatv(GL_PROJECTION_MATRIX, mat)获取;
Figure 517039DEST_PATH_IMAGE099
为可视化窗口矩阵,
Figure 16154DEST_PATH_IMAGE099
计算公式如下:
Figure 643444DEST_PATH_IMAGE100
Figure 886207DEST_PATH_IMAGE101
Figure 30356DEST_PATH_IMAGE102
为可视化窗口位置坐标,
Figure 700372DEST_PATH_IMAGE103
Figure 814958DEST_PATH_IMAGE104
为可视化窗口宽和高,通过OpenGL的 glutGet函数获取。
在得到包围盒在可视化窗口上的投影的像素值后,通过下述算法计算包围盒在可视化窗口上的显示像素值:
Figure 595832DEST_PATH_IMAGE105
其中,
Figure 862997DEST_PATH_IMAGE106
Figure 703914DEST_PATH_IMAGE107
是Boundingbox'上的顶点,
Figure 305796DEST_PATH_IMAGE108
表示
Figure 890362DEST_PATH_IMAGE109
Figure 12032DEST_PATH_IMAGE110
之间的距离。
匹配模块130,用于根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型。
在本实施例中,根据包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型。
其中,匹配规则包括:
根据预先创建的显示像素值与预设的LOD切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的LOD切换参数范围;
根据确定的LOD切换参数范围对应的LOD模型层级匹配与该LOD模型层级对应的LOD模型。
LOD切换参数范围为:
Figure 23851DEST_PATH_IMAGE111
其中,
Figure 113030DEST_PATH_IMAGE112
Figure 235706DEST_PATH_IMAGE113
Figure 211884DEST_PATH_IMAGE114
为包围盒在可视化窗口上显示像素值,取模型包围盒最小边的长度作为模型大小,避 免长条形模型显示模型精细度过低:
Figure 191341DEST_PATH_IMAGE115
Figure 502237DEST_PATH_IMAGE116
为误差的显示像素,
Figure 176407DEST_PATH_IMAGE117
,例如,把10个显示像素作为最大可容 忍误差,根据包围盒真实大小与在可视化窗口中显示的大小成比例,计算出包围盒显示误 差达到最大时对应的LOD模型像素大小。现有技术的LOD模型切换参数都是人工设定的,通 过引入误差的概念,可以自动的更精确确定切换临界值。
Figure 256359DEST_PATH_IMAGE118
Figure 875559DEST_PATH_IMAGE119
与原始模型之间的误差,模型精简后的误差
Figure 221221DEST_PATH_IMAGE120
使用原始模型与 精简模型的Hausdorff距离表示,Hausdorff距离是描述两组点集之间相似程度的一种量 度:
Figure 154541DEST_PATH_IMAGE026
Figure 885737DEST_PATH_IMAGE027
表示分别获取
Figure 675839DEST_PATH_IMAGE121
上的每个顶点到
Figure 164589DEST_PATH_IMAGE029
所有顶点的最近距离,从中选取距 离最大者对应的距离作为
Figure 183491DEST_PATH_IMAGE122
与原始模型之间的误差,
Figure 238035DEST_PATH_IMAGE123
为包围盒的实际大小,
Figure 199038DEST_PATH_IMAGE124
Figure 706243DEST_PATH_IMAGE125
层级LOD模型在误差最大时的模型像素值,即LOD层级切换临界值。
渲染模块140,用于调用OpenGL的glBufferData接口将确定的LOD模型
Figure 528836DEST_PATH_IMAGE126
传 送至显卡对经缩放或移动后得到的目标体进行渲染。
在本实施例中,在确定好与当前目标体适配的LOD模型后,调用OpenGL的 glBufferData接口将确定的LOD模型
Figure 703466DEST_PATH_IMAGE126
传送至显卡进行渲染。LOD模型
Figure 569790DEST_PATH_IMAGE126
通过 VCG的meshsimplification函数对原始模型进行精简得到;
其中,模型简化使用如VCG(一个开源计算机图形库)的meshsimplification方法对三维模型进行精简。具体如下:
Figure 829871DEST_PATH_IMAGE127
Figure 187646DEST_PATH_IMAGE128
Figure 216782DEST_PATH_IMAGE129
为精简前的原始模型,n为LOD模型层 级,
Figure 254008DEST_PATH_IMAGE130
为LOD任一层级,
Figure 1384DEST_PATH_IMAGE131
为每级精简的比例,
Figure 165781DEST_PATH_IMAGE132
,Modeli为精简后的LOD模型。
在另一实施例中,模型简化也可以使用如VTK(visualization toolkit开源库)的vtkQuadricDecimation类对三维模型进行精简。
为了更进一步对本发明进行解释,本发明通过以下例子加以说明:
1.采用半径为100的球由1600个顶点表示,取
Figure 49423DEST_PATH_IMAGE133
Figure 523130DEST_PATH_IMAGE134
,模型简化后得到的 LOD模型如下:
Figure 492223DEST_PATH_IMAGE135
2.计算误差:
Figure 194731DEST_PATH_IMAGE136
3.计算切换参数:
Figure 198459DEST_PATH_IMAGE137
4.切换模型:
假设某台计算机可以流畅显示100万个顶点的三维模型,当视图变换(如缩放、旋转)后,某时刻视图中显示模型缩放后计算模型大小为200像素,则传递Model1到显示设备。
Figure 843067DEST_PATH_IMAGE138
如上表所示,当模型比较小时,显示比较粗糙模型即可达到比较好的显示效果,此时窗口可以容纳更多模型而不降低性能;当模型比较大时,窗口需要显示的模型更少,可以在相同性能下显示更多细节。
通过最大可接受误差自动生成的LOD切换参数,可确保LOD显示效果在可接受范围,不会过于粗糙,也不会过于精细,达到性能与显示效果的平衡。
如图3所示,是本发明实现LOD模型自动切换方法的电子设备的结构示意图。
所述电子设备1可以包括处理器12、存储器11和总线,还可以包括存储在所述存储器11中并可在所述处理器12上运行的计算机程序,如LOD模型自动切换程序10。
其中,所述存储器11至少包括一种类型的可读存储介质,所述计算机可用存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如LOD模型自动切换程序10的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器12在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种判断芯片的组合等。所述处理器12是所述电子设备的判断核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如LOD模型自动切换程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
所述总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、判断总线等。所述总线被设置为实现所述存储器11以及至少一个处理器12等之间的连接通信。
图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器12逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
进一步地,所述电子设备1还可以包括网络接口13,可选地,所述网络接口13可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。
可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
所述电子设备1中的所述存储器11存储的LOD模型自动切换程序10是多个指令的组合,在所述处理器12中运行时,可以实现:
确定步骤:确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;
计算步骤:根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上的显示像素值;
匹配步骤:根据所述包围盒在可视化窗口上的显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型;
渲染步骤:调用OpenGL的glBufferData接口将确定的LOD模型传送至显卡对经缩放或移动后得到的目标体进行渲染。
具体地,所述处理器12对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (8)

1.一种LOD模型自动切换方法,其特征在于,该方法包括:
确定步骤:确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;
计算步骤:根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上的显示像素值;
匹配步骤:根据所述包围盒在可视化窗口上的显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型;
渲染步骤:调用OpenGL的glBufferData接口将确定的LOD模型传送至显卡对经缩放或移动后得到的目标体进行渲染;
所述包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:
Figure DEST_PATH_IMAGE001
其中,
Figure DEST_PATH_IMAGE002
为模型矩阵, 通过OpenGL的glGetFloatv(GL_MODELVIEW_MATRIX, mat)获取;
Figure DEST_PATH_IMAGE003
为投影矩阵,通过OpenGL的glGetFloatv(GL_PROJECTION_MATRIX, mat)获取;
Figure DEST_PATH_IMAGE004
为可视化窗口矩阵,
Figure 369198DEST_PATH_IMAGE004
计算公式如下:
Figure DEST_PATH_IMAGE005
Figure DEST_PATH_IMAGE006
Figure DEST_PATH_IMAGE007
为可视化窗口位置横坐标和纵坐标,
Figure DEST_PATH_IMAGE008
Figure DEST_PATH_IMAGE009
为可视化窗口宽和高,通过OpenGL的 glutGet函数获取。
2.如权利要求1所述的LOD模型自动切换方法,其特征在于,所述包围盒在可视化窗口上的显示像素值通过以下算法计算得到:
Figure DEST_PATH_IMAGE010
其中,
Figure DEST_PATH_IMAGE011
Figure DEST_PATH_IMAGE012
是Boundingbox'上的顶点,
Figure DEST_PATH_IMAGE013
表示
Figure 191398DEST_PATH_IMAGE011
Figure 174398DEST_PATH_IMAGE012
之间的距离。
3.如权利要求2所述的LOD模型自动切换方法,其特征在于,所述匹配规则包括:
根据预先创建的显示像素值与预设的LOD切换参数范围之间的映射关系,确定该包围盒在可视化窗口上显示像素值对应的LOD切换参数范围;
根据确定的LOD切换参数范围对应的LOD模型层级匹配与该LOD模型层级对应的LOD模型。
4.如权利要求1所述的LOD模型自动切换方法,其特征在于,所述LOD切换参数范围为:
Figure DEST_PATH_IMAGE014
其中,
Figure DEST_PATH_IMAGE015
Figure DEST_PATH_IMAGE016
Figure DEST_PATH_IMAGE017
为包围盒在可视化窗口上显示像素值,
Figure DEST_PATH_IMAGE018
Figure DEST_PATH_IMAGE019
为误差的显示像素,
Figure DEST_PATH_IMAGE020
Figure DEST_PATH_IMAGE021
Figure DEST_PATH_IMAGE022
与原始模型之间的误差,
Figure DEST_PATH_IMAGE023
Figure DEST_PATH_IMAGE024
表示分别获取
Figure DEST_PATH_IMAGE025
上的每个顶点到
Figure DEST_PATH_IMAGE026
所有顶点的最近距离,从 中选取距离最大者对应的距离作为
Figure 327862DEST_PATH_IMAGE026
与原始模型之间的误差,
Figure DEST_PATH_IMAGE027
为包围盒的实际 大小,
Figure DEST_PATH_IMAGE028
Figure DEST_PATH_IMAGE029
层级LOD模型在误差最大时的模型像素值,即LOD层级切换临界值。
5.如权利要求4所述的LOD模型自动切换方法,其特征在于,所述LOD模型
Figure DEST_PATH_IMAGE030
通过VCG 的meshsimplification函数对原始模型进行精简得到;
其中,
Figure DEST_PATH_IMAGE031
Figure DEST_PATH_IMAGE032
Figure DEST_PATH_IMAGE033
为精简前的原始模型,n为LOD 模型层级,
Figure 125923DEST_PATH_IMAGE029
为LOD任一层级,
Figure 666494DEST_PATH_IMAGE003
为每级精简的比例,
Figure DEST_PATH_IMAGE034
,Modeli为精简后的LOD模型。
6.一种LOD模型自动切换装置,其特征在于,所述LOD模型自动切换装置包括:
确定模块,用于确定当前可视化窗口中经缩放或移动后得到的目标体,建立与该目标体对应的包围盒;
计算模块,用于根据所述包围盒在可视化窗口上的投影的像素值计算所述包围盒在可视化窗口上显示像素值;
匹配模块,用于根据所述包围盒在可视化窗口上显示像素值及预设匹配规则选择与该包围盒匹配的LOD模型;
渲染模块,用于调用OpenGL的glBufferData接口将确定的LOD模型
Figure DEST_PATH_IMAGE035
传送至显卡 对经缩放或移动后得到的目标体进行渲染;
所述包围盒在可视化窗口上的投影的像素值通过以下算法计算得到:
Figure DEST_PATH_IMAGE036
其中,
Figure 792582DEST_PATH_IMAGE002
为模型矩阵, 通过OpenGL的glGetFloatv(GL_MODELVIEW_MATRIX, mat)获取;
Figure 460324DEST_PATH_IMAGE003
为投影矩阵,通过OpenGL的glGetFloatv(GL_PROJECTION_MATRIX, mat)获取;
Figure 332465DEST_PATH_IMAGE004
为可视化窗口矩阵,
Figure 43938DEST_PATH_IMAGE004
计算公式如下:
Figure 267109DEST_PATH_IMAGE005
Figure 207383DEST_PATH_IMAGE006
Figure 448877DEST_PATH_IMAGE007
为可视化窗口位置横坐标和纵坐标,
Figure 347563DEST_PATH_IMAGE008
Figure 58030DEST_PATH_IMAGE009
为可视化窗口宽和高,通过OpenGL的 glutGet函数获取。
7.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至5中任一所述的LOD模型自动切换方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有LOD模型自动切换程序,所述LOD模型自动切换程序可被一个或者多个处理器执行,以实现如权利要求1-5中任一项所述的LOD模型自动切换方法的步骤。
CN202011384479.5A 2020-12-02 2020-12-02 Lod模型自动切换方法、装置、电子设备及存储介质 Active CN112215935B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011384479.5A CN112215935B (zh) 2020-12-02 2020-12-02 Lod模型自动切换方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011384479.5A CN112215935B (zh) 2020-12-02 2020-12-02 Lod模型自动切换方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112215935A CN112215935A (zh) 2021-01-12
CN112215935B true CN112215935B (zh) 2021-04-16

Family

ID=74068093

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011384479.5A Active CN112215935B (zh) 2020-12-02 2020-12-02 Lod模型自动切换方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112215935B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117557740B (zh) * 2024-01-10 2024-04-09 四川见山科技有限责任公司 三维模型分割层级切换方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102157008A (zh) * 2011-04-12 2011-08-17 电子科技大学 一种大规模虚拟人群实时绘制方法
CN109887093A (zh) * 2019-01-17 2019-06-14 珠海金山网络游戏科技有限公司 一种游戏细节层次处理方法及系统
CN110675496A (zh) * 2019-09-27 2020-01-10 武汉中地数码科技有限公司 基于三维城市地质模型的网格剖分和可视化方法及其系统
CN110796742A (zh) * 2019-10-25 2020-02-14 西安建筑科技大学 一种基于面向对象的三维场景视锥体剔除方法
CN110910505A (zh) * 2019-11-29 2020-03-24 西安建筑科技大学 一种场景模型的加速渲染方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100527169C (zh) * 2005-11-23 2009-08-12 北京航空航天大学 一种三维场景实时绘制系统
CN101441779B (zh) * 2008-12-26 2010-11-10 南京师范大学 一种海量数字化地形的快速动态绘制方法
CN102903146B (zh) * 2012-09-13 2015-09-16 中国科学院自动化研究所 用于场景绘制的图形处理方法
CN110738721B (zh) * 2019-10-12 2023-09-01 四川航天神坤科技有限公司 基于视频几何分析的三维场景渲染加速方法及系统
CN110838129A (zh) * 2019-11-18 2020-02-25 四川视慧智图空间信息技术有限公司 基于倾斜摄影测量的三维建筑物模型轮廓特征线提取方法
CN111192354A (zh) * 2020-01-02 2020-05-22 武汉瑞莱保能源技术有限公司 一种基于虚拟现实的三维仿真方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102157008A (zh) * 2011-04-12 2011-08-17 电子科技大学 一种大规模虚拟人群实时绘制方法
CN109887093A (zh) * 2019-01-17 2019-06-14 珠海金山网络游戏科技有限公司 一种游戏细节层次处理方法及系统
CN110675496A (zh) * 2019-09-27 2020-01-10 武汉中地数码科技有限公司 基于三维城市地质模型的网格剖分和可视化方法及其系统
CN110796742A (zh) * 2019-10-25 2020-02-14 西安建筑科技大学 一种基于面向对象的三维场景视锥体剔除方法
CN110910505A (zh) * 2019-11-29 2020-03-24 西安建筑科技大学 一种场景模型的加速渲染方法

Also Published As

Publication number Publication date
CN112215935A (zh) 2021-01-12

Similar Documents

Publication Publication Date Title
EP3951721A1 (en) Method and apparatus for determining occluded area of virtual object, and terminal device
CN108267154B (zh) 一种地图显示方法及装置
CN111651858A (zh) 数字孪生模型生成方法、装置及计算机可读存储介质
CN113077548B (zh) 针对物体的碰撞检测方法、装置、设备和存储介质
CN111783982B (zh) 攻击样本的获取方法、装置、设备及介质
CN112489213A (zh) 三维地形模型生成方法、装置、电子设备及存储介质
US20190080512A1 (en) Three-dimensional graphics image processing
CN107204044A (zh) 一种基于虚拟现实的画面显示方法及相关设备
CN112215935B (zh) Lod模型自动切换方法、装置、电子设备及存储介质
CN112541049A (zh) 高精地图处理方法、装置、设备、存储介质和程序产品
US20220198743A1 (en) Method for generating location information, related apparatus and computer program product
CN116109767A (zh) 三维场景的渲染方法、图像处理器、电子设备及存储介质
WO2022227191A1 (zh) 非主动活体检测方法、装置、电子设备及存储介质
CN116401326A (zh) 道路标识的更新方法及装置
CN114797109A (zh) 对象编辑方法、装置、电子设备和存储介质
CN113850836A (zh) 基于行为轨迹的员工行为识别方法、装置、设备及介质
CN113570256A (zh) 应用于城市规划的数据处理方法、装置、电子设备及介质
CN112561889A (zh) 目标物检测方法、装置、电子设备及存储介质
CN112712119A (zh) 确定目标检测模型的检测准确率的方法和装置
US20230004687A1 (en) Dimension creation device, dimension creation method, and recording medium
CN113436325B (zh) 一种图像处理方法、装置、电子设备及存储介质
CN117909008B (zh) 地图显示方法、装置、电子设备和可读存储介质
CN111179174B (zh) 一种基于人脸识别点的图像拉伸方法和装置
CN117610124B (zh) 基于bim技术实现汇报展示平台的构建方法及系统
CN115457100A (zh) 三维扫描质量提升方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant