由于要实现每垛货物箱的精确数量,所以使用多重 FOR循环来进行渲染。先绘制整层的货物箱,再绘制一次剩余后整行的货物箱,最后再绘制二次剩余的几个货物箱。
为了便于说明问题,我们举个简单的例子 :若有一垛的箱子数量为 238个,箱子的长宽高分别为 4,8,4(简化后),根据仓库的参数设置可以推算出这一垛每列箱子数为 9个,共有整层 6层 .余下 22个在第 7层,在该层上又有整 2行 ,一次剩余标志为l,最后还剩 4个货物箱在第 7层的第 3行,二次剩余标志为 l。
2.5 漫游的实现
仓库漫游的实现是通过鼠标和键盘的响应来改变相应的参数,进行视图模型矩阵转换,通过坐标系的变换来调整观察点的位置或是所渲染模型的位置。可利用下面的函数来实现。
glRotate('l'ilt,1,0,0); //围绕 轴顺时针旋转 Tilt度
glRotate(Heading,0,1,0); //围绕 y轴顺时针旋转
Heading度 glTranslatef( ,一0.5+HeadMovement,Z);/船 轴正方向 前进(X)单位长度,沿 y轴正方向前进(~0.5+HeadMovement)单位长度,沿 z轴正方向前进(z)单位长度。漫游实现的基本原理见图 2。
3 结语
本文利用 OpenGL强大的图形功能在货物仓库模拟方面进行了有益尝试 ,在实践中取得了很好的效果,通过鼠标键盘进行人机交互 ,最终实现了货物仓库的动态可视化。虚拟现实技术的研究和应用具有极其广阔的前景,在某种意义上说它将改变人们的思维和生活方式,给人类世界带来难以想象的变化。
[1] Grigore C Burdea,Philippe Coiffet.虚拟现实技术[M].版.北京:电子工业出版社 ,2005.
[2] 和平鸽工作室.OpenGL高级编程与可视化系统开发[M]北京:中国水利水电出版社,2002.
[3] 尚游 ,陈岩涛.OpenGL图形程序设计指南[M].北京:巾国水利水电出版社 ,2001.
[4] 谢志鹏,陈锻生.用 OpenGL开发三维交互式虚拟场景[J]计算机应用,2000,20(8):38--40.