《WebGL Lesson 10 – loading a world, and the most basic kind of camera》:这个demo载入了一个场景,并且能处理键盘事件。
- 载入场景:XMLHttpRequest->HTTP GET request->a callback function当加载场景数据完成时调用并加载场景数据。场景数据默认用的格式很简单,只能反映点坐标和对应面的贴图信息,其他光源等都不能反映,所以这个格式不好。一组数据包括XYZST五个值,前三个是点坐标,后两个是贴图纹理。纹理值一般在0-1之间,表示缩放比例,但是这里出现6.5等,表示同时贴6张图,每张图比例是0.5,这适用于墙面纹理。
- 摄像头移动:绕Y轴左右看称为yaw,绕X轴上下看成为pitch。webgl本身没提供摄像头,需要自己实现,我们实现时是默认将摄像头置于原点并看向X轴。摄像头移动,其实是场景移动。在复杂处理中,可以维护一个“camera matrix”来维护场景坐标的移动旋转量值。
- 键盘输入处理:jog(漫步)。原则:配置更好的机器,按键盘,获得的只能是更高的帧数,而不是更快的移动速度。这里通过设定固定的移动速率,并在drawscene中绘制实现。因为drawscene本身只于用户帧数相关,所以可以实现上述功能。文中代码是在drawscene中,先根据各种偏转参数使用drawarrays绘制图像后,再处理当前的键盘操作,更新偏转参数,即本次处理的键盘输入只能在下次drawscene执行时得以显示结果。