CN101419721B - 一种基于视域剔除的复杂室内场景快速绘制方法 - Google Patents
一种基于视域剔除的复杂室内场景快速绘制方法 Download PDFInfo
- Publication number
- CN101419721B CN101419721B CN200810201983XA CN200810201983A CN101419721B CN 101419721 B CN101419721 B CN 101419721B CN 200810201983X A CN200810201983X A CN 200810201983XA CN 200810201983 A CN200810201983 A CN 200810201983A CN 101419721 B CN101419721 B CN 101419721B
- Authority
- CN
- China
- Prior art keywords
- view
- zone
- portal
- view frustums
- new
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明涉及一种基于视域剔除的复杂室内场景快速绘制方法。本方法首先把整个场景划分成n个区域,用portal入口把相邻的区域连接起来,再确定视点所在的位置,将该区域模块所包含的所有几何模块与视锥体进行相交检测,完成视域剔除工作,最后计算可视范围内的所有Portal,计算新视锥体,并进行新一轮的视域剔除,如此递归下去,得到最终需要渲染的节点。实验结果表明,采用本发明的室内场景管理方法,在室内遮挡率高时,能够大大提高渲染效率。
Description
技术领域
本发明涉及图形处理和虚拟现实,主要是一种场景图形引擎快速绘制方法,特别是一种基于室内场景图结构的图形引擎快速绘制方法。
背景技术
由于计算机绘制的场景日益复杂,为了达到实时的效果,对计算机软硬件的要求只会越来越高,它要求采用先进的绘制算法来对复杂的场景进行规划和管理,对场景管理算法进行优化,加快绘制场景的速度,通常图形质量与计算量是成正比的,计算量越大,图形的质量也就越好,然而考虑到虚拟现实中实时性的要求,所以不得不在这两者中均衡考虑,在满足视觉效果的同时,尽量加快绘制的速度。
目前用来加速场景绘制的主要技术有:层次细节算法,基于图像的绘制算法等快速绘制算法,层次细节算法的核心思想是在不影响画面视觉效果的前题条件下,根据视点距离,逐步简化场景表面细节来提高绘制的效率。但层次细节LOD转换时的图像跳跃比较大,是一种离散的,在离散/连续方面非常欠缺。基于图像绘制算法利用二维图像信息来表达和绘制虚拟场景,利用这种方法会有较好的真实感和实时性,因为它来自真实的照片,具有真实感强的图像,但是它的缺点是缺少交互性。
对于一个虚拟现实系统来说,不仅有室外场景,还有相当一部分的室内场景,室内场景通常都有一个特性——场景内部模型相当复杂,并且从观测者的视点看去只能看到他所处环境内的物体,除非在这个环境中有其它Portal入口可以通往其它环境。由于室内场景的复杂,运用LOD肯定是不现实的,因为都是近距离的模型,而基于图像的绘制的算法也不能从根本上解决加速绘制的要求,一般针对这样的室内环境都是运用创建树结构,但树结构是相当低效的,因为通过Portal入口观测者只能看到相邻环境中非常小的一部分物体。换句话说,树结构不能很好的处理既有高复杂度又有高阻光度的场景。这个问题常常被称为“无效渲染”,会花费大量的时间去渲染最终被一堵墙挡住的相邻房间中的物体。
发明内容
本发明的目的在于提供一种基于视域剔除的复杂室内场景快速绘制方法,能大为提高在绘制室内场景时的绘制速度,保证虚拟现实的实时性要求。
为达到上述目的,本发明的构思是:克服现有图形引擎快速绘制技术,尤其是在绘制室内场景时的速度不够,提供了一种基于视域剔除的复杂室内场景快速绘制方法,它考虑了室内场景与室外场景的区别与特点,大大提高了在绘制室内场景时的绘制速度,保证了虚拟现实的实时性要求。
根据上述发明构思,本发明采用的技术方案是:
一种基于视域剔除的复杂室内场景快速绘制方法,其特征在于首先将场景划分成区域,用Portal入口把相邻的区域连接起来,再确定视点所在的位置,将前面连接起来的相邻区域包含的所有几何区域与视锥体进行相交检测,然后进行视域剔除工作,实现复杂室内场景的快速绘制;具体操作步骤如下:
(1)采用‘凸’多边形作为划分区域的最小单位;并且得到的每一个区域都是一个闭合的‘凸’多边形;
(2)用Portal入口把相邻的区域连接起来;
(3)确定视点所在的位置,将摄像机的空间坐标与所有区域依次进行相交判断,由此确定视点处于哪个区域中;
(4)将该区域所包含的所有几何与视锥体进行相交检测,完成视域剔除工作;
(5)计算可视范围内的所有Portal入口,按Portal入口大小和视点方向重新计算得到新的视锥体,并在该Portal入口相连的区域内利用新视锥体进行新一轮的视域剔除;如此递归下去,直到所有的可视区域都完成了视域剔除,如此获得的所有几何节点形成的序列就是需要进行渲染的节点。
所述的步骤(1)中的采用‘凸’多边形作为划分区域中的最小单位中的‘凸’表示在区域内的任意两点间画一条线段,这条线段不会穿透该区域的任何一个多边形,而闭合表示从区域内发出一条光线,如果要让光线射到区域外,则此光线
必须要穿透某个区域的多边形。
所述的步骤(2)中的Portal入口表示为两个区域相连接部分的位置和大小。
所述的步骤(5)中的按Portal入口大小和视点方向重新计算新的视锥体,这里会出现两种情况,Portal入口完全/部分处于原视锥体范围内部,如果完全处于原视锥体内部,那么只要计算由Portal入口产生的视锥体为新的视锥体,如果部分处于原视锥体内部,那么在内部以Portal产生的视锥体为准,而超出原视锥体的部分还是按照原视锥体的边界进行计算所得。
本发明有益的效果是:采用Portal入口技术对复杂的室内场景进行管理,基于视域剔除,使得在模型复杂的场景内无需渲染场景中的每个物体,这样大大提高了渲染了效率,很好的设计了Portal入口,区域的数据结构体,而避免了用树结构产生的“无效渲染”提高内存利用率。
附图说明
图1本发明的方法流程图。
图2Portal入口模型结构图。
图3视锥体计算示意图1。
图4视锥体计算示意图2。
图5测试效果图。
具体实施方式
本发明的一个优选实施例结合附图说明如下:本复杂室内场景快速绘制方法,共分五步:
第一步:将整个场景划分成n个区域
如图1所示,在Portal入口技术的概念中整个场景被划分n个区域(cell),每个区域都是一个闭合的凸多边形,这里“凸”表示在区域内的任意两点间画一条线段,这条线段不会穿透该区域的任何一个多边形,而闭合表示从区域内发出一条光线,如果要让光线射到区域外,则此光线必须要穿透某个区域的多边形.因此可以形象地把一个区域看成是一个房间,区域的多边形构成了房间的墙壁、天花板和地板等(如果要描述一个“凸”的房间,需要将这个房间划分成若干个“凸”区域,然后用Portal入口将它们连接起来)。两个邻近的区域通过Portal入口连接。
第二步:区域结构设计
区域的划分是由美工前期确定的,划分有两个主要条件,一是区域内部不能有墙或者其他遮挡体形成较大范围的遮挡,二是该区域的形状必须是凸多面体,而所有的几何节点将以其所在位置和包围盒信息对号入座至相应的区域,两个区域将通过窗或门结构进行连通,每个房间就是一个区域,而连接房间与房间之间的门(窗)就是Portal入口。在视域剔除前我们就假定所有当前区域(视点处于的那个区域)中的几何节点都是可见的,而相邻的区域中只用那些处于门窗可视范围内的几何节点才可见,不相邻的区域中的所有几何节点均不可见。
本发明中,设计的区域数据结构如下:
Class Cell
{
wstring mName;
TPortalList mPortals;
TNodeList mNodes;
TOBBList mBoxes;
bool mIsVisualize;
}
其中mName是该区域的名字,也就是引擎中的标识号,mPortals记录了属于这个区域的所有Portal入口结构,mNodes记录了位于区域中的所有几何节点的信息,mBoxes记录的是组成这个区域的所有OBB的序列,由于区域其实就是一个个房间,而房间不一定是方方正正的,所以有些情况下需要用多个OBB才能准确的描述一个区域,mBoxes就是用来记录这些OBB的。最后一个布尔变量mIsVisualize是用来记录该区域是否可见的。
第三步:Portal入口结构设计
Portal入口模型结构如图2所示,这里将Portal入口抽象成一个平面的长方形,所以在数据结构中只要记录其中心坐标,两个轴役及轴向长度即可,通过这些参数我们可以计算出Portal入口四个顶点的坐标值:
Portal入口是从属于区域的,也就是说每个Portal入口有且仅有一个区域作为其父节点。由于一般来说墙面是有厚度的,所以对于一个连接通道而言在墙的正反面需要两个Portal,而这两个Portal入口模块就各自需要一个指向对方的指针来说明其连接情况,当然还要考虑到有些时候门窗关闭的情况,我们需要有一个变量来说明Portal入口的状态。主要数据结构如下所示:
Class Portal
{
TVector3 mCenter;
TVector3 mAxes[2];
TVector2 mExtents;
TCell*mCell;
TPortal*mAdjacent;
bool mOpen;
}
其中mCenter记录空间位置的坐标,mAxes记录两个方向向量,利用一个二维向量mExtents记录两个方向向量上的长度值,mCell记录所属区域的指针,mAdjacent记录的是相连的Portal入口的指针,最后一个布尔向量记录该Portal入口的闭合情况。
第四步:新视锥体生成算法
新视锥体的生成分为两种情况:
第一种情况是整个Portal入口完全处于原视锥体范围内部,在这种情况下,新的视锥体其实就是将原视锥体变窄后的模样如图3所示:图中O点代表的是视点(假设视点处于原点上),粗线条代表的是墙,墙上的缺口就是Portal入口,可以理解为门或者窗,ABCD表示的是原视锥体,但是对O点来说墙后的物体是不可见的,所以连接OF和OP分别交AD于E点和H点,作FG平行于BC,这样一个新的视锥体FGHE就生成了,FG为新视锥体的近平面,HE为新视锥体的远平面,三个方向轴不变。对于O点来说,处于墙另一侧的物体只有处在这个新的视锥体内才是可见的。新视锥体将通过如下步骤求得:
1.首先计算Portal入口的四个顶点到原视锥体近平面BC的最小距离,也就是求出各点指向B点的向量,然后求出这些向量与BC平面法向量的内积,取出其中的最小值,由图上可知最后求得的点是F点,最短距离为IK线段所代表的长度,具体公式如下(以F点为例):
2.由于视点未改变所以新视锥体的三个方向向量以及中心点坐标与原视锥体完全相同,而新的近平面距离(mNear)就等于原近平面距离加上上一步求得的最小值(IK),远平面(mFar)距离值保持不变和原值相同。
3.新视锥体的左值(mLeft)即图中FI线段的长度,可以将OF向量内积mAxes0的负向量求得。
4.新视锥体的右值(mRight,图中IG线段长度的)的求解相对复杂,首先需要求得F点和G点在mAxes2向量方向上的差值,然后求得OG在mAxes0向量方向上的投影,利用相互比例进行求解,具体公式如下:
5.由于图是俯视图所以竖直向量无法在图中表示,但利用同样的方法可以求得上值(mTop)和下值(mBottom)。
第二种情况是Portal入口部分处于原视锥体范围内部,在这种情况下,新的视锥体的形状相当于原视锥体的侧边半部中的一小部分,如图4是一个新视锥体计算的示意图:此图和第一种情况唯一的不同是墙面向左平移了一段距离,部分Portal入口位于视锥体外侧,像这样的情况我们首先连接OP交AD于E,在P点做BC的平行线交AB于G,四边形AGPE就是新的视锥体,且视点和三个方向向量和原视锥体保持一致。新视锥体通过如下方法可以计算获得:
1.首先计算处在视锥体内的Portal入口顶点到原视锥体近平面BC的距离,由图上可知需要求解距离的点是P点,最短距离为IP线段所代表的长度,具体公式如下(以P点为例):
2.这一步和第一种情况相同,新的近平面距离(mNear)就等于原近平面距离加上上一步求得的最小值(IP),远平面(mFar)距离值保持不变和原值相同。
3.新视锥体的右值(mRight)即图中KI线段长度的负值,可以将OP向量内积mAxes0向量求得(求得直接为负值)。
4.由图上可知新视锥体与原视锥体共用一条左边,所以他们的左值是相同的,即新视锥体mLeft就等于原视锥体mLeft。
5.由于图是俯视图所以竖直向量无法在图中表示,但利用同样的方法可以求得上值(mTop)和下值(mBottom)。
第五步:根据生成的新视锥体渲染顶点
利用计算的视锥体进行视域剔除,直到所有的可视区域都完成了视域剔除,如此获得的所有几何节点形成的序列就是需要进行渲染的节点。这时渲染的顶点比处理前顶点的个数要少了很多很多,因为有很多顶点都由于Portal入口产生的视锥体进行了视域剔除而被排除在渲染之外,从而大大提高渲染效率。
实验结果
本实验在vc.net的编译环境下使用Direct3D渲染某室内场景,按照上述方法场景管理。测试平台如下表所示:
表5.1测试平台
基于上述硬件平台我们对于一个有110个节点、14个区域、20个Portal入口的场景进行测试。测试结果对比示于表5.2。
表5.2不同情况下渲染速度的比较
从测试数据中不难发现,遮挡率越高越能体现Portal入口算法的优越性,如表第三行所示,在高遮挡的情况下,渲染帧数竟然有2.5倍的提升,使渲染效率有了质的飞跃。测试效果图如图5所示。
实验结果表明,本发明的一种基于视域剔除的复杂室内场景快速绘制方法,克服现有图形引擎绘制技术、尤其是在绘制室内场景时的速度不够的缺点,提供了一种基于视域剔除的复杂室内场景快速绘制方法,大大提高了在绘制室内场景时的绘制速度,保证了虚拟现实的实时性要求。
Claims (4)
1.一种基于视域剔除的复杂室内场景快速绘制方法,其特征在于首先将场景划分成若干区域,用Portal入口把相邻的区域连接起来,得到若干个新区域,再确定视点所在的位置,所述的每个新区域将区域包含的所有几何模块与视锥体进行相交检测,然后进行视域剔除工作,实现复杂室内场景的快速绘制;具体操作步骤如下:
a.采用‘凸’多边形作为划分区域的最小单位;并且得到的每一个区域都是一个闭合的‘凸’多边形;
b.用portal入口把相邻的区域连接起来,得到若干个新区域;
c.确定视点所在的位置,将摄像机的空间坐标与所有区域依次进行相交判断,由此确定视点处于哪个区域中;
d.将该区域包含的所有几何模块与视锥体进行相交检测,完成视域剔除工作;
e.计算可视范围内的所有Portal入口,按Portal入口大小和视点方向重新计算新的视锥体,并在该Portal入口相连的区域内利用重新计算的新的视锥体进行新一轮的视域剔除;
f.如此递归下去,直到所有的可视区域都完成了视域剔除,如此获得的所有几何节点形成的序列就是需要进行渲染的节点。
2.根据权利要求1所述的基于视域剔除的复杂室内场景快速绘制方法,其特征在于:所述的步骤a中的采用‘凸’多边形作为划分区域中的最小单位中的‘凸’表示在区域内的任意两点间画一条线段,这条线段不会穿透该区域的任何一个多边形,而闭合表示从区域内发出一条光线,如果要让光线射到区域外,则此光线必须要穿透某个区域的多边形。
3.根据权利要求1所述的基于视域剔除的复杂室内场景快速绘制方法,其特征在于:所述的步骤b中的portal入口表示为两个区域相连接部分的位置和大小。
4.根据权利要求1所述的基于视域剔除的复杂室内场景快速绘制方法,其特征在于所述的步骤e中的按Portal入口大小和视点方向重新计算新的视锥体,这里会出现两种情况:
e-1..Portal入口完全处于原视锥体范围内部:只要计算由Portal入口产生的视锥体为新的视锥体;
e-2..如果部分处于原视锥体内部;那么在内部以Portal入口产生的视锥体,即新视锥体为准,而超出原视锥体的部分还是按照原视锥体的边界进行计算所得。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810201983XA CN101419721B (zh) | 2008-10-30 | 2008-10-30 | 一种基于视域剔除的复杂室内场景快速绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810201983XA CN101419721B (zh) | 2008-10-30 | 2008-10-30 | 一种基于视域剔除的复杂室内场景快速绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101419721A CN101419721A (zh) | 2009-04-29 |
CN101419721B true CN101419721B (zh) | 2012-02-15 |
Family
ID=40630499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810201983XA Expired - Fee Related CN101419721B (zh) | 2008-10-30 | 2008-10-30 | 一种基于视域剔除的复杂室内场景快速绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101419721B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107093203A (zh) * | 2010-06-30 | 2017-08-25 | 巴里·林恩·詹金斯 | 图形信息的基于导航的预取发送或接收的控制方法和系统 |
CN102663805B (zh) * | 2012-04-18 | 2014-05-28 | 东华大学 | 一种基于投影的视锥体裁剪的方法 |
CN103473800B (zh) * | 2013-07-05 | 2016-09-21 | 南京地心坐标信息科技有限公司 | 一种三维模型综合动态调度方法 |
CN103914868B (zh) * | 2013-12-20 | 2017-02-22 | 柳州腾龙煤电科技股份有限公司 | 虚拟现实下的海量模型数据动态调度与实时异步加载方法 |
CN105913472A (zh) * | 2015-08-28 | 2016-08-31 | 深圳市彬讯科技有限公司 | 一种室内场景的渲染方法及其装置 |
CN106683156B (zh) * | 2015-11-04 | 2020-03-17 | 南京地心坐标信息科技有限公司 | 一种基于中心坐标距离加权的动态调度方法 |
CN105869205B (zh) * | 2016-04-20 | 2020-05-19 | 曹屹 | 一种实时渲染方法和移动终端 |
CN106355636B (zh) * | 2016-08-30 | 2019-05-14 | 北京像素软件科技股份有限公司 | 虚拟现实三维水体渲染中水体网格的处理方法 |
CN106600703A (zh) * | 2016-11-22 | 2017-04-26 | 宇龙计算机通信科技(深圳)有限公司 | 基于虚拟现实设备的图像处理方法及装置 |
CN108257103B (zh) * | 2018-01-25 | 2020-08-25 | 网易(杭州)网络有限公司 | 游戏场景的遮挡剔除方法、装置、处理器及终端 |
CN112102653B (zh) * | 2020-08-27 | 2022-07-19 | 浙江水利水电学院 | 工程应用型人才人文教育信息交互装置及其应用方法 |
CN113808247B (zh) * | 2021-11-19 | 2022-02-08 | 武汉方拓数字科技有限公司 | 一种大体量三维场景三维模型渲染优化方法和系统 |
CN115294257B (zh) * | 2022-10-10 | 2023-02-17 | 中交第四航务工程勘察设计院有限公司 | 基于几何分离的大体量模型的多线程异步加载方法及装置 |
-
2008
- 2008-10-30 CN CN200810201983XA patent/CN101419721B/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
封春生等.基于视域剔除和图像缓存技术的复杂场景快速绘制方法.《系统仿真学报》.增刊,2006,第18卷(第1期),94-98. * |
王钧等.一种大范围复杂场景的快速绘制算法.《计算机工程与应用》.2003,(第16期),88-90. * |
石祥滨等.一种适合室内3D MMOG场景的快速绘制方法.《小型微型计算机系统》.2008,第29卷(第8期),1548-1552. * |
高宇等.大规模外存场景的交互绘制.《计算机辅助设计与图形学学报》.2007,第19卷(第6期),792-797. * |
Also Published As
Publication number | Publication date |
---|---|
CN101419721A (zh) | 2009-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101419721B (zh) | 一种基于视域剔除的复杂室内场景快速绘制方法 | |
US9972137B2 (en) | Systems and methods for augmented reality preparation, processing, and application | |
JP6109111B2 (ja) | 単一の2次元画像からシーンを再構成する方法および単一の2次元画像からシーンの再構成を提供するデータ処理システム | |
Teller | Visibility computations in densely occluded polyhedral environments | |
CN103077552B (zh) | 一种基于多视点视频的三维展示方法 | |
CN101071515A (zh) | 一种在服务器端实现三维游戏碰撞检测的方法 | |
CN104658033A (zh) | 多光源下的全局光照绘制方法及装置 | |
van Aanholt et al. | Declarative procedural generation of architecture with semantic architectural profiles | |
JP2017117481A (ja) | カメラワーク生成方法、カメラワーク生成装置及びカメラワーク生成プログラム | |
Colburn et al. | Image-based remodeling | |
Savioja et al. | Utilizing virtual environments in construction projects | |
Döllner et al. | Smartbuildings-a concept for ad-hoc creation and refinement of 3d building models | |
Alawadhi et al. | Deep Learning from Parametrically Generated Virtual Buildings for Real-World Object Recognition | |
CN111179395B (zh) | 一种提高家装云端渲染效率的方法 | |
Kashlev | Efficient 3D building model generation from 2D floor plans | |
CN107274467A (zh) | 一种基于Unity3D的模型动画联动方法 | |
Peng et al. | Effective virtual reality based building navigation using dynamic loading and path optimization | |
Johansson et al. | From BIM to VR | |
EP3776488B1 (en) | Using a low-detail representation of surfaces to influence a high-detail representation of the surfaces | |
WO2023119715A1 (ja) | 映像生成方法及び画像生成プログラム | |
Grau et al. | Knowledge based modelling of natural scenes | |
Amiri et al. | Automated Camera Placement using Hybrid Particle Swarm Optimization | |
Rao et al. | The Implement of Interior 3D Navigation based on VRML | |
Alawadhi et al. | Deep Learning Through Parametrically Generated Virtual Building Information Models for Real-World Object Recognition | |
Calderon et al. | Architectural Cinematographer: An Initial Approach to Experiential Design in Virtual Worlds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120215 Termination date: 20141030 |
|
EXPY | Termination of patent right or utility model |