一种基于模板阴影原理的通视分析渲染方法技术

技术编号:7759982 阅读:252 留言:0更新日期:2012-09-14 03:03
本发明专利技术公开了一种基于模板阴影原理的通视分析渲染方法,包括步骤:对要进行通视分析区域的模型沿视线方向建立封闭的第一多面体;对所述第一多面体使用算法渲染一次,将模板缓存中不为第一数字的值设置成第二数字;构建视线范围封闭的第二多面体;对所述第二多面体使用所述算法渲染2次,所得到的模板缓存的值包括第一数字、第二数字、第三数字和第四数字;渲染模板缓存值为第三数字的区域,置可见颜色,渲染模板缓存值为第四数字的区域,置不可见颜色。本发明专利技术利用模板阴影原理,来生成不可视区域,生成的区域棱角分明,不会失真,确保了分析结果的精度,从而对通视分析区域进行高精度渲染。

【技术实现步骤摘要】

本专利技术涉及。
技术介绍
一般通视分析分为两点通视分析和视域通视分析,传统的通视分析在定量分析的功能上做了很多工作,比如计算可视距离和不可视距离,计算可视范围和不可视范围的面积比等等。如今有了三维渲染功能,在三维场景直接渲染可视范围与不可视范围,可以大大增强对通视分析结果的感性认识,得到强烈的视觉效果。两种通视分析一、两点通视分析这种通视分析功能相对简单,只要判断起点与终点之间是否有遮挡物,即可判断两点是否通视。起点到终点的可视分析,将可视区域线置为绿色,不可视为红色。该方法功能单一,适用范围窄,只能表示两点的通视。二、视域通视分析这种通视分析的特点在于可以表示一个区域的可视与不可视区域,用在景区可视域分析,房地产视线遮挡分析等应用中居多。一般的视域通视分析的渲染渲染效果可能是一个扇面,这种方法只是在一个平面上表示的,无法表示出立体的效果
技术实现思路
本专利技术的目的是提供一种能够对通视分析区域进行高精度渲染的基于模板阴影原理的通视分析渲染方法。本专利技术提供了,包括步骤对要进行通视分析区域的模型沿视线方向建立封闭的第一多面体;对所述第一多面体使用算法渲染一次,将模板缓存中不为第一数字的值设置成第二数字;构建视线范围封闭的第二多面体;对所述第二多面体使用所述算法渲染2次,所得到的模板缓存的值包括第一数字、第二数字、第三数字和第四数字;渲染模板缓存值为第三数字的区域,置可见颜色,渲染模板缓存值为第四数字的区域,置不可见颜色。本专利技术的基于模板阴影原理的通视分析渲染方法,进一步包括如下步骤对所述要进行通视分析区域的模型构建轮廓边界;对所述轮廓边界沿视线方向建立第一多面体,其中,第一多面体沿着视线方向的长度包含所要分析的其它模型和地形。本专利技术的基于模板阴影原理的通视分析渲染方法,所构建的轮廓边界线均在视线范围内。本专利技术的基于模板阴影原理的通视分析渲染方法,所述第一多面体是沿视线方向的轮廓边界的投影与轮廓边界构成的封闭多面体。本专利技术的基于模板阴影原理的通视分析渲染方法,所述第二多面体是一个在视线范围内沿垂直地面方向生成的封闭的多面体。本专利技术的基于模板阴影原理的通视分析渲染方法,所述算法为Zfail算法。本专利技术的基于模板阴影原理的通视分析渲染方法,模板缓存值为第一数字和第二数字的区域为在视线范围外的区域,模板缓存值为第三数字的区域为在视线范围内且是可视范围内的区域,模板缓存值为第四数字的区域是在视线范围内且是不可视范围内的区域。本专利技术的技术效果在于,将视线范围内要进行通视分析区域的模型利用算法渲染几次,将视线范围外的区域、在视线范围内且是可视范围内的区域,以及在视线范围内且是不可视范围内的区域分开,对在视线范围内的不同区域进行不同的着色,从而达到对通视分析区域进行高精度渲染的效果。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。 下面通过附图和实施例,对本专利技术的技术方案做进ー步的详细描述。附图说明附图用来提供对本专利技术的进ー步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中图I为本专利技术的ー个具体实施例的示意图;图2为生成模型沿视线方向的多面体示意图。具体实施例方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。本专利技术提供了,包括步骤对要进行通视分析区域的模型沿视线方向建立封闭的第一多面体;对所述第一多面体使用算法渲染一次,将模板缓存中不为第一数字的值设置成第二数字;构建视线范围封闭的第二多面体;对所述第二多面体使用所述算法渲染2次,所得到的模板缓存的值包括第一数字、第二数字、第三数字和第四数字;渲染模板缓存值为第三数字的区域,置可见颜色,渲染模板缓存值为第四数字的区域,置不可见颜色。以下将结合说明书附图,详细描述本专利技术。作为本专利技术的ー个具体实施例,在Visual Studio 2008平台下,结合OGRE渲染引擎来开发实现的,其中开发语言为C++。在该实施例中,第一数字是O、第二数字是I、第三数字是2、第四数字是3。如图I所示,具体包括以下步骤I)对要进行通视分析区域的模型构建轮廓边界;将视线区域的模型搜索出来,搜索方法利用OGRE中的区域搜索方法。搜索出来的模型,调用buildEdgeList O方法建立轮廓边界。2)对步骤I)中得到的轮廓边界沿着视线方向建立封闭的多面体,且多面体沿着视线方向的长度必须足够长,包含所要分析的其它模型和地形;在这ー步中利用OGRE中已经提供的模板阴影的方法,建立阴影锥。具体方法为建立一个点光源It,光源的位置是在视点位置,调用getShadowVolumeRenderablelterator方法,该方法的定义为ShadowRenderableListIterator getShadowVolumeRenderablelterator、Snaaowlechmque shadowTechnique, const Light氺 light, HardwareIndexBufferSharedPtr* indexBuffer, bool extrudeVertices, Real extrusionDistance,unsigned long flags = 0 );其中的第一个參数shadowTechnique 必须为 SHADOWTYPE_STENCIL_MODULATIVE,保证其是在使用模板阴影的方法。參数light即为之前定义的It。參数extrusionDistance应该足够大已能包含和影响到其他模型。參数flags必须为SRF_INCLUDE_LIGHT_CAP | SRF_INCLUDE_DARK_CAP保证阴影锥是前后封闭的。3)对步骤2)中得到的封闭的多面体进行zfail方法渲染,将模板缓存中不为O的值置I ;对步骤2)中得到的ShadowRenderableListIterator遍历,逐个渲染得到的阴影维 Renderable。关于 zfail 算法可以利用 OGRE 中提供的 setShadowVolumeStenciIState方法,来重写ー个zfail算法。渲染完毕后,设置模板缓存渲染方式为值不为O的置1,重新渲染场景。4)将视线范围(一般为ー个扇面)垂直地面方向生成一个封闭的多面体,即可视区域多面体;利用OGRE中的ManualObject,创建视线范围内的封闭的多面体。5)对步骤4)中生成的多面体进行zfail方法渲染2次,此时模板缓存的值只有0,1,2,3 ;对步骤4)中建立的多面体进行zfail方法渲染2次,类似步骤3。6)渲染模板缓存值为2的区域,该区域为可视区域,置可见颜色。渲染模板缓存值为3的区域,该区域为不可视区域,置不可见颜色。分别定义不同的通道pass,可视区域通道passl,不可视区域通道pass2。设置模板缓存 宣染条件,setStenciIBufferParams (Ogre: : CMPF_EQUAL, 2),设置 宣染通道为 passl 宣染整个场本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:秦春关鸿亮单文刘巍
申请(专利权)人:北京天下图数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利