场景动态光影实现方法技术

技术编号:2949397 阅读:155 留言:0更新日期:2012-04-11 18:40
一种场景动态光影的实现方法,包括步骤:    1)  生成场景中的遮挡物列表;    2)  确定光源衰减范围,对位于光源衰减范围中的遮挡物生成光源对应的动态阴影锥列表;    3)  判断可以被照亮的物体是否位于视野之中,如在视野之中,则将其离散成具有顶点的物体网格;    4)  针对视野中的光源,判断离散成物体网格的物体是否位于光源的衰减范围内,如果不在,则不进行计算;如果在,则进入步骤5);    5)  计算光源对衰减范围内未处于阴影锥的物体网格的光照。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种伪3D的场景动态光影技术,尤其是涉及一种运用顶点光照技术的。
技术介绍
目前,电子游戏,尤其是伪3D游戏(45度视角游戏)里面普遍采用场景动态光影技术使游戏玩家产生如临其境,如见其物的视觉效果。所述动态光影技术是游戏中用来依照光源决定四周环境所见模样的一种技术,是游戏研发人员用来让玩家更融入游戏的工具之一。譬如说向一个黑暗的地方发射火箭,当火箭前进时它会照亮走廊的四周。而当火箭过去之后,这些被照亮的区域又会恢复到他们原本的亮度。场景动态光影技术首先在计算机中构造出所需场景的几何模型,然后根据假定的光照条件,计算画面上可见的各景物表面的光照效果。现有的选择光照效果的方式有光照贴图(LightingMap)和顶点光照(Vertex Lighting)。光照贴图方式是由设计人员在设计游戏场景时将预先设计好的纹理和光源生成光照贴图,这样我们在预定的场景或即将发生的时间就能看见预先设计好的那幅光照贴图。这样的好处是能看到由设计人员精心设计的游戏画面,缺点是非实时性,而且要花费大量时间去设计画面,这对于游戏开发来说无疑是浪费时间。顶点光照方式则是对于物体的顶点进行计算顶点与光源的远近距离,最后可以在运行3D程序时实时显示动态光源效果。现有一些已开发的游戏在采用顶点光照技术实现动态光影效果,生成一幅真实感的游戏场景时,通常采用步骤将当前区域(屏幕可见范围)划分为固定大小的水平固定网格,每一网格称为一个象素;统一按照障碍物和光源位置逐个象素地计算各象素的亮度;最后统一将每个需要照亮的物体离散成物体网格,并根据各物体网格所在象素的亮度进行照亮。该现有技术可称之为“整体网格点亮计算光照法”,其具有一些缺点 1)计算复杂,光照速度低,由于首先将当前区域划分为固定水平光照网格,并计算各网格的亮度,其计算量过大,造成运算速度下降,且实时性受到限制。2)光照精度低,由于是根据水平固定网格的亮度照亮物体网格,即光照精度取决于水平固定网格大小,考虑到运算速度的问题,水平固定网格通常较粗以降低计算量,造成光照精度受到限制。而且先计算网格大小,再将物体离散成物体网格,并根据水平固定网格的亮度照亮物体网格,在水平网格与物体网格对齐时经常产生误差。3)光照精度不易调整,由于将当前区域划分为固定大小的水平网格,使得调节被光照的物体网格大小也不能提高光照精度。
技术实现思路
由于现有技术的场景光照速度和精度不够,本专利技术解决的技术问题在于提供一种场景光照速度快、精度高的。为此,本专利技术解决技术问题的技术方案是一种场景动态光影的实现方法,包括步骤1)生成场景中的遮挡物列表;2)确定光源衰减范围,对位于光源衰减范围中的遮挡物生成光源对应的动态阴影锥列表;3)判断可以被照亮的物体是否位于视野之中,如在视野之中,则将其离散成具有顶点的物体网格;4)针对视野中的光源,判断离散成物体网格的物体是否位于光源的衰减范围内,如果不在,则不进行计算;如果在,则进入步骤5);5)计算光源对衰减范围内未处于阴影锥的物体网格的光照。相对于现有技术,本专利技术的有益效果是首先,由于只将视野中可以被照亮的物体离散成物体网格,相对现有技术首先划分当前区域再离散物体的做法,可以将物体离散成更多的物体网格以提高光照精度,而且可减小计算量,提高光照速度。其次,由于生成阴影锥列表,其不但可以产生阴影加强显示效果,而且能剔除那些不在阴影里的顶点,使它们不被处理,加强了光照速度。再次,由于光照的精度取决于物体网格的大小,动态改变被光照的物体网格可以实际调节光照的细节度。这样可以为不同配置高低的机器采用不同的细节度计算方式,比较灵活。另外,计算网格物体的光照时是真正计算光源到被光照顶点的实际距离,光照精度得到提高。附图说明图1是本专利技术的流程图;图2是本专利技术生成阴影锥的原理图。图3是本专利技术生成阴影锥的流程图。图4是本专利技术在新加入遮挡物时的工作流程图;图5是本专利技术在新加入遮挡物时的工作流程图;图6是本专利技术在新加入遮挡物时的工作流程图。具体实施例方式请参考图1,本专利技术包括生成场景中的遮挡物列表的步骤101;确定光源衰减范围,对位于光源衰减范围中的遮挡物生成光源对应的动态阴影锥列表的步骤102;判断可以被照亮的物体是否位于视野之中,如在视野之中,则将其离散成具有顶点的物体网格的步骤103;针对视野中的光源,判断离散成物体网格的物体是否位于光源的衰减范围内的步骤104,如果不在,则不进行计算;如果在,则计算光源对衰减范围内未处于阴影锥的物体网格的光照的步骤105。请一并参考图2,首先实施步骤101,对于场景中存在的遮挡物20,生成一个遮挡物列表,随后执行步骤102,确定光源10的衰减范围,光源10对场景中的位于衰减范围内的遮挡物列表进行判断并生成阴影锥列表。本专利技术所谓遮挡物20是指游戏场景中出现的牌坊、碑塔、建筑物或其他可以遮挡光源10的光照的景物。步骤102的一个实施方式请一并参考图3,首先实行步骤121,确定光源衰减范围。场景中的光源10由一个光源位置向量以及光源衰减半径r确定,所述光源衰减半径可以根据不同的游戏场景而选取,选取光源衰减半径则同时确定了光源10的光源衰减范围。其次实行步骤122,确定遮挡物20的遮挡线段。所谓遮挡线段是指遮挡物20和场景相交的轮廓,当所述轮廓为其他形状如圆形时,将其转化为遮挡线段进行处理。再执行步骤123,生成阴影锥。由于遮挡物20的遮挡线段进入了光源10的衰减范围,所以在遮挡线段上方形成了阴影。光源10与遮挡线段两端连线组成了阴影锥的两条交叉直线。生成阴影锥的作用在于阴影锥能产生阴影以加强显示效果,而且能快速剔除那些不在阴影里的顶点(详后述),使它们不被处理,加快运算速度。再次参考图1和图2,在生成阴影锥列表的步骤102之后,开始绘制游戏场景中的物体。首先执行步骤103,判断物体是否在视野之中,当某个可以被照亮的物体30处于视野之中时,将其离散成物体网格31。所谓物体30可看成由若干图素组成,所述图素一般采用四个顶点围成的空间四边形进行描述,要将物体30离散成为物体网格31就必须在四个顶点中间插值来增加顶点,这个过程可以采用等距离插值的方法,给定要插值形成的物体网格31的大小,自动生成其中的顶点。所谓视野,这里指的是屏幕可见的范围,当所述需绘制的物体30不在屏幕的可见范围,即视野之内时,则不对其进行计算光照的处理,以达到降低计算量提高速度的目的。同理,当光源不在视野,即屏幕可见的范围内时,要对其进行剔除处理,以减小计算时的计算量。随后执行步骤104,当视野中的光源10被确定后,判断离散成物体网格31的物体30是否位于光源10的衰减范围内,如果不在,则不进行计算;如果在,则进入步骤105,计算光源对衰减范围内未处于阴影锥的物体网格的光照。本实施方式中,所述步骤105可以这样进行按线性衰减计算进入光源衰减范围且未处于阴影锥的物体网格311的顶点的亮度;采用平滑插值的方法计算进入光源衰减范围且未处于阴影锥的物体网格311中顶点之间区域的亮度。位于阴影中的物体网格312的顶点由于不受光源10的影响将被剔除而不受处理,以达到降低计算量提高速度的目的。所谓线性衰减是指根据组成物体30的每个顶点离光源10的距离来确定顶点亮度,当然为达到一定的特技效果,也本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:罗洪波
申请(专利权)人:北京金山数字娱乐科技有限公司
类型:发明
国别省市:

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

1