基于Logitech三维鼠标的虚拟建筑漫游系统(4)
发布时间:2021-06-08
发布时间:2021-06-08
基于Logitech三维鼠标的虚拟建筑漫游系统
径的位置和方向信息赋予目标物体。视点还有一个特点,即一旦将视点与传感器相连,传感器的变换和旋转信息就将被发送给视点,从而使传感器能够控制视点。需要注意的是视点的最终行为取决于传感器控制的合力,即传感器之间可能存在冲突。有些传感器是相互冲突的,他们不能在一起共同工作。如果贸然将一个视点与多个传感器相连,极有可能引起冲突。函数引用语句为:
void WTviewpoint_addsensor(WTviewpoint *viewpoint,WTsensor *sensor);
2:设定传感器灵敏度
函数WTsensor_setsensitivity能够设定指定的传感器的灵敏度,默认灵敏度为1.0。用户的任何将灵敏度值设为负值的企图都将被系统认为是无效行为,即不会对灵敏度值做出任何实质性的修改。函数的引用语句为:
void WTsensor_setsensitivity(WTsensor *sensor,float sensitivity);
2.4 Logitech三维鼠标在场景漫游中的应用
三维场景的漫游就是观察者在三维空间中不断改变视点的位置,并进行俯视、仰视、环视等多种方式的观察。由计算机图形学理论我们可知,对于一个构造在世界坐标系中的三维场景,漫游的本质就是通过改变观察空间来达到从不同位置、角度观察场景的目的。在观察空间的其它参数(如:前后界面离视点的距离、视角、纵横比等)不变的情况下,可以用4ⅹ4的变换矩阵进行视点变换来改变观察空间位置和方向。因此,用Logitech三维鼠标作为场景漫游的视点跟踪传感器时,其漫游过程为:
1:接收信号:从控制单元获取三维鼠标的状态数据;
2:视点更新:根据所获取的数据生成变换矩阵,并用它更新视点位置和视线方向;
3:场景重新渲染:在用户视窗内更新场景显示。
图2 场景遍历过程 图3 Logitech三维鼠标的硬件构成
3 层次型场景结构
层次型结构场景的基本思想是:将整个场景用一颗倒置的树(即一颗根节点在上,分支节点和叶节点在下的树,我们称之为“场景树”)来描述和组织,场景树中的节点包含了场景中的所有元素,如:几何体、变换矩阵、光源、纹理等。在层次型场景中,根结点是整个场景树的入口点,场景的绘制必须要遍历(Traverse)场景树的所有节点。其遍历过程是基于“深度优先(depth-first)”策略的,如图3所示。
在场景遍历过程中,如遇到物体几何体对象节点,绘制引擎首先要将对象结点的变换矩阵装入