走进3维图形世界-GLScene学习笔记之一

前言

一、三维世界的构成

我们认识的世界是三维的,一般会标记成分别对应于经度、纬度、海拨来标记每一个位置。而我们认识周围世界的方式,是通过我们的眼睛获取三维世界的信息,然后交由我们的大脑进行处理,从而形成我们的影像。上面是从静态分析的角度去看,但我们看到的世界是动态的,鸟儿在唱歌,车辆在奔跑,这里我们对世界的认识就是另一个维度:时间维度。时间的流逝,坐标的变换就形成了我们流动的影像。

在计算机的三维世界里,我们也一样采用X、Y、Z三个坐标,然后通过摄像机来当做我们的眼睛,然后通过定时器来控制时间维度,来形成动画效果。

二、GLScene

GLScene是Delphi下的一个三维组件库(glscene.sourceforge.net),至少到XE6,FMX的效率要比GLScene差的多,所以我们以GLScene为学习的基础。

首先,了解一下GLScene的坐标系。GLScene的坐标系中,坐标原点(0,0,0)始终位于中心位置,所以,如果是一个边长为10的立方体,其8个顶点的坐标我们就可以推测和计算出来。如果要让物体贴着另一个物体,很明显,物体的中心位置是要有所偏移的。

其次,就象我们站在楼顶上,楼房又立于大地之上,地球又跟随太阳运动,而太阳又只是银河系的一部分一样,GLScene三维世界的物体(对象)也是有隶属关系的,它跟着父对象移动,它的位置采用的是相对于父对象的位置,只要调用父对象的坐标,子对象也就自然跟着移动了。

那么接下来,我们了解下GLScene中的组件与我们现实现世的对应关系 。

1、场景(TGLScene)相当于我们的三维世界,其中的各种对象对应于现实世界的各种物体;

2、相机(TGLCamera)相当于我们的眼睛,是我们观察数码世界的窗口;

3、观察者(TGLSceneViewer)相当于我们观察三维场景的小窗口,负责将场景呈现到显示器上;

4、灯光(TGLLight)相当于我们现实世界的各种光源;

5、节拍控制器(TGLCadencer)在现实世界中,我翻译的名称可能不准确,它控制着三维世界的动画节拍,是三维世界中动画效果的控制器,我们可以认为它控制着三维世界的时间这一维度。

上面的五种元素,构成了GLScene的三维世界,也是我的这份学习笔记的一个总体概述。

 

分享到: