首页 理论教育 三维交互技术

三维交互技术

时间:2022-02-14 理论教育 版权反馈
【摘要】:Hanrahan和Haeberli提出一种拾取方法:将整个场景绘制到Z缓冲器,每个多边形使用一种唯一颜色作为标识,形式的图像将以离屏方式存储。当使用Z缓冲器时,如果8位模板缓冲器和24位Z缓冲器共享相同的字节,那么模板缓冲器就会空闲。p0是观察坐标系的原点,此时p表示观察坐标系中的一条射线。在三维中,点、直线、三角形是最基本的几何元素。如果射线和某个三角形相交,即和三角形所描述的几何体相交。

1.几何体的拾取方法介绍

有关拾取的方法有颜色缓冲区法、模板缓冲器法和射线法相交测试。

(1)颜色缓冲区法

Hanrahan和Haeberli提出一种拾取方法:将整个场景绘制到Z缓冲器,每个多边形使用一种唯一颜色作为标识,形式的图像将以离屏方式存储。当用户在屏幕上点击一点时,通过颜色就可以很快确定相应的多边形。该方法的优点是算法简单、拾取快速;缺点是必须使用一个单独通道绘制整个场景,缓冲每个视图的代价也较高。

(2)模板缓冲器

当使用Z缓冲器时,如果8位模板缓冲器和24位Z缓冲器共享相同的字节,那么模板缓冲器就会空闲。在绘制场景时,可以在不增大开销的情况下,使用拾取标志,缺点是只有256种颜色可以使用。克服的方法是将整个场景继续分割,每个部分使用一种颜色进行标识,然后对这个部分内部的多边形继续使用该方法。

图7-16 用户准备选择的对象

(3)射线法

如图7-16所示,如果从投影中心发射一条选取射线,经过点p,会与围绕p点投影的对象相交,即茶壶。所以一旦计算选取射线,我们可以遍历场景中的每个对象并测试,看射线是否与它相交。与射线相交的对象即是用户选择的对象,如果有多个对象和射线相交,则选择距离视点最近的对象,在这个例子中用户选取的对象是茶壶。

2.射线拾取法

(1)屏幕点到投影平面的转换。

从投影平面到屏幕的变换矩阵为:

转换投影平面上一点到平面上的点:

所以p点坐标

假定视口的偏移x和y皆为0,投影窗口时z=1的平面,Pproj是投影矩阵P00、P11分别是x和y的缩放系数,则px和py可以表示为:

至此我们已经求出了屏幕上点在投影窗口上的坐标。

(2)计算相交测试射线。

射线的参数方程为p(t) =p0+tu,p0为射线的起点u单位的向量,u表示射线的方向。p0是观察坐标系的原点,此时p(t)表示观察坐标系中的一条射线。

(3)将相交测试射线由观察坐标空间到转换世界坐标空间内。

假设Tview是观察矩阵,其逆矩阵为T-1view,使用下式可以将射线p(t)变换到世界坐标空间内。

(4)射线和场景中对象进行相交测试。

在三维中,点、直线、三角形是最基本的几何元素。其中三角形是最简单的多边形,三角形可以组合成较大、较复杂的多边形和网格。通常把对象描述成三角形网格,所以射线和场景中的几何体求交,也就是射线和构造成几何体的三角形求交。如果射线和某个三角形相交,即和三角形所描述的几何体相交。注意:射线可能相交多个对象,然而距离照相机最近的对象会被选择,因为近距离对象遮挡距离较远的对象。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈