基于Logitech三维鼠标的虚拟建筑漫游系统(5)
发布时间:2021-06-08
发布时间:2021-06-08
基于Logitech三维鼠标的虚拟建筑漫游系统
OpenGL的矩阵堆栈(作一次右乘操作),如果该对象节点含有子几何体对象,则当遍历到其子节点时,也要将子节点的变换矩阵装入OpenGL的矩阵堆栈。但当遍历过程回到子节点的父节点时,将重新设置OpenGL的矩阵堆栈以使子节点的变换矩阵失效。这就意味着,在层次型场景结构中,几何体的变换矩阵的作用域是局部的。
为了构建整个场景,首先,我们用面向对象的观点标识了应用中的一些基本对象:①视点对象:它封装了与视点设置相关的操作;②几何形体对象:即场景中的物体,一般是从图形交换格式文件中读入的几何模型;③光源对象;④材质对象;⑤纹理对象;⑥变换矩阵对象:它通过直接的矩阵运算封装了所有变换操作。基于上述对象标识,用c++语言定义了以下类对象:CGLViewpoint、CGLObject、CGLLight、CGLMaterial、CGLTexture和CGLMatrix。为了包含上述定义的场景元素,我们定义了类CGLScene,以作为整个场景的包含容器。实际上,类CGLScene也就是整个层次型场景的根结点。
4 虚拟建筑漫游实例
为了验证上述方法,针对一个房间设计实现了一个虚拟漫游实例。用户可以利用三维鼠标控制视点,在房间中漫游,观察房屋的布局是否合理。
使用的软硬件如下:1:软件环境:WTK 7.0、MultiGen Creator、Visual C++ 6.0;Win2000操作系统;2:硬件环境:P4 1.5G CPU,双通道三维图形加速卡,Logitech三维鼠标,Crystal eyes立体眼镜。
具体开发过程如下:在VC++ 环境下进行仿真系统的开发,并通过访问WTK的API函数接口来实现应用程序的实时控制,包括模型载入、视点控制、光效生成、时间、碰撞检测和特殊效果等功能。实时漫游算法如图4所示。
图4 软件设计流程图