CN105488844A - 一种三维场景中海量模型实时阴影的显示方法 - Google Patents

一种三维场景中海量模型实时阴影的显示方法 Download PDF

Info

Publication number
CN105488844A
CN105488844A CN201510814953.6A CN201510814953A CN105488844A CN 105488844 A CN105488844 A CN 105488844A CN 201510814953 A CN201510814953 A CN 201510814953A CN 105488844 A CN105488844 A CN 105488844A
Authority
CN
China
Prior art keywords
model
sunrise
veclight
hour
mat
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
CN201510814953.6A
Other languages
English (en)
Other versions
CN105488844B (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.)
CETC 28 Research Institute
Original Assignee
CETC 28 Research Institute
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 CETC 28 Research Institute filed Critical CETC 28 Research Institute
Priority to CN201510814953.6A priority Critical patent/CN105488844B/zh
Publication of CN105488844A publication Critical patent/CN105488844A/zh
Application granted granted Critical
Publication of CN105488844B publication Critical patent/CN105488844B/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/50Lighting effects
    • G06T15/60Shadow generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/12Shadow map, environment map

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Photometry And Measurement Of Optical Pulse Characteristics (AREA)

Abstract

本发明提供了一种三维场景中海量模型的实时阴影处理方法。该方法通过充分解析三维模型数据结构,应用阴影形成理论以及底层渲染引擎的工作原理,对阴影的构建算法进行了改进,大幅提升了海量模型实时阴影的处理效率。本发明解决了在三维场景中,海量模型的实时阴影的生成、更新、绘制等过程效率较低的问题,同时可根据位置点的经纬度实时计算日出日落的时间,在三维场景中较真实地展现了海量模型的阴影。

Description

一种三维场景中海量模型实时阴影的显示方法
技术领域
本发明属于计算机三维态势显示处理领域,具体地说是一种三维场景中海量模型实时阴影的显示方法。
背景技术
实时阴影仿真技术是增加虚拟场景真实感的关键技术,在三维游戏、虚拟训练系统、三维地理信息系统等方面有着广泛的应用。其中,阴影是比较常用的一种仿真技术,近年来该技术提出的算法很多,整体性能在向好的方向发展,同时仿真的效果也越来越真实,但在海量模型的实时阴影处理方面均存在一些效率上的瓶颈。本发明通过充分解析三维模型数据结构,应用阴影形成理论以及底层渲染引擎的工作原理,对阴影的构建算法进行了改进,大幅提升了海量模型实时阴影的处理效率。
通常情况下,在三维场景中,传统的阴影计算算法都是直接遍历每个面,再记录并统计每个面的邻接边,后续再在邻接边中筛选出轮廓边,计算量大、效率低,如图4所示。另外当前通用的阴影处理都是按照统一的全球日出日落时间,从而导致在不同季节、不同地区的阴影显示与实际情况不相符,影响了阴影的真实性。
发明内容
本发明的目的在于提供一种三维场景中海量模型实时阴影的显示方法,该方法可以在三维场景中,根据模型的位置和时间,通过优化阴影的生成算法,提升阴影的生成效率,能快速地实现海量模型数据的实时阴影计算,能真实地表现模型的阴影效果。
本发明公开了一种三维场景中海量模型实时阴影的显示方法,包括:
步骤1,阴影创建;
步骤2,形成模型阴影体;
步骤3,构建阴影体;
步骤4,对阴影体进行渲染。
本发明步骤1阴影创建中,加载并解析模型,获取模型的网格节点,从网格节点中提取模型坐标空间的坐标信息(X、Y、Z)、点信息和面结构信息,计算每个面的法向量Normali,其中i表示面的索引序号,形成对应面结构信息,每个面最多有三个邻接面,若没有邻接面则法向量赋空,由此得到模型所处位置。
本发明步骤2形成模型阴影中,根据模型所处位置,计算太阳位置以及太阳光方向,将太阳位置坐标转换到模型坐标空间,对模型的每个面进行向光性计算,并进行共享边的计算,针对每个邻接边,构建阴影。
本发明步骤2包括:
步骤2.1,根据模型所在位置的经纬度信息Lng与Lat计算日出与日落时间,计算太阳位置以及太阳光方向,:
记当前时间为T,分别为年、月、日、时、分、秒,将T表示为:
T={Year,Month、Day、Hours、Minute、Second};
记当前时区为Tzone,Tzone由偏离率Bias与标准偏离率StandardBias组成,将Tzone表示为:
Tzone={Bias,StandardBias};
记日出时间为Tsunrise,日落时间为Tsunset,各由两个元素组成,分别为小时、分,将Tsunrise与Tsunset表示为:
Tsunrise={Hour,Minute},
Tsunrise.Hour=24.0*cos(Lat*PI/180)+Tzone.Bias/24.0+cos(Lat*PI/180)/360;
其中Tsunrise.Hour为日出时间中的小时项,PI为标准圆周率、Tzone.Bias为时区的偏离率;
日出时间中的分钟项Tsunrise.Minute=60.0*(Tsunrise.Hour/24);
Tsunset={Hour,Minute},
日落时间中的小时项Tsunset.Hour=24.0*cos(Lat*PI/180)+Tzone.Bias/24.0-cos(Lat*PI/180)/360;
日落时间中的分钟项Tsunset.Minute=60.0*(Tsunset.Hour/24);
若T的时、分均在日出与日落时间范围内,即Tsunset.Hour<T.Hours<Tsunrise.Hour,Tsunset.Hour<T.Minute<Tsunrise.Minute,则继续以下过程计算太阳位置:
记太阳位置Veclight={x,y,z},Veclight.x,Veclight.y,Veclight.z分别代表世界坐标下三个方向的分量,单位为米,则太阳光方向向量Dirlight的计算过程如下:
L=sqrt(Veclight.x*Veclight.x+Veclight.y*Veclight.y+Veclight.z*Veclight.z));
D i r l i g h t = { V e c l i g h t . x L , V e c l i g h t . y L , V e c l i g h t . z L } ;
L为中间参数,sqrt为开根号;
步骤2.2,将太阳位置坐标转换到目标模型坐标空间:
记太阳位置向量为Veclight,进行如下步骤:
计算放缩转换矩阵Matscale,用于保持物体的大小与实际比例一致:
Mat s c a l e = S c a l e 0 0 0 0 S c a l e 0 0 0 0 S c a l e 0 0 0 0 1 , Scale为模型比例;
计算偏移矩阵Mattrans,用于使模型放置在正确的位置:
Mat t r a n s = 1 0 0 0 0 1 0 0 0 0 1 0 V . x V . y V . z 1 ;
上式中V.x,V.y,V.z分别代表模型的空间坐标位置,单位为米;
根据模型的经经纬度计算旋转矩阵Matrotate,用于使模型保持正向:
Mat r o t a t e = 1 0 0 0 0 cos ( L a t ) sin ( L a t ) 0 0 - sin ( L a t ) cos ( L a t ) 0 0 0 0 1 * cos ( ln g ) sin ( ln g ) 0 0 - sin ( ln g ) sin ( ln g ) 0 0 0 0 1 0 0 0 0 1 ,
上式中lng、lat分别为模型的经纬度;
记目标模型矩阵为Matmodel,目标模型矩阵的逆矩阵为MatInversemodel
Matmodel=Matrotatel*Matscale*Mattrans
Matinversemodel=Matmodel
符号表示逆矩阵,;
进行赋值操作,将Veclight在Matinversemodel做转换,公式为;
Veclight=Veclight*MatInverseModel
步骤2.3,计算轮廓边:
遍历每个基本面即原始模型的三角面片,计算其法向量与太阳光方向夹角,判断其向光性,依次计算基本面的三条边E1、E2、E3所对应的邻接面的向光性,若邻接面的向光性与基本面的向光性不一致,则判定两者之间的公共边为轮廓边;若基本面的指定边没有邻接面,则直接判定该边为轮廓边;
计算出当前面的法向量之后,根据光源位置判断当前面是否是背光面,如果当前面面对光源时,则cost(α)<0,即当前面法向量与入射光线方向向量的点积小于0;所以只有法向量与与入射光线的点积大于0,即cost(α)>0时,表示该面背对光源,记面的向光性为FaceLight:
F a c e L i g h t ( j ) = T R U E c o s ( &alpha; ) < 0 ( &pi; 2 < &alpha; &le; &pi; ) F A L S E c o s ( &alpha; ) > 0 ( &alpha; > &pi; | | &alpha; &le; &pi; 2 ) ,
上式中,j表示面的索引序号当太阳光入射角与面向量之间的夹角大于90度且小于180度时,其为向光面,否则为背光面;
步骤2.4,获取共享边:
如果三角面片A的三个顶点序号为{V0,V1,V2},三角面片A的邻接面的顶点序号为{AdjV0、AdjV1、AdjV2},则邻接边AdjEdge的计算算法如下:
上述公式中,k表示公共边索引,记三角面A的三个顶点为{V0,V1,V2},其相邻的三角面B的顶点为{AdjV0、AdjV1、AdjV2},在三角面A与B不重合的情况下,则两个三角面片之间最多只有一个公共边;若A与B重合,则二者有三个公共边,此时只取三角面A做向光性分析,对三角面B不做处理;若三角面A与B相离,则二者没有公共边。
本发明步骤3针对每个邻接边,构建阴影:
记每条轮廓边的两个顶点为V1、V2,光照方向向量为Vlight,则V1、V2分别在地面上的投影点V3、V4计算过程如下:
V3=V1-Vlight
V4=V2-Vlight
本发明步骤4对阴影进行渲染:对形成的阴影进行渲染,再通过模板技术对阴影着色。
本发明与现有技术相比具有以下的优点:
1)对阴影体的形成算法进行了简化,将向光性计算与轮廓边计算过程进行统一,大幅提升了效率;
2)不再使用统一的全球日出日落时间,而是根据阴影的实际位置计算日出日落时间,从而提升了阴影的真实性;
3)对阴影的颜色、透明度可调,从而增强了阴影的显示效果。
附图说明
图1是本发明的邻接面数据结构示意图。
图2是本发明的面与法向量示意图。
图3是本发明的向光性与背光性示意图。
图4是传统阴影轮廓边的生成过程示意图。
图5是本发明的阴影轮廓边的生成过程示意图。
图6是本发明的最终阴影示意图。
图7为本发明流程图。
具体实施方式
本发明提供了一种三维场景中海量模型的实时阴影处理方法。该方法通过充分解析三维模型数据结构,应用阴影形成理论以及底层渲染引擎的工作原理,对阴影的构建算法进行了改进,大幅提升了海量模型实时阴影的处理效率。本发明解决了在三维场景中,海量模型的实时阴影的生成、更新、绘制等过程效率较低的问题,同时可根据位置点的经纬度实时计算日出日落的时间,在三维场景中较真实地展现了海量模型的阴影。本发明首先对阴影进行创建,加载并解析模型,获取模型的网格节点,从网格中提取坐标信息(X、Y、Z)、点信息和面结构信息,计算每个面的法向量(Normali),形成特有的面结构信息,根据模型所处位置计算日出日落时间,形成阴影的轮廓边;对形成的阴影进行渲染,并通过模板技术对阴影着色。
如图7所示,实现本发明的技术解决方案步骤如下:
步骤1、阴影创建过程;
首先加载并解析模型,获取模型的网格节点,从网格中提取坐标信息(X、Y、Z)、点信息和面结构信息,计算每个面的法向量(Normal),形成特有的面结构信息,每个面最多有三个邻接面,若没有邻接面则赋空
步骤2、阴影形成过程;
根据模型所处位置计算日出日落时间,如当前时间点该位置点不具备阴影形成能力,则不进行计算;否则,计算太阳位置以及太阳光方向,并将太阳位置坐标转换到模型坐标空间,遍历每个基本面,计算其法向量与太阳光方向夹角,判断其向光性,再依次计算其三条边E1、E2、E3所对应的邻接面的向光性,若邻接面的向光性与基本面的向光性不一致,则记录两者之间的公共边为轮廓边;若基本面的指定边没有邻接面,则直接记录该边为轮廓边。
步骤3、阴影渲染过程;
步骤4对阴影进行渲染:对形成的阴影进行渲染,再通过模板技术对阴影着色。
步骤1中的模型简化过程能在保证阴影正确性的基础上,提升处理的效率。
将面的向光性计算与轮廓边计算过程统一,提升了实时阴影的计算效率。
实施例
如图6所示,本实施例提供一种三维场景中海量模型实时阴影体的显示方法,其具体实施步骤如下:
步骤1、三维模型的创建过程和方法:加载模型,获取网格节点,并进行简化,从网格中提取坐标信息(X、Y、Z)、点信息和面结构信息,计算每个面的法向量(Normali)。
Facei={V0,V1,V2}
Normali=(V2-V1)×(V1-V0)
上述公式中各参数如图2所示,形成特有的面结构信息,每个面最多有三个邻接面,若没有邻接面则法向量赋空,具体的面结构信息,如图1所示。
步骤2、形成模型的阴影:以基于步骤1所获得的数据值为基准,根据模型所处位置,计算太阳位置以及太阳光方向,将太阳位置坐标转换到模型坐标空间,对模型的每个面进行向光性计算,其向光性和逆光性如图3所示,并进行共享边的计算,针对每个邻接边,构建阴影,具体算法如下:
2.1根据模型所在位置的经纬度信息Lng与Lat计算日出与日落时间,计算太阳位置以及太阳光方向,:
记当前时间为T,分别为年、月、日、时、分、秒,将T表示为:
T={Year,Month、Day、Hours、Minute、Second};
记当前时区为Tzone,Tzone由偏离率Bias与标准偏离率StandardBias组成,将Tzone表示为:
Tzone={Bias,StandardBias};
记日出时间为Tsunrise,日落时间为Tsunset,各由两个元素组成,分别为小时、分,将Tsunrise与Tsunset表示为:
Tsunrise={Hour,Minute},
日出时间中的小时项Tsunrise.Hour=24.0*cos(Lat*PI/180)+Tzone.Bias/24.0+cos(Lat*PI/180)/360;(PI为标准圆周率、Tzone.Bias为时区的偏离率)
日出时间中的分钟项Tsunrise.Minute=60.0*(Tsunrise.Hour/24);
Tsunset={Hour,Minute},
日落时间中的小时项Tsunset.Hour=24.0*cos(Lat*PI/180)+Tzone.Bias/24.0-cos(Lat*PI/180)/360;
日落时间中的分钟项Tsunset.Minute=60.0*(Tsunset.Hour/24);
若T的时、分均在日出与日落时间范围内,即Tsunset.Hour<T.Hours<Tsunrise.Hour,Tsunset.Hour<T.Minute<Tsunrise.Minute,则继续以下过程计算太阳位置:
记太阳位置Veclight={x,y,z},Veclight.x,Veclight.y,Veclight.z分别代表世界坐标下三个方向的分量,单位为米,则太阳光方向Dirlight的计算过程如下:
L=sqrt(Veclight.x*Veclight.x+Veclight.y*Veclight.y+Veclight.z*Veclight.z));
D i r l i g h t = { V e c l i g h t . x L , V e c l i g h t . y L , V e c l i g h t . z L } ;
2.2,将太阳位置坐标转换到目标模型坐标空间:
记太阳位置向量为Veclight,则有如下计算过程:
计算放缩转换矩阵Matscale,用于保持物体的大小与实际比例一致:
Mat s c a l e = S c a l e 0 0 0 0 S c a l e 0 0 0 0 S c a l e 0 0 0 0 1 , Scale为模型比例;
计算偏移矩阵Mattrans,用于使模型放置在正确的位置:
Mat t r a n s = 1 0 0 0 0 1 0 0 0 0 1 0 V . x V . y V . z 1 . ;
上式中V.x,V.y,V.z分别代表模型的空间位置,单位为米;
根据模型的经经纬度计算旋转矩阵Matrotate,用于使模型保持正向:
Mat r o t a t e = 1 0 0 0 0 c o s ( L a t ) s i n ( L a t ) 0 0 - s i n ( L a t ) c o s ( L a t ) 0 0 0 0 1 * c o s ( ln g ) s i n ( ln g ) 0 0 - s i n ( ln g ) s i n ( ln g ) 0 0 0 0 1 0 0 0 0 1 ,
上式中lng、lat分别为模型的经纬度;
记目标模型矩阵为Matmodel,目标模型矩阵的逆矩阵为MatInversemodel
Matmodel=Matrotatel*Matscale*Mattrans
Matinversemodel=Matmodel;(表示逆矩阵),
Veclight=Veclight*MatInverseModel;(即将Veclight在Matinversemodel做转换,为赋值操作)。,
2.3计算轮廓边:
遍历每个基本面,计算其法向量与太阳光方向夹角,判断其向光性,再依次计算其三条边E1、E2、E3所对应的邻接面的向光性,若邻接面的向光性与基本面的向光性不一致,则记录两者之间的公共边为轮廓边;若基本面的指定边没有邻接面,则直接记录该边为轮廓边;
2.4面的向光性计算法:
计算出当前面的法向量之后,就可以根据光源位置判断当前面是否是背光面。如图3所示,如果当前面面对光源时,则cost(α)<0,即当前面法向量与入射光线方向向量的点积小于0。所以只有法向量与与入射光线的点积大于0,即cost(α)>0时,才表示该面背对光源。记面的相关性为FaceLight(i):
F a c e L i g h t ( j ) = T R U E c o s ( &alpha; ) < 0 ( &pi; 2 < &alpha; &le; &pi; ) F A L S E c o s ( &alpha; ) > 0 ( &alpha; > &pi; | | &alpha; &le; &pi; 2 )
上式中,j表示面的索引序号,当太阳光入射角与面向量之间的夹角大于90度且小于180度时,其为向光面,否则为背光面。
2.5获取共享边
记当前面的顶点序号为V0、V1、V2、V3、V4、V5和V6,邻接面的顶点序号为AdjV0、AdjV1、AdjV2,参数如图5所示,则邻接边AdjEdge的计算算法如下:
上述公式中,k表示公共边索引,记三角面A的三个顶点为{V0,V1,V2},其相邻的三角面B的顶点为{AdjV0、AdjV1、AdjV2},在A与B不重合的情况下,则两个三角面片之间最多只有一个公共边;若A与B重合,则二者有三个公共边,在这种情况下,只需取A做向光性分析,对B不做处理;若A与B相离,则二者没有公共边。
3、针对每个邻接边,构建阴影体:
如图6所示(本实施例特性,为展示阴影形成过程,必须由灰度渐变的效果图表示),记每条轮廓边的两个顶点为V1、V2,光照方向向量为Vlight,则V1、V2分别在地面上的投影点V3、V4计算过程如下:
V3=V1-Vlight
V4=V2-Vlight
4、对阴影体进行渲染:
对形成的阴影进行渲染,再通过模板技术对阴影着色。
本发明提供了一种三维场景中海量模型实时阴影的显示方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (6)

1.一种三维场景中海量模型实时阴影的显示方法,其特征在于,包括:
步骤1,阴影创建;
步骤2,形成模型阴影体;
步骤3,构建阴影体;
步骤4,对阴影体进行渲染。
2.根据权利要求1所述的方法,其特征在于,步骤1阴影创建中,加载并解析模型,获取模型的网格节点,从网格节点中提取模型坐标空间的坐标信息(X、Y、Z)、点信息和面结构信息,计算每个面的法向量Normali,其中i表示面的索引序号,形成对应面结构信息,每个面最多有三个邻接面,若没有邻接面则法向量赋空,由此得到模型所处位置。
3.根据权利要求2所述的方法,其特征在于,步骤2形成模型阴影中,根据模型所处位置,计算太阳位置以及太阳光方向,将太阳位置坐标转换到模型坐标空间,对模型的每个面进行向光性计算,并进行共享边的计算,针对每个邻接边,构建阴影。
4.根据权利要求3所述的方法,其特征在于,步骤2包括:
步骤2.1,根据模型所在位置的经纬度信息Lng与Lat计算日出与日落时间,计算太阳位置以及太阳光方向,:
记当前时间为T,分别为年、月、日、时、分、秒,将T表示为:
T={Year,Month、Day、Hours、Minute、Second};
记当前时区为Tzone,Tzone由偏离率Bias与标准偏离率StandardBias组成,将Tzone表示为:
Tzone={Bias,StandardBias};
记日出时间为Tsunrise,日落时间为Tsunset,各由两个元素组成,分别为小时、分,将Tsunrise与Tsunset表示为:
Tsunrise={Hour,Minute},
Tsunrise.Hour=24.0*cos(Lat*PI/180)+Tzone.Bias/24.0+cos(Lat*PI/180)/360;
其中Tsunrise.Hour为日出时间中的小时项,PI为标准圆周率、Tzone.Bias为时区的偏离率;
日出时间中的分钟项Tsunrise.Minute=60.0*(Tsunrise.Hour/24);
Tsunset={Hour,Minute},
日落时间中的小时项Tsunset.Hour=24.0*cos(Lat*PI/180)+Tzone.Bias/24.0-cos(Lat*PI/180)/360;
日落时间中的分钟项Tsunset.Minute=60.0*(Tsunset.Hour/24);
若T的时、分均在日出与日落时间范围内,即Tsunset.Hour<T.Hours<Tsunrise.Hour,
Tsunset.Hour<T.Minute<Tsunrise.Minute,则继续以下过程计算太阳位置:
记太阳位置Veclight={x,y,z},Veclight.x,Veclight.y,Veclight.z分别代表世界坐标下三个方向的分量,单位为米,则太阳光方向向量Dirlight的计算过程如下:
L=sqrt(Veclight.x*Veclight.x+Veclight.y*Veclight.y+Veclight.z*Veclight.z));
L为中间参数,sqrt为开根号;
步骤2.2,将太阳位置坐标转换到目标模型坐标空间:
记太阳位置向量为Veclight,进行如下步骤:
计算放缩转换矩阵Matscale,用于保持物体的大小与实际比例一致:
Scale为模型比例;
计算偏移矩阵Mattrans,用于使模型放置在正确的位置:
上式中V.x,V.y,V.z分别代表模型的空间坐标位置,单位为米;
根据模型的经经纬度计算旋转矩阵Matrotate,用于使模型保持正向:
上式中lng、lat分别为模型的经纬度;
记目标模型矩阵为Matmodel,目标模型矩阵的逆矩阵为MatInversemodel
Matmodel=Matrotatel*Matscale*Mattrans
Matinversemodel=Matmodel
符号表示逆矩阵,;
进行赋值操作,将Veclight在Matinversemodel做转换,公式为;
Veclight=Veclight*MatInverseModel
步骤2.3,计算轮廓边:
遍历每个基本面即原始模型的三角面片,计算其法向量与太阳光方向夹角,判断其向光性,依次计算基本面的三条边E1、E2、E3所对应的邻接面的向光性,若邻接面的向光性与基本面的向光性不一致,则判定两者之间的公共边为轮廓边;若基本面的指定边没有邻接面,则直接判定该边为轮廓边;
计算出当前面的法向量之后,根据光源位置判断当前面是否是背光面,如果当前面面对光源时,则cost(α)<0,即当前面法向量与入射光线方向向量的点积小于0;所以只有法向量与与入射光线的点积大于0,即cost(α)>0时,表示该面背对光源,记面的向光性为FaceLight:
上式中,j表示面的索引序号当太阳光入射角与面向量之间的夹角大于90度且小于180度时,其为向光面,否则为背光面;
步骤2.4,获取共享边:
如果三角面片A的三个顶点序号为{V0,V1,V2},三角面片A的邻接面的顶点序号为{AdjV0、AdjV1、AdjV2},则邻接边AdjEdge的计算算法如下:
上述公式中,k表示公共边索引,记三角面A的三个顶点为{V0,V1,V2},其相邻的三角面B的顶点为{AdjV0、AdjV1、AdjV2},在三角面A与B不重合的情况下,则两个三角面片之间最多只有一个公共边;若A与B重合,则二者有三个公共边,此时只取三角面A做向光性分析,对三角面B不做处理;若三角面A与B相离,则二者没有公共边。
5.根据权利要求4所述的方法,其特征在于,步骤3针对每个邻接边,构建阴影:记每条轮廓边的两个顶点为V1、V2,光照方向向量为Vlight,则V1、V2分别在地面上的投影点V3、V4计算过程如下:
V3=V1-Vlight
V4=V2-Vlight
6.根据权利要求5所述的方法,其特征在于,步骤4对阴影进行渲染:对形成的阴影进行渲染,再通过模板技术对阴影着色。
CN201510814953.6A 2015-11-19 2015-11-19 一种三维场景中海量模型实时阴影的显示方法 Active CN105488844B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510814953.6A CN105488844B (zh) 2015-11-19 2015-11-19 一种三维场景中海量模型实时阴影的显示方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510814953.6A CN105488844B (zh) 2015-11-19 2015-11-19 一种三维场景中海量模型实时阴影的显示方法

Publications (2)

Publication Number Publication Date
CN105488844A true CN105488844A (zh) 2016-04-13
CN105488844B CN105488844B (zh) 2018-01-09

Family

ID=55675808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510814953.6A Active CN105488844B (zh) 2015-11-19 2015-11-19 一种三维场景中海量模型实时阴影的显示方法

Country Status (1)

Country Link
CN (1) CN105488844B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107705353A (zh) * 2017-11-06 2018-02-16 太平洋未来科技(深圳)有限公司 应用于增强现实的虚拟对象光影效果的渲染方法和装置
CN109712211A (zh) * 2018-12-21 2019-05-03 西安恒歌数码科技有限责任公司 基于osg的高效体阴影生成方法
CN112734899A (zh) * 2021-01-20 2021-04-30 清华大学 物体表面局部自遮挡阴影的建模方法和装置
CN113592999A (zh) * 2021-08-05 2021-11-02 广州益聚未来网络科技有限公司 一种虚拟发光体的渲染方法及相关设备
CN114022607A (zh) * 2021-11-19 2022-02-08 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及可读存储介质
CN116757000A (zh) * 2023-08-14 2023-09-15 山东捷瑞数字科技股份有限公司 基于三维引擎实时模拟太阳角度变化的方法、系统及设备

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
HOSHANG KOLIVAND 等: "Real-Time Projection Shadow with Respect to Sun’s Position in Virtual Environments", 《INTERNATIONAL JOURNAL OF COMPUTER SCIENCE ISSUES》 *
倪剑龙: "建筑日照分析与仿真系统的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
姚瑾: "三维建筑模型日照阴影提取算法的研究与实现", 《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑》 *
张颖: "基于三维城市模型的日照分析研究", 《中国优秀硕士学位论文全文数据库基础科学辑》 *
李文 等: "虚拟城市仿真平台日照分析方法的研究和实现", 《计算机技术与发展》 *
李黎: "基于三维GIS的建筑物日照分析研究", 《中国优秀硕士学位论文全文数据库基础科学辑》 *
郁健琼: "三维实时阴影快速生成方法的研究", 《电脑知识与技术》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107705353A (zh) * 2017-11-06 2018-02-16 太平洋未来科技(深圳)有限公司 应用于增强现实的虚拟对象光影效果的渲染方法和装置
CN107705353B (zh) * 2017-11-06 2020-02-11 太平洋未来科技(深圳)有限公司 应用于增强现实的虚拟对象光影效果的渲染方法和装置
CN109712211A (zh) * 2018-12-21 2019-05-03 西安恒歌数码科技有限责任公司 基于osg的高效体阴影生成方法
CN112734899A (zh) * 2021-01-20 2021-04-30 清华大学 物体表面局部自遮挡阴影的建模方法和装置
CN113592999A (zh) * 2021-08-05 2021-11-02 广州益聚未来网络科技有限公司 一种虚拟发光体的渲染方法及相关设备
CN114022607A (zh) * 2021-11-19 2022-02-08 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及可读存储介质
CN114022607B (zh) * 2021-11-19 2023-05-26 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及可读存储介质
CN116757000A (zh) * 2023-08-14 2023-09-15 山东捷瑞数字科技股份有限公司 基于三维引擎实时模拟太阳角度变化的方法、系统及设备
CN116757000B (zh) * 2023-08-14 2023-11-14 山东捷瑞数字科技股份有限公司 基于三维引擎实时模拟太阳角度变化的方法、系统及设备

Also Published As

Publication number Publication date
CN105488844B (zh) 2018-01-09

Similar Documents

Publication Publication Date Title
CN105488844A (zh) 一种三维场景中海量模型实时阴影的显示方法
CN104318617B (zh) 一种面向虚拟应急演练的三维地理场景仿真方法
CN101763657B (zh) 一种用于视频制作的三维地形的显示方法
CN107037881A (zh) Gis与bim增强现实在管廊、地铁施工的互动演示方法及系统
CN108052776A (zh) 基于bim和三维实景模型的洪水模型构建与动态展示方法
CN103077516B (zh) 一种石刻文字的数字化拓片方法
CN113436308B (zh) 一种三维环境空气质量动态渲染方法
Liang et al. Visualizing 3D atmospheric data with spherical volume texture on virtual globes
Li Global transport on a spherical multiple-cell grid
CN109872278A (zh) 基于u形网络和生成对抗网络的图像云层移除方法
CN107403459A (zh) 真实地形快速建模方法和滑坡可视化技术
CN110060329A (zh) 一种基于彩色深度视频流数据的移动端人体模型重建方法
CN111784831A (zh) 一种基于倾斜摄影的城区河道洪水三维淹没分析方法
CN111104702A (zh) 一种基于ue4的堤防工程可视化仿真的实现方法
CN116070687B (zh) 一种基于全局光线空间仿射变换的神经网络光场表示方法
CN104008567A (zh) 一种基于gpu的城市雾霾天气的可视化绘制方法
CN115471634A (zh) 一种城市绿植孪生的建模方法及装置
CN104463937A (zh) 基于不规则物体的动画生成方法及装置
CN110335275A (zh) 一种基于三变量双调和b样条的流体表面的时空向量化方法
Maravelakis et al. Automatic building identification and features extraction from aerial images: Application on the historic 1866 square of Chania Greece
CN105321205A (zh) 一种基于稀疏关键点的参数化人体模型重建方法
Qi Computer aided design simulation of 3D garden landscape based on virtual reality
CN106683165A (zh) 文化遗产的四维可视化方法
Dinkov Generation of 3D panoramic map for tourism management applications
CN117274465B (zh) 匹配真实地理水域环境的水体渲染方法、系统、介质和设备

Legal Events

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