1、室内场景管理算法设计与实现【摘要】本文主要介绍了 Portal算法的设计与实现,并给出了Cell和 Portal的基本结构,详细说明了室内场景管理的实现步骤,对于室外场景和室内场景的接壤问题进行了细致的讨论。 【关键词】室内场景管理 Portal 一、引言 室内场景通常都有一个特性场景内部模型相当复杂,并且从观测者的视点看去只能看到他所处环境内的物体,除非在这个环境中有其它入口可以通往其它环境。针对这样的室内环境创建树结构是相当低效的,因为通过入口观测者只能看到相邻环境中非常小的一部分物体。换句话说,树结构不能很好的处理既有高复杂度又有高阻光度的场景。这个问题常常被称为“无效渲染 ,会花费大量
2、的时间去渲染最终被一堵墙挡住的相邻房间中的物体。对于这样的典型室内场景必须有更有效的处理方法。而入口方法就能够非常有效的解决这种无效渲染问题。 二、Portal 概述 (一)Portal 算法的介绍。 在入口技术的概念中整个场景被划分 n个区域,每个区域都是一个闭合的凸多边形。这里“凸“表示在区域内的任意两点间画一条线段,这条线段不会穿透该区域的任何一个多边形,而闭合表示从区域内发出一条光线,如果要让光线射到区域外,则此光线必须要穿透某个区域的多边形。 可以形象地把一个区域看成是一个房间,区域的多边形构成了房间的墙壁、天花板和地板等。两个邻近的区域通过入口连接。一个入口是一个特殊种类的多边形。
3、普通的多边形只是一个基本渲染元素,渲染普通多边形只是简单将其传递给后台硬件处理,而当渲染一个入口时视点会进入到另一个区域。 渲染 Portal场景是从包含观测视点的区域开始的。因为视点在这个区域内,所以这个区域必然是可见的,它也就是渲染的开始点。绘制它所包含的所有物体,并且同时还读出该区域的所有入口信息,如果这个区域的所有入口都是不可见的,那么绘制结束。如果有可见入口,其所通向的区域也必然可见,则以同样的方式渲染输出。当某个入口可见时,可以认为它通向的区域也是可见的,但仅仅是部分可见而己。利用这一点我们可以优化渲染过程,即利用入口的多边形来裁剪视锥体,以保证只渲染可见物体。只有视点所在的区域被
4、完全渲染,而其它区域只渲染被视线所覆盖的部分。 (二)Cell 结构的设计。 在室内场景渲染中,我们以墙为主要遮挡体,只有通过墙上的窗或者门才能看到墙后的物体,Portal 裁剪技术就是基于这种情况的快速动态潜在可见集的评估算法。Portal 算法中,首先要将场景划分成若干个子模块,也就是标题中的 Cell。Cell 模块的划分是由美工前期确定的,划分有两个主要条件,一是模块内部不能有墙或者其他遮挡体形成较大范围的遮挡,二是该模块的形状必须是凸多面体,而所有的几何节点将以其所在位置和包围盒信息对号入座至相应的 Cell模块,两个 Cell模块将通过窗或门结构进行连通。在视域剔除前我们就假定所有
5、当前 Cell模块中的几何节点都是可见的,而相邻的 Cell模块中只用那些处于门窗可视范围内的几何节点才可见,不相邻的 Cell模块中的所有几何节点均不可见。这样就可以使无效渲染的像素点的数量大大降低,提高渲染效率。 三、Portal 算法的实现 (一)算法主要流程。 Portal 算法的根本目的是计算出所有可视范围内的几何节点,仅将这些节点进行渲染,以此来提高渲染速度。首先我们要确定视点所在的位置,所谓的视点也就是程序中的主摄像机,我们将摄像机的空问坐标与所有 Cell依次进行相交判断,由此确定视点处于哪个 Cell模块中,然后将该 Cell模块所包含的所有几何模块与视锥体进行相交检测,完成
6、视域剔除工作.然后计算可视范围内的所有 portal,按 Portal大小和视点方向重新计算新的视锥体,在与该 Portal相连的 Cell模块内利用计算的视锥体进行新一轮的视域剔除.如此递归下去,直到所有的可视 Cell模块都完成了视域剔除,如此获得的所有几何节点形成的序列就是需要进行渲染的节点。 (二)新视锥体生成算法。 在整个算法流程中核心算法是如何利用现有的视点方向和 Portal的位置大小计算新的视锥体。由于视点的方向没有改变,墙面的作用仅仅是遮挡原本可见的物体,所以新产生的视锥体的远近平面均平行于旧的视锥体。从 Portal所处的位置来分一共有两种情况需要讨论。第一种情况是整个 P
7、ortal完全处于原视锥体范围内部,在这种情况下,新的视锥体其实就是将原视锥体变窄后的模样。第二种情况是 Portal部分处于原视锥体范围内部,在这种情况下,新的视锥体的形状相当于原视锥体的侧边半部中的一小部分。 参考文献: 1Imma Boada,Isabel Navazo,Roberto Scopigno,Multiresolution volume visualization with a texture-based octreeJ.计算机科学,2001,117. 2Frank Losasso,Fr6d6ric Gibou,Ron Fedkiw,Simulating water and smoke with an octree data structure InternationalC.Conference on Computer Graphics and Interactive Techniques ACM SIGGRAPH,2004,457.