hyde
路人甲
路人甲
  • 注册日期2003-09-24
  • 发帖数555
  • QQ
  • 铜币1457枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1265回复:0

3D图形编程指南系列讲座1

楼主#
更多 发布于:2004-04-27 13:47
<b>绪言
</b>  产生真实的虚拟环境是计算机图形学孜孜以求的目标。在虚拟对象或场景的创建中要用到许多综合处理过程,每一种都非常令人感兴趣也非常重要。计算机辅助设计、科学可视化、模拟训练、医疗成像、娱乐、广告等等,所有的这些,都要依赖于当今最前沿的计算机图形技术。
  在许多情形中,3D图形对现实生活中那些昂贵的、危险的或者不可能的情形提供了非常有效的替代。最精彩的例子就是飞行模拟和医疗成像。这两类技术在工业中都得到了相当大的应用。
  直到不久以前,计算机绘图还局限在非常特殊的领域中。廉价微机的出现迅速扭转了这种局面。今天,许多种3D计算机图形应用以极其惊人的速度成长着。最好的例子就是3D图形技术在娱乐行业中的应用,包括非常流行的计算机3D游戏。这就使得我们在计算机中得到了现实生活中不能够体验到的感觉,从驾驶战斗机到在热带丛林中冒险,无一不给人们极大的感官刺激。
  3D绘图的实现算法包括了许多计算。最主要的原因是对高速度和虚拟真实性的永恒追求。随着高速处理器的出现,触发了人们对越来越复杂的图形领域的兴趣。速度和品质之间的游戏永远不会停止。了解其中的基本知识,对于更好的组织和优化程序有着不可忽视的作用。
  在随后几章中对基本主题的讨论列出了不了解该领域的人们在3D应用实践中最可能遇到的问题极其解决方案。文章中主体尽可能相互独立(尽管在实践中他们通常都是相互作用的),同时也在不易理解的地方给出了源代码。

  <B>本书的内容安排如下:</B>
  第一章分析计算机硬件和在不同计算机平台上交互图形应用程序的设计实现。其中说明了计算机是如何显示图像的,以及计算机同用户的交互。在本章也讨论了几种计算机架构(操作系统),包括MS-DOS, MS-Windows, X-Windows, NeXTStep 和 MacOS。本章同时也讨论了软件移植的问题。
  变换,包括投影变换,在第二章中讨论。本章说明了计算机在空间中如何处理点集的方法。同时也分析了旋转、平移和投影等基本变换及其计算机实现方法。
  在第三章中,我们讨论如何在计算机屏幕上绘制图元(点、线段和多边形)。我们将要看到由光栅图形固有的离散性带来的问题以及其解决方案。
  由于计算机屏幕的大小是有限的,在第四章中,我们分析在屏幕范围内裁剪图元的技术。只有虚拟场景中的点才能显示在屏幕上。同时也考虑了体裁剪技术。
  变换、图元绘制和裁剪都是视处理的基本技术。在第五章,我们考虑两种不同的视处理方法:从世界到屏幕和从屏幕到世界。
  我们要在虚拟世界中显示的对象通常是非常复杂的,包含了大量图元。在第六章,我们要讨论可能的使用多边形、简单曲线或曲面的建模方式。
  由于不同图元组成的对象可能出现遮挡现象,观察综合对象的过程变得复杂了起来。在第七章中,我们讨论隐面消除算法,该算法使得对象在屏幕上能够正确地被显示出来,同时也减轻了计算上的压力。
  为了真实地绘制场景,对观察者来说,只有几何结构可见性是不够的。颜色和照明是真实性的基本原则。在第八章中,我们分析如何在虚拟场景中导入照明。虚拟世界中多个对象的存在对诸如阴影和环境反射这样的照明效果带来了很大的麻烦。我们将要在本章中讨论如何在世界到屏幕以及屏幕到世界这两种视处理过程中对此进行计算。
  最后,所有的算法必须以精确的方式在计算机程序中结合起来。在最后一章,我们讨论这一步是如何依据模拟虚拟场景的类型而完成的。同时我们也考虑编程范例,其中最引人注目的是面向对象编程,这种方法对3D图形应用的结构非常适宜。
  纵览全文,我们会看到许多实现特殊运算的算法。由于计算机资源的约束,使得我们要在多个因素中权衡轻重,尤其是图像的品质和图像渲染速度。我们经常要强行借助逼近甚至其他完全属于探索式的解决方案以便在合理的时间中完成计算。
  认识到计算机图形是一项实践性很强的课题是非常重要的,它的主要目的是能够使用计算机硬件产生可辨识的图像。其中涉及了许多领域,从几何学到线性代数,以及光学和心理学,需要把这些领域中的技术加以改进以适应当前可用的计算机硬件。最后,要提醒大家的是,计算机硬件设备发展非常迅速,基于此,软件技术通常也会相应地变化。

  <B>总目录</B>

  <B>第一章 硬件接口</B>
  1.1 3D应用程序与硬件的交互作用
   1.1.1 在计算机屏幕上显示图像
   1.1.2 事件反应
  1.2 使用不同的体系结构
   1.2.1 MS-DOS.
   1.2.2 MS-Windows.
   1.2.3 X11.
   1.2.4 NeXTStep.
   1.2.5 MacOS.

  <B>第二章 3D变换</B>
  2.1 欧几里得空间,自由度和基本变换
  2.2 平移
  2.3 缩放
  2.4 在平面内旋转
  2.5 3D旋转
   2.5.1 坐标系
   2.5.2 变换次序
  2.6 以矩阵形式表达变换
  2.7 投影变换
   2.7.1 平行投影
   2.7.2 透视投影
  2.8 通过定点算法实现变换
   2.8.1 整型数表示
   2.8.2 定点数运算
   2.8.3 定点算法的实现

  <B>第三章 2D图元光栅处理</B>
  3.1 光栅化点
  3.2 光栅化线段
  3.3 光栅化多边形
   3.3.1 光栅化凸多边形
   3.3.2 光栅化凹多边形
  3.4 内插渲染明暗处理的多边形
  3.5 渲染纹理多边形
  3.6 反走样

  <B>第四章 2D和3D裁剪</B>
  4.1 2D裁剪策略
   4.1.1 点的裁剪
   4.1.2 裁剪线段
   4.1.3 裁剪多边形
  4.2 3D裁剪策略

  <B>第五章 视处理</B>
  5.1 从世界到屏幕的方法
   5.1.1 视系统参数
   5.1.2 多边形管道
   5.1.3 纹理多边形
  5.2 从屏幕到世界的方法
   5.2.1 直线方程
   5.2.2 平面方程
   5.2.3 直线和平面的交叉点
   5.2.4 直线和多边形的交叉点
   5.2.5 直线和球的交叉点
   5.2.6 寻找合适的交叉点
   5.2.7 优化光线追踪

  <B>第六章 建模</B>
  6.1 线框模型
  6.2 多边形模型
  6.3 三次曲线和双三次曲面
  6.4 地形
  6.5 体素模型

  <B>第七章 隐面消除</B>
  7.1 背面剔除算法
  7.2 从后到前排序
  7.3 顺序列表和八叉树
  7.4 入口
  7.5 二叉空间分割树
  7.6 Beam树
  7.7 扫描线算法
  7.8 Z-buffer算法

  <B>第八章 光线</B>
  8.1 光线的物理特性与人的感觉
  8.2 颜色模拟
   8.2.1 非彩色光
   8.2.2 颜色模型的三个成分
  8.3 照明模拟
   8.3.1 环境照明
  8.3.2 漫反射
   8.3.3 镜面反射
  8.4 在屏幕到世界中观察照明
  8.5 辐射度
  8.6 在世界到屏幕中观察照明

  <B>第九章 构建3-D应用程序的实践方面</B>
  9.1 常规设计方法
   9.1.1 面向对象编程
   9.1.2 脚本
  9.2 构建工具
   9.2.1 OpenGL
   9.2.2 Direct3D
  9.3 应用程序的构建策略
   9.3.1 实体视处理
   9.3.2 室内场景视处理
   9.3.3 室外场景视处理

  <B>附录</B>
  10.1 参考文献
  10.2 常用公式
喜欢0 评分0
夜落了,风静了,我喜欢一本书,一杯茶,一粒摇曳的烛光...
游客

返回顶部