CN110443893A - 大规模建筑场景渲染加速方法、系统、装置和存储介质 - Google Patents

大规模建筑场景渲染加速方法、系统、装置和存储介质 Download PDF

Info

Publication number
CN110443893A
CN110443893A CN201910710424.XA CN201910710424A CN110443893A CN 110443893 A CN110443893 A CN 110443893A CN 201910710424 A CN201910710424 A CN 201910710424A CN 110443893 A CN110443893 A CN 110443893A
Authority
CN
China
Prior art keywords
rendering
scene
pel
data
extensive building
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.)
Granted
Application number
CN201910710424.XA
Other languages
English (en)
Other versions
CN110443893B (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.)
Glodon Polytron Technologies Inc
Original Assignee
Glodon Polytron Technologies Inc
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 Glodon Polytron Technologies Inc filed Critical Glodon Polytron Technologies Inc
Priority to CN201910710424.XA priority Critical patent/CN110443893B/zh
Publication of CN110443893A publication Critical patent/CN110443893A/zh
Application granted granted Critical
Publication of CN110443893B publication Critical patent/CN110443893B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明属于工程建筑领域的计算机图形学,是BIM(Building Information Modeling)技术的核心部分——三维建筑图形渲染技术,具体涉及一种大规模建筑场景渲染加速方法、系统、装置和存储介质。目前的渲染引擎系统、架构和算法,在面对更大规模模型的时候,都面临着无法很好的适应和扩展的情况,针对一些更大体量的建筑工程三维模型的显示,都存在着诸多瑕疵和不足。本发明基于层次嵌套,内外遮挡关系的空间索引(OOSI),由于经过静态的预处理,当浏览建筑物整体的时候,完全规避了依据视点动态预处理的巨大开销,同时由于外层图元被赋予较高的视觉权重,在保证视觉的渲染效率上达到了最优化没有将宝贵的渲染资源浪费于视觉权重不高的图元。

Description

大规模建筑场景渲染加速方法、系统、装置和存储介质
技术领域
本发明属于工程建筑领域的计算机图形学,是BIM(Building InformationModeling)技术的核心部分——三维建筑图形渲染技术,具体涉及一种大规模建筑场景渲染加速方法、系统、装置和存储介质。
背景技术
BIM(建筑信息模型)为近年来建筑信息化领域核心的理念之一,其数据的基础即为建筑的三维信息模型。相比于传统的二维设计、绘图,BIM技术全面利用三维图形技术,以建筑物(建筑构件、建筑整体)的三维图形为载体进一步挂接各种建筑信息参数,形成建筑信息模型,然后进行建筑物、甚至构件的全生命周期管理。可以说,三维图形是BIM技术的肌肉与皮肤,直观的三维图形表达与处理能有效帮助BIM关键应用的落地,实现其价值,譬如建筑模型的可视化、碰撞检测、5D虚拟施工等。这些应用很难想象在非图形、或者二维图形的世界中完成。
针对三维信息模型的显示,目前与建设工程领域相近的行业或应用领域分别是游戏行业和地理信息系统(GIS)。下面参见图1对现有技术常规渲染流程进行说明。
1.1构造场景及空间索引
对于三维图形渲染系统来说,所要渲染的对象一般称为图元,而图元的集合称为场景。在构造场景的同时,一般也会给场景图元建立空间索引,常见的空间索引有BSP,BVH,八叉树等。空间索引会依据某种规则把场景图元所占的三维空间范围划分成相应的空间索引单元,然后将场景图元依次填入其空间位置相应的空间索引单元中,其后续的遍历即依据空间索引的划分特点和遍历规则来进行,从而加快场景图元查询访问的速度。
1.2静态批次合并(可选)
渲染系统在渲染场景的时候,会把场景图元的三角网格数据及渲染状态数据推送给显卡,一般来说,每个图元推送一次,那么随着场景规模增大,这种推送的次数也会变多,导致渲染效率降低。为了加速渲染,会将渲染状态数据相同的场景图元的三角网格数据合并推送给显卡,从而降低推送次数,达到渲染效率的优化。
1.3效果烘焙(可选)
针对场景图元规模比较大的建筑场景,在某些使用情境下,还有对高级渲染效果的要求,但是很显然,这些效果的加入会严重拖慢渲染效率,甚至无法使用。为了规避这一问题,该步骤会在第一次渲染场景的时候,花费比较多的时间,采用非常耗时但是效果非常好的渲染方式将场景渲染完毕,并将结果渲染到图元的表面纹理(图片),如光照效果、阴影效果等等。那么如果场景没有发生变更,在第二次渲染场景的时候,就无需再次渲染这些效果,而是直接渲染烘焙之后的纹理即可,类似于照片替代实景。
1.4初始化渲染场景数据(完整帧)
由于建筑场景的图元规模比较大,一般会采用将场景图元以分批次的方式渐进的渲染完整个场景,该步骤就是整个场景渲染得起始动作,会有很多初始化的功能要处理,例如渲染数据结构初始化,计时器复位等等。
1.5传入视点、视口信息
该步骤为渲染引擎的常规步骤,为后续渲染管线准备相关的视点、视口数据,用于管线的数据变换和处理。
1.6遍历空间索引
在步骤1.1创建的空间索引,其主要功能就是空间遍历和查询的加速,空间索引的单元即为空间划分的一部分,在步骤1.5的视点、视口信息基础上,可以快速判断出那些空间索引的单元不在当前可视范围内,从而快速跳过不必访问的空间索引单元,从而达成加速。
1.7加载场景图元渲染数据(可选)
场景图元的渲染数据,一般存在与渲染系统所运行的进程内存中,但有些时候从节省内存的角度出发,可能将这些数据迁移到外存(磁盘)上,如果采用这种策略,就需要将外存(磁盘)上的渲染数据加载到进程内存中。如果不采用这种策略,则不需要。
1.8遮挡剔除(可选)
包括后续的步骤1.9和步骤1.10,均为后续渲染步骤针对场景图元的筛选工作。如果采用遮挡剔除策略,那么将会计算场景图元之间的在给定视点下的遮挡关系。比如,站在建筑物外部的视点,将只能看见建筑外墙和透过窗户看见的个别图元,其他的图元都被遮挡无法看见,那么这些场景图元将不会被选出提交给后续渲染步骤。
1.9视锥剔除
即视野范围的剔除,类似于相机拍照,视点位置即为相机所在位置,相机由于镜头张角等因素,可以观察到的视野角度是受限的,例如广角镜头的观察范围比普通的镜头要宽,而出现在镜头之外的部分,将不会被选出提交给后续渲染步骤。
1.10计算选择LOD(可选)
个别场景图元可能由于造型比较复杂,导致渲染数据非常庞大,例如渲染数据中三角网格的数量众多,将会大大拖慢渲染效率。LOD——Level of Detail,即层次细节技术,将为场景图元的渲染数据生成不同细节粒度的版本,在渲染的时候依据视点到场景图元的距离远近来动态的选择相应层次细节的渲染数据,比如距离较近的时候,采用高精细度的渲染数据,保持视觉的真实度,而距离较远的时候,采用低精细度的渲染数据,节省渲染开销,提升渲染效率。进一步的,如果距离非常远,一些非常小的场景图元可以判定为不可见,直接跳过。
1.11动态预处理渲染数据
经过针对场景的遍历,我们可以选取出需要渲染的渲染数据,但是这些渲染数据以什么样的顺序去渲染,就需要进行动态的预处理。一般包含几个预处理步骤:1、三维实体模型类场景图元按照其空间占比排序,空间占比大的场景图元优先渲染;2、半透明类场景图元由于透明算法的混合操作,按照视距由远到近的渲染;3、其他有指定渲染顺序需求的渲染数据的排序等。
1.12绘制第一批渲染数据(首帧)
1.13绘制后续批次(后续帧、可选)
1.14结束当前完整帧渲染
步骤1.12、步骤1.13和步骤1.14即为真正的向显卡发送渲染数据进行渲染的步骤,整体采用渐进分批绘制的方式逐步渲染完整个场景,每一个批次称为批次帧。步骤1.12步骤绘制第一批次(首帧);步骤1.13为场景在1个批次没有绘制完的情况下绘制后续的批次(后续帧);步骤1.14为绘制结束动作,会将一些绘制有关的变量重置,并为绘制下一个完整帧做准备。
1.15场景变更
由于在步骤1.14之后整个场景已经绘制完毕,在步骤1.15中列举了会触发场景重绘操作的几种情况,即从头绘制整个场景。这里粗略列出了三种由于场景本身数据变化导致的重绘需求:1、整体:场景整体数据发生了变化:增、删等;2、可见性:场景图元的可见性发生了变化;3、渲染状态:颜色、贴图等。在发生第1和第2种情况时,跳转至步骤1.1开始重绘,发生地3种情况时,跳转至步骤1.2开始重绘。
1.16视点变更
与步骤1.15类似,说明了在视点变更的情况下,需要跳转至步骤1.4开始重绘整个场景。
游戏行业聚焦模型显示真实度、美感和交互体验,其场景主体往往是由专业的编辑器来编辑创建,场景整体是相对静态的,其场景规模有限,除了角色、光照、天气等一些元素动态可变之外,其他的主要场景本体都是由相关引擎的编辑器预先制作好并进行相关静态优化,例如采用静态批次合并(步骤1.2)、效果烘焙(步骤1.3)、计算、选择选择LOD(步骤1.10)和动态预处理渲染数据(步骤1.11)等技术,将场景主体调节到最优,从而加速渲染速度,达到实时渲染的高帧率。然而这种技术,对于与业务高度相关的BIM场景来说,用户随时有模型集成、模型过滤等浏览需求,导致整个场景高度可变,因此导致这些游戏领域优化的相关技术无法在类似BIM模型浏览等使用场景下去实际使用。在步骤1.15所示的几种场景变更情况中,场景整体变更、个别图元的可见性变化以及渲染状态变化,在BIM模型应用里是非常高频的发生的,而在游戏里面,除了人物等少数模型会频繁变更之外,其他元素几乎不会变化。此外,游戏的具体场景一般都会有比较强烈的局部性,即单个场景里面的图元个数非常有限(一般不会超过千级别),从而保证所有图元能在一个完整帧绘制完毕,而且保证帧频。这在动辄就达到几十万级别的BIM模型来说,除极个别小场景外基本无法适用。
地理信息系统(GIS)也同样面临着大模型数据量显示的难题。但所不同的是,GIS的数据规模虽然庞大,但是其数据主要为规则的三角形网格数据和位图数据,包括简单的三维数据和二维图片数据,一般可以构造多层次的金字塔数据,从而根据视点调取相应精度的数据,渐进显示。类似Google Earth,模型整体以二维为主、三维为辅,对模型的整体显示精度和模型细部细节要求并不高。那么GIS行业的渲染引擎一般都会用金子塔的形式组织多层次细节数据,在不同的视距下来动态的加载相应的层次细节数据,而这种数据的呈现往往有一定的延迟,同时其三维表现细节和三维模型的丰富程度,都无法与BIM高精度模型的显示要求相比。
GIS系统里面的核心技术——计算、选择LOD(步骤1.10),但针对建筑物来说,采用LOD处理之后的模型体量和数量依然庞大,同时过度采用LOD处理不仅会带来数据的进一步膨胀,也会发生难以对LOD系数进行精确调教的问题,导致显示变形、缺失,其根本在于建筑构件的形状复杂性、多样性。因此无法单纯依靠LOD来解决模型规模过大的问题。
还有一类渲染系统,既可用于BIM又可用于GIS,比如OSG系统,其在内部渲染的时候,采用了场景空间索引,类似八叉树、BVH、BSP树(步骤1.1)等,这类空间索引在局部观察的时候,通过视锥剔除(View Frustum Culling)(步骤1.9)能提供很好的剔除不可见图元(视口外),缩小渲染规模,从而加速渲染的效果,这是一种每帧绘制都需要进行的预处理机制,但是在BIM整体模型浏览的时候,却无法起到加速作用。
另外一类渲染加速机制,即遮挡剔除(步骤1.8),被广泛用于各类渲染引擎之中,即通过物体间的遮挡关系查询,剔除掉从视点观察被其他图元遮挡的其他图元,从而缩小渲染规模,以加速渲染速度。但这种方式存在一个巨大的问题,即由于遮挡查询与视点相关,在每一次绘制场景的时候,都需要进行这种预处理,那么遮挡查询预处理的时间会大幅增长,从而挤占场景绘制时间。
BIM在施工阶段,需要将设计阶段的多个专业类型诸如建筑、结构、机电设备等的设计模型整合到一起进行施工的总体管理,可以想见除了对模型精度有所要求之外,也将面临着模型规模急剧膨胀的问题,而这一问题,以单纯的游戏、GIS相关优化策略或者包括一般的设计类软件的渲染策略往往难以解决。
目前困扰BIM行业的模型渲染技术的一个难点在于,模型规模体量庞大,尤其对于施工阶段的模型渲染来说,由于承接了各个设计源端的模型数据,包括全楼层、全专业的模型,数量相较一般的三维图形渲染系统来说,其体量早已远远超过了其渲染引擎所能承受的极限。此外,对于BIM行业的应用来说,其模型的精度也非常重要,即又要保证模型显示的正确性,也要在细部观察时不能丢失模型显示的相关细节。
针对建筑类的大规模场景渲染,BIM行业相关的设计软件、模型浏览软件以及渲染引擎,与一般大场景显示技术类似,目前做的比较好的也是基于空间索引,进行视点动态排序(预处理),其致力于场景的空间索引在八叉树、BVH、BSP树(步骤1.1)上,根据视点变化进行视锥剔除、排序,对整个场景进行基于视点和空间索引的动态预处理之后,进行渐进显示,从而获得比较好的渲染效率和体验。一般而言,可以通过让距离视点较近、较大的物体先于其他场景图元显示,从而增强模型的整体显示视觉效果。但是这种处理方式仍然面临着如下两个问题:
1、建筑模型的完整性,并非仅能靠远近大小来保证,比如如果切换视点到轴测观察位置,那么一般而言大部分特征为方正的建筑,会将角落图元显示出来而非整体,同时由于楼板等大图元的存在,导致用户最先看到的是楼板等图元,在模型交互显示的时候,会出现大量残缺空挡。
2、无论是视距排序,还是大小排序,都需要按照视点的变化针对全场景来进行,这同样无疑会增加动态预处理时间,而缩短渲染的时间预算。
综上所述,目前的渲染引擎系统、架构和算法,在面对更大规模模型的时候,都面临着无法很好的适应和扩展的情况,针对一些更大体量的建筑工程三维模型的显示,都存在着诸多瑕疵和不足。
发明内容
本发明旨在针对现有渲染系统的缺点,提出一种更加具有可扩展性、更加高效的大规模建筑场景渲染加速方法、系统、装置和存储介质。
本发明提供一种大规模建筑场景渲染加速方法,该方法包括以下步骤:
S1、渲染准备,包括以下两个方面的准备工作:
S1.1在主线程中进行场景渲染前的渲染准备;
S1.2与主线程同步地在子线程中进行静态预处理,目的在于得到第一批渲染数据,预处理时把场景中视觉权重较高的图元筛选出来,作为第一批渲染数据;
S2、在主线程中执行场景渲染,包括以下两种情况:
S2.1当未读取到第一批渲染数据时,直接进行场景渲染;
S2.2当读取到第一批渲染数据时,首先对该第一批渲染数据涉及的场景图元进行渲染,然后对该第一批渲染数据之外的场景图元进行渲染。
可选地,在所述步骤S1.1中,渲染准备包括:
S1.1.1构造场景及空间索引;
S1.1.2初始化渲染场景数据;
S1.1.3传入视点、视口信息。
可选地,在所述步骤S1.2中,将所述视觉权重较高的图元通过层次嵌套网格索引OOSI筛选出来,该层次嵌套网格索引(OOSI)按照空间的层次嵌套关系建立,通过该层次嵌套网格索引(OOSI)提取外层的图元,并在其中筛选出空间占比超过一定阈值的场景图元作为第一批渲染数据。
可选地,所述空间的层次嵌套关系由遮挡关系来决定。
可选地,所述阈值可调整。
可选地,构建所述层次嵌套网格索引(OOSI)包括以下步骤:
S1.2.1均匀划分场景成为N×N×N的三维网格单元;
S1.2.2场景图元按空间范围填入三维网格单元;
S1.2.3三维网格单元间通过遮挡关系判定层次;
S1.2.4生成层次嵌套网格索引OOSI。
可选地,在步骤S1.2.1中,遍历场景中所有图元,求取场景的最小值顶点以及最大值顶点构成场景的轴对齐包围盒,在该轴对齐包围盒的长方体空间进行X、Y、Z三个维度均匀细分,每个维度的粒度为N。
可选地,在步骤S1.2.2中,对每一个三维网格进行相交判定,与之相交的场景图元作为该三维网格能够索引到的内容。
可选地,相交判定采用场景图元的三角形数据或者场景图元自身的轴对齐包围盒,如果追求准确度,使用前者;如果追求速度,使用后者。
可选地,在步骤S1.2.3中,三维网格单元间沿6向、10向或者26向通过遮挡关系判定层次。
可选地,在步骤S1.2.4中,基于三维网格单元的内外关系和嵌套深度,生成层次嵌套网格索引OOSI。
可选地,依据外层图元的轴对齐包围盒的大小、即图元空间占比来进行排序后,再进行筛选。
可选地,在步骤S1.2中获得第一批渲染数据之后,根据需要进行静态批次合并和/或效果烘焙。
可选地,在所述步骤S2.1中,直接进行场景渲染包括以下步骤:
S2.1.1遍历空间索引;
S2.1.2视锥剔除;
S2.1.3动态预处理后续批次渲染数据;
S2.1.4结束当前完整帧渲染。
可选地,在步骤S2.1.1和步骤S2.1.2之间根据需要加载场景图元渲染数据和/或遮挡剔除。
可选地,在步骤S2.1.2和步骤S2.1.3之间根据需要计算、选择LOD。
可选地,在步骤S2.1.3和步骤S2.1.4之间根据需要绘制后续批次。
可选地,在所述步骤S2.2中,当视点由室外进入室内时,重新遍历层次嵌套网格索引OOSI来动态构造所有批次渲染数据并进行渲染,其中构造的算法为:(1)对内部的三维网格单元进行视锥剔除,(2)对剔除后剩下的三维网格单元进行快速动态排序,按照三维网格单元与视点的距离远近进行排序,靠近视点的三维网格单元中的图元将获得较高的渲染优先级。
可选地,当场景未变更仅视点变更时,跳至步骤S1.1,从渲染准备的初始化渲染场景数据开始执行方法。
可选地,当场景的整体数据或可见性发生变化,则重新执行本方法。
可选地,当场景的渲染状态发生变化,则重新构造第一批渲染数据。
本发明提供一种大规模建筑场景渲染加速系统,该系统包括:
渲染准备单元,在准备过程中一方面在主线程中进行场景渲染前的渲染准备;另一方面与主线程同步地在子线程中进行静态预处理,目的在于得到第一批渲染数据,预处理时把场景中视觉权重较高的图元筛选出来,作为第一批渲染数据;
场景渲染单元,当未读取到第一批渲染数据时,直接进行场景渲染;当读取到第一批渲染数据时,首先对该第一批渲染数据涉及的场景图元进行渲染,然后对该第一批渲染数据之外的场景图元进行渲染。
可选地,所述渲染准备单元包括主线程渲染准备模块和子线程静态预处理模块。
可选地,所述主线程渲染准备模块需要完成的工作依次包括:构造场景及空间索引、初始化渲染场景数据和传入视点、视口信息。
可选地,所述子线程静态预处理模块,将所述视觉权重较高的图元通过层次嵌套网格索引(OOSI)筛选出来,该层次嵌套网格索引(OOSI)按照空间的层次嵌套关系建立,通过该层次嵌套网格索引(OOSI)提取外层的图元,并在其中筛选出空间占比超过一定阈值的场景图元作为第一批渲染数据。
可选地,所述空间的层次嵌套关系由遮挡关系来决定。
可选地,所述阈值可调整。
可选地,所述子线程静态预处理模块通过下述步骤构建所述层次嵌套网格索引(OOSI):均匀划分场景成为N×N×N的三维网格单元;场景图元按空间范围填入三维网格单元;三维网格单元间通过遮挡关系判定层次;生成层次嵌套网格索引OOSI。
可选地,场景图元按空间范围填入三维网格单元时,对每一个三维网格进行相交判定,与之相交的场景图元作为该三维网格能够索引到的内容。
可选地,相交判定采用场景图元的三角形数据或者场景图元自身的轴对齐包围盒,如果追求准确度,使用前者;如果追求速度,使用后者。
可选地,所述场景渲染单元直接进行场景渲染包括以下步骤:遍历空间索引;视锥剔除;动态预处理后续批次渲染数据;结束当前完整帧渲染。
可选地,所述场景渲染单元,在绘制完第一批渲染数据时,若视点由室外进入室内时,所述场景渲染单元重新遍历层次嵌套网格索引OOSI来动态构造所有批次渲染数据并进行渲染,其中构造的算法为:(1)对内部的三维网格单元进行视锥剔除,(2)对剔除后剩下的三维网格单元进行快速动态排序,按照三维网格单元与视点的距离远近进行排序,靠近视点的三维网格单元中的图元将获得较高的渲染优先级。
本发明还提供了一种大规模建筑场景渲染加速装置,该装置包括存储器,用于存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现上述任一种方法。
本发明还提供了一种存储介质,用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机执行上述任一项方法。
在本发明中,基于遮挡场景图元之间的遮挡关系构造出的层次嵌套索引,包括视觉权重的静态预处理是整个渲染系统发明的核心。
有益效果:
1、基于层次嵌套,内外遮挡关系的空间索引(Occlusion Oriented SpatialIndex,简称OOSI):由于经过静态的预处理,当浏览建筑物整体的时候,完全规避了依据视点动态预处理的巨大开销,同时由于外层图元被赋予较高的视觉权重,在保证视觉的渲染效率上达到了最优化,即在模型交互显示的时候,如平移、缩放、旋转的时候,以极快的速度将模型的整体性和保真度得到了最大体现,没有将宝贵的渲染资源浪费于视觉权重不高的图元(如建筑物内侧、空间占比很小的图元);
2、基于OOSI的图元划分的快速计算,采用并行计算的方式进行加速,核心策略利用了CPU端的多核多线程并行计算;
3、视点在建筑物内部的时候,如果OOSI计算完成,仍然能够利用OOSI进行加速剔除和排序。如果计算没有完成,则可以利用场景自身的八叉树空间索引来进行视锥剔除。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为现有技术常规渲染流程示意图;
图2为本发明渲染加速方法的流程示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本发明,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
本发明实施例提供一种大规模建筑场景渲染加速方法。本实施例提供的渲染加速方法可以由一计算装置来执行,该计算装置可以实现为软件,或者实现为软件和硬件的组合,该计算装置可以集成设置在服务器、终端设备等中。如图2所示,对本发明的场景渲染加速方法进行清楚、完整地描述,具体步骤如下:
2.1、构造场景及空间索引
该步骤与现有技术的步骤1.1相同,在场景被构造的同时,为后续的场景视锥剔除以及拾取功能加速构造空间索引。
2.2、静态预处理第一批渲染数据
该步骤是本发明实现渲染加速的关键环节,其主要目标是针对视觉权重进行预处理,也就是说,根据场景的具体情况,把视觉权重较高(空间占比超过一定阈值,该阈值可调整)的图元通过全新的静态空间索引-层次嵌套网格索引(OOSI)OOSI(Occlusion OrientedSpatial Index简称OOSI)计算筛选出来,作为第一批渲染数据。
举例说明,对于建筑物类的场景,在外部观察就是整个建筑的最外层,这个层次嵌套网格索引(OOSI)不同于目前被广泛采用的BSP、BVH、树八叉树等空间索引,而是完全按照空间的层次嵌套关系来建立的,体现的是空间层次的内外关系,而这种关系是通过遮挡关系来决定的。如果从某建筑物外部看,就是类似于用一把刀,先把建筑物外墙切下来,作为静态显示的图元,这部分图元不需要任何跟随视点的动态预处理,直接通过渲染器进入显卡渲染管线,这样不仅可以节省中间流程,快速绘制最重要的图元,同时也保证了渲染视觉效果的“保真”度。同时这个过程要足够快,当场景在发生变化时,例如可见性、位置、显示状态发生变化的时候,能够得到快速更新,不影响用户体验。同时,其处理过程将在后台子线程进行,从而不会阻塞用户的交互操作。
除建筑场景外,一些有近似特征的渲染场景,例如场景图元数量庞大,同时存在内外层次遮挡关系的场景,如大型船舶、大型基础设施(如隧道)等,通过OOSI对整个场景进行计算,提取出第一批视觉权重较高的图元,例如船舶的外壳图元以及隧道的外壁图元等用于第一批显示以提升整个场景在视觉上的绘制效率。
下面将详细介绍该步骤里面的详细算法:
2.2.1、均匀划分场景成为N×N×N的三维网格单元
在此引出“轴对齐包围盒”AABB(axis-aligned bounding box)的概念,其计算方式是遍历图元的所有顶点数据(Xi,Yi,Zi),分别取顶点数据为最小值(Xmin,Ymin,Zmin)以及最大值(Xmax,Ymax,Zmax)的顶点,从而构成其AABB的最小角点和最大角点的坐标。那么这个步骤,实际上就是遍历场景所有图元,求取场景的AABB。然后对该AABB的长方体空间进行X、Y、Z三个维度均匀细分,每个维度默认的粒度为N。最终会得到一个粒度为N×N×N的场景三维网格单元三维阵列。以3DGridCell(XIndex,YIndex,ZIndex)代表阵列中的某个具体的三维网格单元,XIndex,YIndex,ZIndex分别指代三维网格单元的在X轴,Y轴,Z轴上的序号索引(0~(N-1),排序依据是数字越小其在对应轴向的三维网格的中心点的坐标值分量越小。由于是均匀划分,所以所有三维网格单元大小均相同,可以不难得出3DGridCell的大小为:
3DGridCell.Size=(AABB.Size.X/N,AABB.Size.Y/N,AABB.Size.Z/N)
而3DGridCell的中心点3DGridCell.Center=
(XIndex*3dGridCell.Size.X+3dGridCell.Size.X/2,
YIndex*3dGrid Cell.Size.Y+3dGrid Cell.Size.Y/2,
ZIndex*3dGrid Cell.Size.Z+3dGrid Cell.Size.Z/2)。
2.2.2、场景图元按空间范围填入三维网格单元(3DGridCell)
经过均匀的场景划分之后,我们需要对每一个三维网格进行相交判定,看看有哪些场景图元与之相交,那么这部分图元就会作为该三维网格能够索引到的内容。相交的判定可以采用场景图元的三角形数据或者场景图元自身的AABB,如果追求准确度,那么使用前者,而如果追求速度,那么用后者。具体计算过程中算法的取舍需要看模型的规模、复杂度以及业务的要求而定。在求交运算中,可能会出现同一个场景图元被多个三维网格单元(3DGridCell)求交命中的情况,这个时候以第一个求交命中的三维网格单元(3DGridCell)为准。
2.2.3、三维网格单元间6/10/26向遮挡判定层次
遮挡计算是计算层次的主要手段,本发明采用一种简化的指定遮挡计算方法,即从指定的三维网格单元(3DGridCell)出发,向前、后、左、右、上、下(6向);或者向前、后、左、右、上、下、前左、前右、后左、后右(共10向);或者进一步的,向前、后、左、右、上、下、前左、前右、后左、后右、前上,前下,后上,后下,左上,左下,右上,右下,前左下,前左上,前右下,前右上,后左下,后左上,后右下,后右上(共26向),延伸查找各方向的三维网格单元,判定是否存在被填充场景图元,如果被填充了场景图元,则该方向的遮挡关系就成立;如果所有方向(6/10/26向)都存在遮挡,则该图元为相较于其他图元为内部图元。进一步,可以依据该网格的被遮挡次数来判定其嵌套深度。
2.2.4、生成层次嵌套网格索引(OOSI)
在步骤2.2.3的基础上,可以很容易得到层次嵌套索引,针对每一个三维网格单元(3DGridCell),我们都可以在计算之后确定其内外关系和嵌套深度。
层次嵌套网格索引(OOSI)嵌套深度计算方法为:去掉嵌套深度为0的三维网格单元,再通过步骤2.2.3的判断方法,得到的三维网格单元(3DGridCell)就是嵌套深度为1的三维网格单元(3DGridCell),依次类推,直到没有剩余的三维网格单元(3DGridCell)为止。
2.2.5、外层网格单元图元提取
将嵌套深度为0的(没有别任何其他填充图元的三维网格单元所完全遮挡)的三维网格单元(3DGridCell),作为外部三维网格单元(3DGridCell),后续从其中筛选第一批绘制的图元。
2.2.6、按空间占比进行排序
如果我们把上述将场景按照内、外关系划分作为“第一次排序”的话,那么该步骤就是依据图元的AABB的大小来进行的第二次排序,即以AABB作为图元空间占比的衡量依据。其计算方式是遍历图元所有顶点数据(Xi,Yi,Zi),分别取其最小的(Xmin,Ymin,Zmin)以及最大值(Xmax,Ymax,Zmax),从而构成其AABB的最小角点和最大角点的坐标。那么我们计算的AABB的最大点与最小点之间的平方距离之和,作为判定AABB大小的依据,也即判定图元空间占比的依据:
AABB,size_sqr_length=(Xmax-Xmin)2+(Ymax-Ymin)2+(Zmax-Zmin)2
2.2.7、构造第一批渲染数据
对外层网格的图元提取渲染数据,并按照渲染引擎管线的数据格式进行组织并准备提交给底层渲染管线驱动进行绘制。
2.2.8、静态批次合并(可选)
该步骤视具体场景特点和效率要求,可以进一步融合现有引擎的一些渲染优化技术,即静态批次合并技术(与步骤1.2相同)。如果采用该优化机制,那么可以进一步加速第一批图元的绘制效率。
2.2.9、效果烘焙(可选)
与步骤2.2.8类似,但更多偏向于效果的预处理,该步骤也在现有的引擎的优化技术里有所体现:如步骤1.3。具体的做法就是将一些阴影等光照效果,提前渲染到图元表面的纹理上,从而在后续真正渲染的时候,无需进行额外的效果计算,可以大大提高效率。
本实施例的步骤2.2.8以及步骤2.2.9,与现有技术的步骤1.2和步骤1.3的处理过程大致相同,但是不同的是执行策略,本发明的执行策略是在后台进行,以防止阻塞前台渲染线程,从而造成卡顿。
2.3、初始化渲染场景数据
该步骤为完整开始渲染一个场景的真正起始点,会初始化很多场景相关状态和数据的信息,例如计时器等,并且该步骤与步骤2.2并行开始。
2.4、传入视点、视口信息
确定场景观察成像的相机位置,以及最终投影到屏幕上的设备视口大小。与现有技术的步骤1.5相同,为现有渲染引擎的固定步骤。
2.5、读取第一批渲染数据
接收由步骤2.2发送过来的第一批渲染数据。该步骤与现有渲染引擎有很大差别,可以看到,经过后台的一系列针对OOSI的生成和后续处理,已经准备好了绘制大型场景的第一批图元的渲染数据,因此在真正的绘制流程开始的时候,我们能将所分配的时间片,全部用于图元的渲染而减少不必要的额外开销。
2.6、第一批渲染数据视锥剔除
理论上,针对第一批渲染数据,将其额外预处理的时间开销降到最低是该发明的基本要求,但当视点离整个场景很近的时候,针对第一批即将送到渲染管线的渲染数据进行最快速的视锥剔除(与现有技术的步骤1.9以及步骤2.12相同),这样虽然增加了第一批绘制的时间开销,但是可以在视点靠近场景时极大的降低第一批绘制图元的个数,从而达成效率优化。
2.7、绘制第一批渲染数据
将经过视锥剔除的第一批渲染数据,直接交给显卡管线进行绘制。
以下从步骤2.8到步骤2.18,除步骤2.9需要遍历OOSI而非常规空间索引之外,其与现有技术的常规渲染流程(1.6-1.16)基本相同。
2.8、遍历空间索引
步骤2.8的空间索引是指常规的空间索引(八叉树等),触发场景主要是室外场景,即当视点处于建筑物外部的时候,有两种情况需要执行该步骤:由于生成OOSI的操作是在子线程中计算,很有可能在渲染时尚未计算完毕,如果尚未计算完毕(那么会导致在步骤2.5读取失败),此时在该步骤需要执行一般渲染系统的渲染流程,从遍历空间索引开始渲染场景。
具体来说两种情况:情况1:OOSI生成完毕并成功提取出第一批图元,那么需要先遍历第一批图元并显示;之后仍然按照常规渲染流程显示余下的图元,具体的方法是遍历空间索引并剔除掉OOSI已经生成的第一批图元从而生成后续批次的渲染数据。情况2:处于场景发生变更,需要重新生成OOSI,但是后台线程生成OOSI未完成的短暂的阶段(一般在1s以内,极限不会超过5s)之内,如果用户操作模型导致重绘,仍然按照常规渲染流程遍历空间索引,生成所有批次渲染数据。无须剔除第一批图元(尚未生成)。情况1为正常的OOSI渲染状态,情况2为OOSI更新中的一个短暂的临时状态,该临时状态需要用已有的常规渲染流程来填充。情况2在在室内场景中仍然是适用的,室内场景中的具体情况见步骤2.9。
2.9、遍历OOSI构造所有批次渲染数据
步骤2.9的触发场景为进入室内场景,当OOSI生成完毕并当视点进入建筑物内部的时候,之前由OOSI提取出来静态准备好的第一批绘制图元失效(所在三维网格单元嵌套为0的最外层图元),此时就需要重新遍历OOSI来动态构造所有批次渲染数据,其构造的算法为:(1)对内部的三维网格单元(3DGridCell)进行视锥剔除,(2)对剔除后剩下的三维网格单元(3DGridCell)进行快速动态排序,其排序的依据具体算法是:
3DGridCell.Priotiry=(3DGridCell.Center–Viewpoint.Position).dot(Viewpoint.Direction)
也就是按照三维网格单元与视点的距离远近进行排序,那么靠近视点的三维网格单元(3DGridCell)中的图元将获得较高的渲染优先级。以上(1)(2)为依据动态生成所有批次渲染数据。
与室外的情况不同,由于在室内的第一批渲染数据也需要动态生成,那么将采用优先级统计的方法,经常进入第一批次的图元会被静态化处理,常驻第一批渲染数据集合。从而达到和步骤2.2.7类似的效果。
室内场景还有一种情况,即OOSI尚未生成完毕,这种情况下,就会如步骤2.8的情况2一样,在步骤2.8执行常规渲染流程,代由遍历常规空间索引(如八叉树等)来短暂填充空窗期过渡。
2.10、加载场景图元渲染数据
场景图元的渲染数据,如果不在内存而存在于磁盘上,由于视觉权重最大的一部分图元已经通过步骤2.5开始进行显示,这部分图元可以放在磁盘上,即使加载速度较慢,也可以最大程度的保证全场景渲染的视觉效果。与之相比的是,现有技术的渲染流程1.7虽然也可以从磁盘加载渲染数据,由于缺乏该种机制,会明显会影响渲染交互过程中的视觉效果。
这里从两个方面来详细解释一下采用OOSI之后对渲染数据加载方面的帮助:
(1)视点处于建筑物之外,OOSI已经生成,那么通过OOSI构造的第一批渲染数据将会常驻内存,而后续批次的数据将会存放在磁盘上以节省内存。那么在交互渲染的过程中,由于视觉权重比较高的第一批数据始终不需要从磁盘加载就能显示,使得场景整体渲染的视觉损失较少,场景渲染整体感增强。虽然后续批次的渲染数据加载缓慢,但是已经不会对场景整体视觉效果构成明显影响甚至从视觉上很难察觉。
(2)视点处于建筑物之内,OOSI已生成,但是很明显第一批静态准备好的最外层渲染数据已经失效,通过动态计算得到的第一批渲染数据(经过视点和OOSI权重计算排序得到的所有批次的渲染数据的第一批)将如同情况(1)中的第一批一样使其数据常驻内存。虽然该种情况第一批数据是动态生成并发生变化,但由于得到的第一批数据总是视觉权重最大的一批,经过反复变化的第一批数据中最经常成为第一批数据的图元将会获得最大的优先级,使其静态化并使其常驻内存,也会使需要从磁盘加载的后续批次的渲染数据的动作比正常遍历常规空间索引进行渲染数据加载的动作对视觉效果的影响要小,从而在视觉上最大优化渲染效率。
2.11、遮挡剔除(可选)
遮挡剔除与现有技术的一般渲染流程的遮挡机制可以做相同处理,视情况可用可不用,因为OOSI已经粗略体现了场景图元之间的遮挡关系。如果需要进一步精确的判断,可以采取如步骤1.8一样的操作,精确的计算在某一视点下图元之间的相互遮挡关系,剔除掉被遮挡而不可见的场景图元。
2.12、视锥剔除
与现有技术的常规渲染流程相同,如步骤1.9所描述,相机观察角度范围之外的场景图元,将被剔除掉,不进入后续的渲染流程。
2.13、计算、选择LOD(可选)
针对一些复杂构造,三角网格数量非常巨大的图元,需要依据视点远近来进行择取其不同层次的细节数据。
2.14、动态预处理后续批次渲染数据
该步骤基本与步骤1.11相同,主要完成了场景图元渲染数据的排序工作,所不同的是不需要动态的预处理第一批渲染数据,因为早已经提前绘制完毕。
2.15、绘制后续批次(后续帧,可选)
当场景中图元数比较少的时候,第一个批次就可以绘制完所有图元,否则需要继续绘制后续批次的图元。
2.16、结束当前完整帧渲染
与步骤1.14相同,当前场景全部绘制结束,将一些绘制有关的变量重置,并为绘制下一个完整帧做准备。
2.17、场景变更
与步骤1.17相同,触发场景的重绘操作,即从头绘制整个场景。这里粗略列出了三种由于场景本身数据变化导致的重绘需求:1、整体:场景整体数据发生了变化:增、删、改等;2、可见性:场景图元的可见性发生了变化;3、渲染状态:颜色、贴图等。其中针对第1种“整体”的变化,为比较彻底的变更,因此对场景的基础结构有重大影响,需要更新场景及空间索引(步骤2.1),同时,从2.1步骤并行执行2.2的完整步骤来更新OOSI;而针对第2种“可见性”的变化,虽然没有增删改动作,但可见性的变化,与增删有着类似的效果,因此也都需要回到2.1步骤,重新生成空间索引和OOSI。比较不同的是第3种“渲染状态”的变化,由于OOSI的生成主要是依据场景图元的空间拓扑关系而非显示外观,因此该步骤不会触发整个空间索引和OOSI的重算,而只是在构建第一批渲染数据的时候,才需要重新执行该操作。
2.18、视点变更
一般是用户通过和渲染窗口交互,去转动、平移、缩放视口所导致的变化,这种情况下,空间索引和OOSI由于和视点弱相关,不需要重新执行2.1和2.2,直接从步骤2.3重新绘制整个场景即可。这个过程与1.16到1.4的过程是类似的。
对于以上实施例进行总结可知:本发明通过静态预处理第一批渲染数据,大大节省了动态预处理的开销,从而在实时渲染的时候,获得更快的渲染速度,同时通过视觉权重(步骤2.2.4以及步骤2.2.5)的计算,渲染效果和模型整体性更加优秀,尤其针对规模庞大的模型进行整体渲染的时候效果尤其明显。
案例:测试场景规模:280万图元,按照常规渲染流程,执行从1.4到1.11的绘制前准备步骤,按照最快的做法,去掉中间的可选步骤,即按序执行1.4->1.5->1.6->1.9->1.11,整体花费时间接近150ms,按照6FPS(6帧每秒,一般为CAD/CAM软件的最低帧率要求),那么留给第一批次(首帧)1.12的渲染的整体时间将为1/6–150ms=16.6ms,可以看到,对于渲染第一批数据来说,渲染准备时间是渲染时间接近10倍,直接导致第一批渲染能力严重下降,结果就是在模型交互的时候(视点变化:平移、旋转、缩放),模型整体显示残缺。
而在本发明的渲染系统流程中,由于提前在后台线程生成了与视点无关的第一批渲染数据,那么执行从2.3->2.4->2.5->2.6,由于不需要进行很复杂的遍历空间索引和动态预处理渲染数据的操作(这两个步骤都随场景图元个数的增加而显著增长),时间将大大节省,在20ms以内,那么留给第一批次渲染数据的渲染时间,就为1/6–20ms=146.6ms,在视点变化的交互过程中,“第一眼”的渲染能力提升10倍以上,再者,由于进行了视觉权重的预计算,在旋转、平移、缩放的过程中模型显示的整体感显著增强,不会有明显的残缺现象出现。
本发明提供一种大规模建筑场景渲染加速系统,该系统包括:
渲染准备单元,在准备过程中一方面在主线程中进行场景渲染前的渲染准备;另一方面与主线程同步地在子线程中进行静态预处理,目的在于得到第一批渲染数据,预处理时把场景中视觉权重较高的图元筛选出来,作为第一批渲染数据;
场景渲染单元,当未读取到第一批渲染数据时,直接进行场景渲染;当读取到第一批渲染数据时,首先对该第一批渲染数据涉及的场景图元进行渲染,然后对该第一批渲染数据之外的场景图元进行渲染。
可选地,通过该大规模建筑场景渲染加速系统可执行上述方法的各种变化方案。
本发明还提供了一种大规模建筑场景渲染加速装置,该装置包括存储器,用于存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现上述任一种方法。
本发明还提供了一种存储介质,用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机执行上述任一项方法。
在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。
下面为本公开系统实施例,本公开装置实施例可用于执行本公开方法实施例实现的步骤,为了便于说明,仅示出了与本公开实施例相关的部分,具体技术细节未揭示的,请参照本公开方法实施例。
本公开实施例中的装置可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (34)

1.一种大规模建筑场景渲染加速方法,其特征在于,该方法包括以下步骤:
S1、渲染准备,包括以下两个方面的准备工作:
S1.1 在主线程中进行场景渲染前的渲染准备;
S1.2 与主线程同步地在子线程中进行静态预处理,目的在于得到第一批渲染数据,预处理时把场景中视觉权重较高的图元筛选出来,作为第一批渲染数据;
S2、在主线程中执行场景渲染,包括以下两种情况:
S2.1 当未读取到第一批渲染数据时,直接进行场景渲染;
S2.2 当读取到第一批渲染数据时,首先对该第一批渲染数据涉及的场景图元进行渲染,然后对该第一批渲染数据之外的场景图元进行渲染。
2.根据权利要求1所述的大规模建筑场景渲染加速方法,其特征在于:在所述步骤S1.1中,渲染准备包括:
S1.1.1 构造场景及空间索引;
S1.1.2 初始化渲染场景数据;
S1.1.3 传入视点、视口信息。
3.根据权利要求1所述的大规模建筑场景渲染加速方法,其特征在于:在所述步骤S1.2中,将所述视觉权重较高的图元通过层次嵌套网格索引OOSI筛选出来,该层次嵌套网格索引(OOSI)按照空间的层次嵌套关系建立,通过该层次嵌套网格索引(OOSI)提取外层的图元,并在其中筛选出空间占比超过一定阈值的场景图元作为第一批渲染数据。
4.根据权利要求3所述的大规模建筑场景渲染加速方法,其特征在于:所述空间的层次嵌套关系由遮挡关系来决定。
5.根据权利要求3所述的大规模建筑场景渲染加速方法,其特征在于:所述阈值可调整。
6.根据权利要求3所述的大规模建筑场景渲染加速方法,其特征在于:构建所述层次嵌套网格索引(OOSI)包括以下步骤:
S1.2.1 均匀划分场景成为N×N×N的三维网格单元;
S1.2.2 场景图元按空间范围填入三维网格单元;
S1.2.3 三维网格单元间通过遮挡关系判定层次;
S1.2.4 生成层次嵌套网格索引OOSI。
7.根据权利要求6所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S1.2.1中,遍历场景中所有图元,求取场景的最小值顶点以及最大值顶点构成场景的轴对齐包围盒,在该轴对齐包围盒的长方体空间进行X、Y、Z三个维度均匀细分,每个维度的粒度为N。
8.根据权利要求6所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S1.2.2中,对每一个三维网格进行相交判定,与之相交的场景图元作为该三维网格能够索引到的内容。
9.根据权利要求8所述的大规模建筑场景渲染加速方法,其特征在于:相交判定采用场景图元的三角形数据或者场景图元自身的轴对齐包围盒,如果追求准确度,使用前者;如果追求速度,使用后者。
10.根据权利要求6所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S1.2.3中,三维网格单元间沿6向、10向或者26向通过遮挡关系判定层次。
11.根据权利要求6所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S1.2.4中,基于三维网格单元的内外关系和嵌套深度,生成层次嵌套网格索引OOSI。
12.根据权利要求3所述的大规模建筑场景渲染加速方法,其特征在于:依据外层图元的轴对齐包围盒的大小、即图元空间占比来进行排序后,再进行筛选。
13.根据权利要求3所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S1.2中获得第一批渲染数据之后,根据需要进行静态批次合并和/或效果烘焙。
14.根据权利要求1所述的大规模建筑场景渲染加速方法,其特征在于:在所述步骤S2.1中,直接进行场景渲染包括以下步骤:
S2.1.1 遍历空间索引;
S2.1.2 视锥剔除;
S2.1.3 动态预处理后续批次渲染数据;
S2.1.4 结束当前完整帧渲染。
15.根据权利要求14所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S2.1.1和步骤S2.1.2之间根据需要加载场景图元渲染数据和/或遮挡剔除。
16.根据权利要求15所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S2.1.2和步骤S2.1.3之间根据需要计算、选择LOD。
17.根据权利要求16所述的大规模建筑场景渲染加速方法,其特征在于:在步骤S2.1.3和步骤S2.1.4之间根据需要绘制后续批次。
18.根据权利要求1所述的大规模建筑场景渲染加速方法,其特征在于:在所述步骤S2.2中,当视点由室外进入室内时,重新遍历层次嵌套网格索引OOSI来动态构造所有批次渲染数据并进行渲染,其中构造的算法为:(1)对内部的三维网格单元进行视锥剔除,(2)对剔除后剩下的三维网格单元进行快速动态排序,按照三维网格单元与视点的距离远近进行排序,靠近视点的三维网格单元中的图元将获得较高的渲染优先级。
19.根据权利要求1-18中任一项所述的大规模建筑场景渲染加速方法,其特征在于:当场景未变更仅视点变更时,跳至步骤S1.1,从渲染准备的初始化渲染场景数据开始执行方法。
20.根据权利要求1-18中任一项所述的大规模建筑场景渲染加速方法,其特征在于:当场景的整体数据或可见性发生变化,则重新执行本方法。
21.根据权利要求1-18中任一项所述的大规模建筑场景渲染加速方法,其特征在于:当场景的渲染状态发生变化,则重新构造第一批渲染数据。
22.一种大规模建筑场景渲染加速系统,其特征在于,该系统包括:
渲染准备单元,在准备过程中一方面在主线程中进行场景渲染前的渲染准备;另一方面与主线程同步地在子线程中进行静态预处理,目的在于得到第一批渲染数据,预处理时把场景中视觉权重较高的图元筛选出来,作为第一批渲染数据;
场景渲染单元,当未读取到第一批渲染数据时,直接进行场景渲染;当读取到第一批渲染数据时,首先对该第一批渲染数据涉及的场景图元进行渲染,然后对该第一批渲染数据之外的场景图元进行渲染。
23.根据权利要求22所述的大规模建筑场景渲染加速系统,其特征在于:所述渲染准备单元包括主线程渲染准备模块和子线程静态预处理模块。
24.根据权利要求23所述的大规模建筑场景渲染加速系统,其特征在于:所述主线程渲染准备模块需要完成的工作依次包括:构造场景及空间索引、初始化渲染场景数据和传入视点、视口信息。
25.根据权利要求23所述的大规模建筑场景渲染加速系统,其特征在于:所述子线程静态预处理模块,将所述视觉权重较高的图元通过层次嵌套网格索引(OOSI)筛选出来,该层次嵌套网格索引(OOSI)按照空间的层次嵌套关系建立,通过该层次嵌套网格索引(OOSI)提取外层的图元,并在其中筛选出空间占比超过一定阈值的场景图元作为第一批渲染数据。
26.根据权利要求25所述的大规模建筑场景渲染加速系统,其特征在于:所述空间的层次嵌套关系由遮挡关系来决定。
27.根据权利要求25所述的大规模建筑场景渲染加速系统,其特征在于:所述阈值可调整。
28.根据权利要求25所述的大规模建筑场景渲染加速系统,其特征在于:所述子线程静态预处理模块通过下述步骤构建所述层次嵌套网格索引(OOSI):均匀划分场景成为N×N×N的三维网格单元;场景图元按空间范围填入三维网格单元;三维网格单元间通过遮挡关系判定层次;生成层次嵌套网格索引OOSI。
29.根据权利要求28所述的大规模建筑场景渲染加速系统,其特征在于:场景图元按空间范围填入三维网格单元时,对每一个三维网格进行相交判定,与之相交的场景图元作为该三维网格能够索引到的内容。
30.根据权利要求29所述的大规模建筑场景渲染加速系统,其特征在于:相交判定采用场景图元的三角形数据或者场景图元自身的轴对齐包围盒,如果追求准确度,使用前者;如果追求速度,使用后者。
31.根据权利要求22所述的大规模建筑场景渲染加速系统,其特征在于:所述场景渲染单元直接进行场景渲染包括以下步骤:遍历空间索引;视锥剔除;动态预处理后续批次渲染数据;结束当前完整帧渲染。
32.根据权利要求22所述的大规模建筑场景渲染加速系统,其特征在于:所述场景渲染单元,在绘制完第一批渲染数据时,若视点由室外进入室内时,所述场景渲染单元重新遍历层次嵌套网格索引OOSI来动态构造所有批次渲染数据并进行渲染,其中构造的算法为:(1)对内部的三维网格单元进行视锥剔除,(2)对剔除后剩下的三维网格单元进行快速动态排序,按照三维网格单元与视点的距离远近进行排序,靠近视点的三维网格单元中的图元将获得较高的渲染优先级。
33.一种大规模建筑场景渲染加速装置,其特征在于:该装置包括存储器,用于存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现根据权利要求1-21中任意一项所述的方法。
34.一种存储介质,其特征在于:用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机执行权利要求1-21中任意一项所述的方法。
CN201910710424.XA 2019-08-02 2019-08-02 大规模建筑场景渲染加速方法、系统、装置和存储介质 Active CN110443893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910710424.XA CN110443893B (zh) 2019-08-02 2019-08-02 大规模建筑场景渲染加速方法、系统、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910710424.XA CN110443893B (zh) 2019-08-02 2019-08-02 大规模建筑场景渲染加速方法、系统、装置和存储介质

Publications (2)

Publication Number Publication Date
CN110443893A true CN110443893A (zh) 2019-11-12
CN110443893B CN110443893B (zh) 2023-04-25

Family

ID=68432877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910710424.XA Active CN110443893B (zh) 2019-08-02 2019-08-02 大规模建筑场景渲染加速方法、系统、装置和存储介质

Country Status (1)

Country Link
CN (1) CN110443893B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110969568A (zh) * 2019-11-29 2020-04-07 广联达科技股份有限公司 Bim模型双面显示加速渲染方法、系统、产品和存储介质
CN111080766A (zh) * 2019-12-30 2020-04-28 中科星图股份有限公司 一种基于WebGL的GPU加速海量目标高效渲染方法
CN111210521A (zh) * 2020-01-06 2020-05-29 江南造船(集团)有限责任公司 面向vr的船舶巨数据模型轻量化方法、系统、终端以及介质
CN111369656A (zh) * 2020-03-04 2020-07-03 杭州群核信息技术有限公司 一种基于WebGL可编辑大场景渐进式实时渲染方法
CN111388996A (zh) * 2020-04-10 2020-07-10 网易(杭州)网络有限公司 三维虚拟对象显示方法、装置、系统以及存储介质和设备
CN111415401A (zh) * 2020-03-25 2020-07-14 上海城建信息科技有限公司 基于WebGL的大规模场景渲染方法
CN111832105A (zh) * 2020-06-24 2020-10-27 万翼科技有限公司 模型融合方法及相关装置
CN111880918A (zh) * 2020-07-28 2020-11-03 南京市城市与交通规划设计研究院股份有限公司 路网前端渲染方法、装置及电子设备
CN111932668A (zh) * 2020-07-29 2020-11-13 武汉中地先进技术研究院有限公司 一种城市景观模型三维可视化方法、系统、介质和电子设备
CN111950057A (zh) * 2020-08-06 2020-11-17 万翼科技有限公司 一种建筑信息模型bim的加载方法及装置
CN111986323A (zh) * 2020-08-24 2020-11-24 上海兆芯集成电路有限公司 模型简化方法
CN112257134A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 模型管理方法、装置及电子设备
CN112257135A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN113822961A (zh) * 2021-09-22 2021-12-21 广州博冠信息科技有限公司 对3d模型进行2d渲染的方法、装置、设备及介质
CN113901062A (zh) * 2021-12-07 2022-01-07 浙江高信技术股份有限公司 一种基于bim和gis的预加载系统
WO2023066122A1 (zh) * 2021-10-22 2023-04-27 华为技术有限公司 一种三维模型数据的处理方法、生成方法及相关装置
CN116912395A (zh) * 2023-09-14 2023-10-20 武汉蜂鸟龙腾软件有限公司 基于OpenGL的图形混合渲染方法、装置及存储介质
CN116977556A (zh) * 2023-07-18 2023-10-31 广东国地规划科技股份有限公司 一种cim系统的渲染方法、装置及存储介质
CN114419256B (zh) * 2022-01-24 2024-01-23 正元地理信息集团股份有限公司 基于多级抽壳算法的城市级bim数据轻量化方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281654A (zh) * 2008-05-20 2008-10-08 上海大学 一种基于八叉树的大规模复杂三维场景处理方法
CN103942306A (zh) * 2014-04-18 2014-07-23 重庆市勘测院 三维城市模型自适应调度方法
CN107481311A (zh) * 2017-08-24 2017-12-15 中煤航测遥感集团有限公司 三维城市模型渲染方法及装置
CN108520557A (zh) * 2018-04-10 2018-09-11 中国人民解放军战略支援部队信息工程大学 一种图形图像融合的海量建筑绘制方法
WO2019088865A1 (ru) * 2017-11-01 2019-05-09 Вебгирз А Гэ Способ и система удаления невидимых поверхностей трёхмерной сцены

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281654A (zh) * 2008-05-20 2008-10-08 上海大学 一种基于八叉树的大规模复杂三维场景处理方法
CN103942306A (zh) * 2014-04-18 2014-07-23 重庆市勘测院 三维城市模型自适应调度方法
CN107481311A (zh) * 2017-08-24 2017-12-15 中煤航测遥感集团有限公司 三维城市模型渲染方法及装置
WO2019088865A1 (ru) * 2017-11-01 2019-05-09 Вебгирз А Гэ Способ и система удаления невидимых поверхностей трёхмерной сцены
CN108520557A (zh) * 2018-04-10 2018-09-11 中国人民解放军战略支援部队信息工程大学 一种图形图像融合的海量建筑绘制方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
利广杰: "基于OSG的大规模建筑模型渲染系统设计与实现", 《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑》 *

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110969568A (zh) * 2019-11-29 2020-04-07 广联达科技股份有限公司 Bim模型双面显示加速渲染方法、系统、产品和存储介质
CN111080766A (zh) * 2019-12-30 2020-04-28 中科星图股份有限公司 一种基于WebGL的GPU加速海量目标高效渲染方法
CN111080766B (zh) * 2019-12-30 2023-09-01 中科星图股份有限公司 一种基于WebGL的GPU加速海量目标高效渲染方法
CN111210521A (zh) * 2020-01-06 2020-05-29 江南造船(集团)有限责任公司 面向vr的船舶巨数据模型轻量化方法、系统、终端以及介质
CN111210521B (zh) * 2020-01-06 2022-09-16 江南造船(集团)有限责任公司 面向vr的船舶巨数据模型轻量化方法、系统、终端以及介质
CN111369656A (zh) * 2020-03-04 2020-07-03 杭州群核信息技术有限公司 一种基于WebGL可编辑大场景渐进式实时渲染方法
CN111369656B (zh) * 2020-03-04 2021-08-27 杭州群核信息技术有限公司 一种基于WebGL可编辑大场景渐进式实时渲染方法
CN111415401A (zh) * 2020-03-25 2020-07-14 上海城建信息科技有限公司 基于WebGL的大规模场景渲染方法
CN111415401B (zh) * 2020-03-25 2023-05-30 上海城建信息科技有限公司 基于WebGL的大规模场景渲染方法
CN111388996A (zh) * 2020-04-10 2020-07-10 网易(杭州)网络有限公司 三维虚拟对象显示方法、装置、系统以及存储介质和设备
CN111832105A (zh) * 2020-06-24 2020-10-27 万翼科技有限公司 模型融合方法及相关装置
CN111880918A (zh) * 2020-07-28 2020-11-03 南京市城市与交通规划设计研究院股份有限公司 路网前端渲染方法、装置及电子设备
CN111932668A (zh) * 2020-07-29 2020-11-13 武汉中地先进技术研究院有限公司 一种城市景观模型三维可视化方法、系统、介质和电子设备
CN111950057A (zh) * 2020-08-06 2020-11-17 万翼科技有限公司 一种建筑信息模型bim的加载方法及装置
CN111986323A (zh) * 2020-08-24 2020-11-24 上海兆芯集成电路有限公司 模型简化方法
CN111986323B (zh) * 2020-08-24 2024-03-22 格兰菲智能科技有限公司 模型简化方法
CN112257135B (zh) * 2020-10-30 2023-09-05 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN112257134B (zh) * 2020-10-30 2022-09-16 久瓴(上海)智能科技有限公司 模型管理方法、装置及电子设备
CN112257135A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN112257134A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 模型管理方法、装置及电子设备
CN113822961A (zh) * 2021-09-22 2021-12-21 广州博冠信息科技有限公司 对3d模型进行2d渲染的方法、装置、设备及介质
CN113822961B (zh) * 2021-09-22 2024-04-26 广州博冠信息科技有限公司 对3d模型进行2d渲染的方法、装置、设备及介质
WO2023066122A1 (zh) * 2021-10-22 2023-04-27 华为技术有限公司 一种三维模型数据的处理方法、生成方法及相关装置
CN113901062A (zh) * 2021-12-07 2022-01-07 浙江高信技术股份有限公司 一种基于bim和gis的预加载系统
CN114419256B (zh) * 2022-01-24 2024-01-23 正元地理信息集团股份有限公司 基于多级抽壳算法的城市级bim数据轻量化方法及系统
CN116977556A (zh) * 2023-07-18 2023-10-31 广东国地规划科技股份有限公司 一种cim系统的渲染方法、装置及存储介质
CN116977556B (zh) * 2023-07-18 2024-02-06 广东国地规划科技股份有限公司 一种cim系统的渲染方法、装置及存储介质
CN116912395A (zh) * 2023-09-14 2023-10-20 武汉蜂鸟龙腾软件有限公司 基于OpenGL的图形混合渲染方法、装置及存储介质
CN116912395B (zh) * 2023-09-14 2024-01-12 武汉蜂鸟龙腾软件有限公司 基于OpenGL的图形混合渲染方法、装置及存储介质

Also Published As

Publication number Publication date
CN110443893B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
CN110443893A (zh) 大规模建筑场景渲染加速方法、系统、装置和存储介质
CN112270756B (zh) 一种应用于bim模型文件的数据渲染方法
CN108520557B (zh) 一种图形图像融合的海量建筑绘制方法
CN109509138A (zh) 针对射线跟踪系统的减小的加速结构
US8004518B2 (en) Combined spatial index for static and dynamic objects within a three-dimensional scene
US7940265B2 (en) Multiple spacial indexes for dynamic scene management in graphics rendering
CN101241603B (zh) 一种电磁场强度实时可视化方法
CN109145366A (zh) 基于Web3D的建筑信息模型轻量级可视化方法
US8284195B2 (en) Cooperative utilization of spatial indices between application and rendering hardware
US20080231628A1 (en) Utilizing Ray Tracing for Enhanced Artificial Intelligence Path-Finding
CN101826215B (zh) 实时二级光线跟踪的并行渲染方法
US8339398B2 (en) Integrated acceleration data structure for physics and ray tracing workload
WO2008037599A1 (en) Pixel color determination in a ray tracing image processing system
WO2008012199A2 (en) Ray tracing algorithm with recording of the index traversal history
EP2054858A2 (en) Methods and systems for partitioning a spatial index
EP4213102A1 (en) Rendering method and apparatus, and device
US20080192051A1 (en) Expanding Empty Nodes in an Acceleration Data Structure
CN109979002A (zh) 基于WebGL三维可视化的场景构建系统及方法
US11756255B2 (en) Method for constructing and traversing accelerating structures
CN109377552A (zh) 图像遮挡计算方法、装置、计算设备及存储介质
CN101840565B (zh) 一种基于gpu的八叉树并行构建方法
JP2023548028A (ja) 境界ボリューム階層生成
CN112906125A (zh) 铁路固定设施bim模型轻量化加载方法
EP4085428A2 (en) Real-time, software-based hybrid ray tracing for battery-powered computing devices
Figueiredo et al. An efficient collision detection algorithm for point cloud models

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