得鹿梦鱼 得鹿梦鱼

三维观察

要获得三维世界坐标系场景的显示,必须先建立观察用的坐标系,或照相机参数,该坐标系定于与照相机胶片平面对应的观察平面或者投影平面的方向,然后将对象描述转换到观察坐标系并投影到观察平面上

概述

投影

与照相机不同,我们可以选择多种不同的方法将场景投影到观察平面上,一种将实体描述投影到观察平面的方法是沿平行方向投影每个点,这种方式称为平行投影

观察三维场景是沿着会聚路径投影每一个点,这种称为透视投影

深度提示

除少数例外,深度信息对我们在三维信息中鉴别某观察方向显示的对象中那个在前,那个在后是很重要的,一种简单的方法是按照其观察位置的距离来改变线段的亮度

可见线和可见面的判定

一种方式简单地醒目的显示可见线或可见面用不同颜色来显示他们,或者使用虚线表示不可见线条或者隐去不可见线

面绘制

通过使用场景中的光照条件和赋予的表面特征绘制对象表面,可以增加显示的真实感,通过指定光源的颜色和位置来设定光照条件,也可以设定光照效果,对象的表面特征包括表面是否透明以及是否光滑

观察流水线

计算机生成步骤有点类似于拍摄一张照片的过程,首先,与安放照相机相对应,需要再场景中确定一个观察位置,根据需要显示场景的前后侧上或者底来选择观察位置,然后需要确定照相机的拍摄方向,最后按照相机的裁剪窗口的大小来修剪场景

步骤

  1. 在世界坐标系中建好场景模型
  2. 将场景描述转化到选择的观察坐标系
  3. 将对象映射到规范化坐标系中并且裁剪
  4. 将规范化坐标系描述转为投影平面的坐标位置

观察坐标系参数

建立一个三维观察坐标系,首先在世界坐标系中选定一点P0=x0,y0,z0P_0 = x_0, y_0, z_0作为观察原点,成为观察点或者观察位置,有时观察点也被称为视点,或者照相机的位置,在指定定义yviewy_{view}方向的观察向上向量,如下图所示

右手观察坐标系

观察平面法向量

因为观察方向通常沿着zviewz_{view}轴,因此观察平面有时也称为投影平面,一般假设与该轴垂直,这样观察平面的方向及正zviewz_{view}轴可定义为观察平面法向量

观察平面法向量

观察向上向量

在选定观察平面法向量N\vec N后,可接着选择观察向上向量V\vec V,该向量用来确定yviewy_{view}轴正向

世界坐标系到观察坐标系的变换

  1. 平移观察坐标原点到世界坐标系原点
  2. 进行旋转,分别让xview,yview,zviewx_{view}, y_{view},z_{view}轴对应到世界坐标的xw,yw,zwx_w,y_w,z_w

投影变换

平行投影

正投影
轴侧投影
等轴测投影
斜投影

透视投影