Algorithm 版 (精华区)
发信人: Lerry (戒网·学习), 信区: Algorithm
标 题: 三维图形的消隐算法分析
发信站: 哈工大紫丁香 (2001年11月20日20:48:06 星期二), 站内信件
三维图形的消隐算法分析
---- 摘 要 造 型 是 计 算 机 三 维 图 形 处 理 的 基 础, 而 消 隐 则 是 三
维 造 型 的 关 键。 本 文 剖 析 了 当 前 在CAD 三 维 图 形 处 理 中 最 主 要
的8 种 物 体 空 间 消 隐 算 法 和4 种 图 象 空 间 消 隐 算 法。
---- 关 键 词 造 型、 消 隐、 物 体 空 间 法、 图 象 空 间 法
---- 分 类 号
---- 造 型(modeling) 是 计 算 机 三 维 图 形 处 理 的 基 础, 而 消 除 隐
藏 面(hidden surface, 简 称 消 隐) 则 是 三 维 造 型 的 关 键。 所 谓 消
隐 就 是 不 画 出 即 隐 藏 从 当 前 观 察 点 看 不 见 的 三 维 模 型 表 面。
消 隐 算 法 的 核 心 就 是 判 断 三 维 模 型 的 表 面 是 否 可 见。
---- 抽 象 来 看, 一 种 消 隐 算 法 可 以 看 作 一 个 五 元 组, 即
HA = (I, O, D, P, S)
---- 其 中,I 为 要 进 行 消 隐 处 理 的 三 维 对 象 的 集 合;
---- O 为 经 过 消 隐 处 理 的 二 维 对 象 的 集 合;
---- D 为 进 行 消 隐 处 理 时 所 采 用 的 数 据 结 构;
---- P 为 进 行 消 隐 处 理 所 需 基 本 操 作 过 程 的 集 合, 主 要 包 括
分 类、 排 序
三 维 坐 标 变 换
透 视 投 影 变 换
基 本 图 形 元 素 间 的 求 交 计 算
两 个 区 域 重 叠 判 断
点 与 区 域 的 包 含 测 试
面 的 朝 向 测 试
---- S 为 消 隐 策 略, 即 规 定P 中 各 基 本 操 作 过 程 被 采 用 的 先 后
次 序。
---- 因 此, 设 计 消 隐 算 法 时 应 考 虑 上 述 五 个 要 素 及 它 们 之 间
的 相 互 关 系。
---- 在 计 算 机 图 形 学 中, 为 了 简 化 算 法, 一 般 是 利 用 多 面 体 去
逼 近 曲 面 体, 因 此 多 面 体 的 消 隐 算 法 是 曲 面 体 的 基 础。 本 文
的 消 隐 算 法 讨 论 主 要 是 基 于 多 面 体 的 消 隐 问 题, 对 曲 面 体 进
行 多 次 多 面 体 近 似, 对 每 一 多 面 体 运 用 多 面 体 消 隐 算 法 就 能
实 现 曲 面 体 的 消 隐。
---- 基 于B-rep 模 型(Boundary Representative Model) 和CSG 模 型(Construc
tive Solid Geometry Model) 的 三 维 造 型 消 隐 算 法 可 以 分 为 两 大 类,
即 物 体 空 间 法 和 图 象 空 间 法。 物 体 空 间 法 利 用 三 维 环 境 信 息
或 三 维 视 图( 主 要 使 用 三 维 观 察 坐 标, 有 时 也 使 用 三 维 世 界
坐 标) 来 消 除 隐 藏 面, 即 根 据 空 间 中 各 物 体 三 维 模 型 的 几 何
关 系, 来 判 断 哪 些 表 面 可 见, 哪 些 表 面 不 可 见。 图 象 空 间 法
基 于 物 体 三 维 模 型 的 二 维 显 示 图 形( 使 用 二 维 显 示 坐 标) 来
确 定 物 体 或 表 面 与 观 察 点 的 远 近 关 系, 从 而 判 断 哪 些 表 面 遮
挡 了 其 它 表 面。
---- 本 文 将 分 析 当 前 在CAD 三 维 图 形 处 理 中 最 主 要 的12 中 消 隐
算 法, 其 中8 种 属 于 物 体 空 间 法,4 种 属 于 图 象 空 间 法。 在 实 际
处 理 中, 由 于 物 体 表 面 形 态 的 复 杂 性 和 提 高 消 隐 处 理 的 效 率
, 通 常 都 是 结 合 使 用 多 种 消 隐 算 法 来 完 成 物 体 的 消 隐 处 理 的
。
---- 一、 物 体 空 间 法
---- 物 体 空 间 法 是 在 三 维 坐 标 系 中, 通 过 分 析 物 体 模 型 间 的
几 何 关 系, 如 物 体 的 几 何 位 置、 与 观 察 点 的 相 对 位 置 等, 来 进
行 隐 藏 面 判 断 的 消 隐 算 法。 世 界 坐 标 系 是 描 述 物 体 的 原 始 坐
标 系, 物 体 的 世 界 坐 标 描 述 了 物 体 的 基 本 形 状。 为 了 更 好 地
观 察 和 描 述 物 体, 经 常 需 要 对 其 世 界 坐 标 进 行 平 移 和 旋 转,
而 得 到 物 体 的 观 察 坐 标。 物 体 的 观 察 坐 标 能 得 到 描 述 物 体 的
更 好 视 角, 所 以 物 体 空 间 法 通 常 都 是 在 观 察 坐 标 系 中 进 行 的
。 观 察 坐 标 系 的 原 点 一 般 即 是 观 察 点。
---- 物 体 空 间 法 消 隐 包 括 两 个 基 本 步 骤, 即 三 维 坐 标 变 换 和
选 取 适 当 的 隐 藏 面 判 断 算 法。
---- 一) 三 维 坐 标 变 换
---- 选 择 合 适 的 观 察 坐 标 系 不 但 可 以 更 好 地 描 述 物 体, 而 且
可 以 大 大 简 化 和 降 低 消 隐 算 法 的 运 算。 因 此, 利 用 物 体 空 间
法 进 行 消 隐 的 第 一 步 往 往 是 将 物 体 所 处 的 坐 标 系 转 换 为 适 当
的 观 察 坐 标 系。 这 需 要 对 物 体 进 行 三 维 旋 转 和 平 移 变 换。
---- 设 物 体 顶 点 的 原 始 坐 标 为(x, y, z), 变 化 后 的 观 察 坐 标 为
(x*, y*, z*), 则
---- 1 . 旋 转 变 换
物 体 绕Y 轴 旋 转 的 角 度 α 的 三 维 旋 转 变 换 公 式 为
[x* y * z* 1]= [x y z] [ cosα sinα 0 0
-sinα cosα 0 0
0 0 1 0
0 0 0 1]
物 体 绕Z 轴 旋 转 的 角 度 β 的 三 维 旋 转 变 换 公 式 为
[x* y * z* 1]= [x y z] [ cosβ 0 -sinβ 0
0 1 0 0
sinβ 0 cosβ 0
0 0 0 1]
物 体 绕X 轴 旋 转 的 角 度 γ 的 三 维 旋 转 变 换 公 式 为
[x* y * z* 1]= [x y z] [1 0 0 0
0 corγ sinγ 0
0 -sinγ cosγ 0
0 0 0 1]
将 上 述 表 达 式 展 开 后 可 得 如 下 公 式
{ x'=cosα×x-sinα×z;
y'=cosβ×y-sinβ×x';
z'=sinα×x+cosα×z;
x*=cosβ×x'+sinβ×y;
y*=sinγ×z'+cosγ×y';
z*=cosγ×z'-sin γ×y';
---- 其 中,x'、y' 和z' 是 运 算 中 间 变 量。
---- 2 . 平 移 变 换
---- 三 维 平 移 变 换 公 式 如 下
[x* y * z* 1]= [x y z 1] [1 0 0 0
0 1 0 0
0 0 1 0
Δx Δy Δz 1]
---- 展 开 后 即 得
[ x*=x+Δx
y*=y+Δy
z*=z+Δz
---- 其 中 Δx、 Δy、 Δz 分 别 为 物 体 沿X、Y、Z 轴 的 平 移 量。
---- 二) 消 隐 算 法
---- 常 用 的 物 体 空 间 消 隐 算 法 包 括 平 面 公 式 法、 背 面 消 除 法、
径 向 预 排 序 法、 径 向 排 序 法、 隔 离 平 面 法、 深 度 排 序 法、 光 线
跟 踪 法 和 分 解 法。 其 中 前 四 种 算 法 最 常 用, 它 们 的 基 础 都 是
背 面 消 隐 原 理。 所 谓 背 面 消 隐 原 理, 即 是 相 对 观 察 点 来 说 朝
向 后 面 的 物 体 表 面 是 不 可 见 的, 应 被 隐 藏。
---- 1 . 平 面 公 式 法
---- 根 据 解 析 几 何 原 理, 通 过 标 准 的 平 面 方 程 可 以 判 断 给 定
点 是 在 平 面 的 正 面 还 是 背 面。 平 面 公 式 法 利 用 此 原 理 来 判 断
观 察 点 位 于 物 体 表 面 的 哪 一 面, 如 位 于 背 面 一 侧, 则 表 面 不
可 见, 应 被 消 隐; 反 之 则 可 见。
---- 对 物 体 得 任 意 表 面, 可 将 其 划 分 为 若 干 个 平 面, 在 根 据 平
面 上 任 意 三 点 的 坐 标 可 以 求 得 其 平 面 方 程。 标 准 得 平 面 方 程
为
Ax+By+Cz+D = 0;
---- 其 中A、B、C、D 为 决 定 平 面 得 常 数。 如 果(x1, y1, z1)、(x2, y2
, z2)、(x3, y3, z3) 为 平 面 上 已 知 得 三 点 坐 标, 则 可 求 得A、B、C
、D 如 下:
{ A=y1(x2-x3)+y2(z3-z1)+y3(z1-z2);
B=z1(x2-x3)+z2(x3-x1)+z3(x1-x2);
C=x1(y2-y3)+x2(y3-y1)+x3(y1-y2);
D=-x1(y2z3-y3z2)-x2(y3z1-y1z3)-x3(y1z2-y2z1);
---- 设 观 察 点 坐 标 为(x, y, z), 如 果
Ax+By+Cz+D = 0, 则 观 察 点(x, y, z) 位 于 平 面 上;
Ax+By+Cz+D > 0, 则 观 察 点(x, y, z) 位 于 平 面 背 面 一 侧, 平 面 不 可
见, 应 被 隐 藏;
Ax+By+Cz+D < 0, 则 观 察 点(x, y, z) 位 于 平 面 正 面 一 侧, 平 面 是 可
见 面, 应 被 画 出。
---- 通 过 对 物 体 进 行 适 当 旋 转 和 平 移 后, 可 将 物 体 变 换 到 以
观 察 点 为 原 点 得 观 察 坐 标 系 中, 如 果 在 观 察 坐 标 系 中 求 得 了
平 面 得 方 程Ax+By+Cz+D = 0, 将 观 察 点 坐 标(0,0,0) 代 入 上 面 得
判 断 准 则, 则 可 得 出 如 下 得 简 单 判 据:
D > 0, 则 平 面 不 可 见, 应 被 隐 藏;
D < 0, 则 平 面 是 可 见 面, 应 被 画 出。
---- 平 面 公 式 法 算 法 简 便, 是 在 实 际 中 使 用 最 频 繁 得 消 隐 算
法。 但 它 只 能 用 于 凸 面 体 得 消 隐, 而 不 适 用 于 凹 面 体 消 隐。
---- 2 . 背 面 消 除 法
---- 背 面 消 除 法 是 直 接 运 用 背 面 消 隐 原 理 的 消 隐 算 法。 在 数
学 上, 物 体 表 面 的 法 向 量 即 是 表 面 的 朝 向, 因 此, 法 向 量 方 向
背 向 观 察 点 的 物 体 表 面 都 应 被 消 隐。
---- 表 面 的 法 向 量 是 否 背 向 观 察 点 可 以 通 过 表 面 法 向 量 与 视
向 量 的 点 积 来 决 定。 如 图1 所 示, 设 经 坐 标 变 换 后, 坐 标 系 的
原 点O 即 是 观 察 点, 空 间 中 任 意 平 面ABC 的 法 向 量 为, 法 向 量 为
与 平 面 的 交 点 为P, 则 从 向 量OP 即 是 平 面ABC 的 视 向 量。
---- 如 果> 0, 则 物 体 表 面 是 可 见 的 朝 向 观 察 点 的 面; 如 果, 则
物 体 表 面 是 不 可 见 的 背 向 观 察 点 的 面, 应 被 消 隐。
---- 设 θ 为 向 量 和 之 间 的 夹 角, 视 向 量 的 长 度 为 线 段OP 的 长 度
|OP|, 则 根 据 向 量 点 积 的 定 义 可 知=|OP|||cos θ。 如 果> 0, 则cos θ
> 0( 即> θ> 0); 反 之, 如 果, 则cos θ 0( 即 θ)。
---- 因 此, 背 面 消 除 法 的 判 据 简 化 为:
cos θ 0, 则 物 体 表 面 不 可 见, 应 被 消 隐;
cos θ> 0, 则 物 体 表 面 可 见, 应 被 画 出。
---- 根 据 平 面 法 向 量 的 定 义 可 知, 在 平 面 上 按 逆 时 针 方 向 选
取P1(x1, y1, z1)、P2(x2, y2, z2)、P3(x3, y3, z3) 三 点, 则
---- (公式略)
---- 其 中:
---- (公式略)
---- 经 过 投 影 变 化 后, 视 向 量 与Z 轴 是 平 行 的, 因 此 向 量 和 之
间 的 夹 角 θ 即 为Z 轴 与 向 量 的 夹 角, 所 以
---- 由 于||>0, 所 以cos θ 的 正 负 取 决 于C, 因 此 背 面 消 除 法 的 判
据 转 化 化 为:
---- (公式略)
C 0, 则 物 体 表 面 不 可 见, 应 被 消 隐;
C > 0, 则 物 体 表 面 可 见, 应 被 画 出。
---- 3 . 径 向 预 排 序 法
---- 径 向 预 排 序 法 根 据 物 体 在 三 维 坐 标 系XY 平 面 中 的 角 位 置
来 判 断 哪 些 物 体 挡 住 了 其 它 物 体, 物 体 的 哪 些 表 面 挡 住 了 其
它 表 面。 对 具 有 相 同 角 位 置 的 物 体 或 表 面, 与 观 察 点 较 近 的
将 挡 住 较 远 的。 如 图2 所 示。
图2 径 向 预 排 序 法 示 例
---- 径 向 预 排 序 法 消 隐 的 要 点 是 先 对 物 体 及 物 体 的 表 面 进 行
由 远 及 近 的 排 序, 对 具 有 相 同 角 位 置 的 物 体 或 表 面, 先 画 较
远 的, 后 画 较 近 的, 这 样 如 果 较 近 的 物 体 或 表 面 挡 住 了 较 远
的 物 体 或 表 面, 则 被 遮 挡 的 部 分 被 覆 盖 而 实 现 消 隐。 但 对 具
有 不 同 角 位 置 的 物 体 或 表 面, 先 画 哪 一 个 可 根 据 需 要 来 决 定
。 如 果 存 在 凹 面 物 体 的 消 隐, 一 般 应 先 画 物 体 中 心 部 分, 再
画 物 体 的 两 侧, 以 正 确 地 表 现 互 相 重 叠 的 凹 面 模 型。
---- 径 向 预 排 序 法 可 以 对 任 意 形 状 的 物 体 进 行 消 隐 处 理。 但
需 要 预 先 知 道 观 察 角 度, 并 根 据 角 位 置 对 物 体 的 画 图 顺 序 预
先 排 序。 而 且 构 造 模 型 的 编 码 受 到 这 种 排 序 的 限 制, 模 型 不
能 进 行 旋 转 变 换。
---- 4 . 径 向 排 序 法
---- 径 向 排 序 法 是 对 径 向 预 排 序 法 的 改 进 算 法, 使 得 构 造 模
型 的 编 码 能 根 据 观 察 角 度 的 变 化, 来 自 动 调 整 物 体 或 表 面 的
远 近 顺 序 即 画 图 顺 序, 以 实 现 对 模 型 的 旋 转 变 换, 以 便 能 从
不 同 的 角 度 来 观 察 物 体。 算 法 需 要 检 测 旋 转 变 换 的 角 度, 并
随 角 度 的 变 化 而 调 整 物 体 或 表 面 的 远 近 顺 序。
---- 5 . 隔 离 平 面 法
---- 隔 离 平 面 法 主 要 用 于 多 个 物 体 之 间 的 消 隐 处 理, 其 基 础
是 平 面 公 式 法。 其 基 本 原 理 是, 在 需 要 进 行 消 隐 处 理 的 两 个
物 体 之 间 建 立 一 个 虚 拟 平 面, 并 根 据 平 面 公 式 法 判 断 出 两 个
物 体 分 别 位 于 该 平 面 的 哪 一 侧, 以 及 该 平 面 的 哪 一 侧 朝 向 观
察 点, 则 可 以 推 论 得 到 位 于 平 面 朝 向 观 察 点 一 侧 的 物 体 离 观
察 点 较 近, 将 遮 挡 位 于 平 面 背 向 观 察 点 一 侧 的 物 体。 即 位 于
平 面 背 向 观 察 点 一 侧 的 物 体 应 被 首 先 画 出, 且 应 进 行 消 隐。
---- 6 . 深 度 排 序 法
---- 深 度 排 序 法 也 是 主 要 用 于 分 析 多 个 物 体 之 间 是 否 存 在 表
面 遮 挡 的 消 隐 算 法。 其 原 理 是 比 较 不 同 物 体 或 表 面 的 表 示 远
近 的z 坐 标, 在 观 察 点 位 于 原 点 的 观 察 坐 标 系 中,|z| 值 越 大 的
物 体 或 表 面 离 观 察 点 越 远, 被 消 隐 的 可 能 性 越 大, 应 先 画 出
;|z| 值 越 小 的 物 体 或 表 面 离 观 察 点 越 近, 将 可 能 遮 挡 较 远 的
物 体 或 表 面, 应 后 画 出。
---- 深 度 排 序 法 需 要 用 到 深 度 信 息 和 绘 图 顺 序, 通 常 用 于 模
型 数 据 中 包 含 深 度 信 息 和 绘 图 顺 序 的 物 体 造 型。
---- 7 . 光 线 跟 踪 法
---- 光 线 跟 踪 法 的 基 本 原 理 是, 人 能 看 见 物 体 是 因 为 物 体 能
反 射 光, 因 此, 跟 踪 从 光 源 发 出 的 光 线, 光 线 投 射 到 物 体 上,
再 从 物 体 反 射 到 观 察 点, 在 光 线 轨 迹 中 离 观 察 点 最 近 的 物 体
表 面 将 遮 挡 其 它 物 体 表 面。
---- 光 线 跟 踪 法 需 要 分 析 物 体 表 面 的 每 一 点 的 光 反 射 状 态,
因 此 需 要 的 内 存 空 间 较 大, 运 算 速 度 也 较 慢。 但 这 种 方 法 可
同 时 生 成 物 体 的 光 照 模 型, 产 生 的 消 隐 效 果 和 真 实 感 都 很 好
。
---- 8 . 分 解 法
---- 分 解 法 是 对CSG 模 型 的 一 种 消 隐 算 法, 首 先 将 复 杂 物 体 分
解 为 一 系 列 的 立 方 体, 离 观 察 点 近 的 立 方 体 将 遮 挡 远 的 立 方
体, 从 而 实 现 消 隐。 分 解 法 算 法 复 杂, 需 要 的 内 存 空 间 大, 速
度 也 满, 近 仅 用 于 一 些 特 殊 的 场 合。
---- 二、 图 象 空 间 法
---- 图 象 空 间 法 基 于 物 体 三 维 模 型 的 二 维 显 示 图 形 来 确 定 物
体 或 表 面 上 的 每 一 点 与 观 察 点 的 远 近 关 系, 从 而 判 断 哪 些 表
面 遮 挡 了 其 它 表 面。 为 了 获 得 三 维 物 体 的 二 维 显 示 图 形, 在
对 物 体 进 行 旋 转 和 平 移 变 化 后, 还 需 对 物 体 进 行 透 视 投 影 变
换。
图3 透 视 投 影 变 换 示 意
---- 如 图3 所 示, 三 维 空 间 中 点P(x, y, z) 由 透 视 点E 沿Z 轴 透 视 投
影 变 换 到XOY 二 维 平 面 中 的 点P*(x*, y*, z*)。 设E 点 距 原 点O 的 距
离 为r, 则 透 视 投 影 变 换 公 式 为:
---- (x*, y*, z*, 1)=(x, y, z, 1)MPeMPr
---- 式 中MPe、MPr 分 别 为 透 视 变 换 矩 阵 和 投 影 变 换 矩 阵, 它 们 的
表 达 式 如 下:
---- (公式略)
---- 将 透 视 投 影 变 换 公 式 展 开 后 可 得:
---- (公式略)
---- 1 . Z 缓 冲 区 法
---- Z 缓 冲 区 法 首 先 建 立 一 个 大 的 缓 冲 区, 用 来 存 储 三 维 物 体
沿Z 轴 透 视 投 影 而 得 到 的 二 维 图 形 的 所 有 象 素 的 值, 因 此 叫
做Z 缓 冲 区。Z 缓 冲 区 的 单 元 个 数 与 屏 幕 上 象 素 点 的 个 数 相 同,
也 和 帧 缓 冲 区 的 单 元 个 数 相 同, 而 且 它 们 之 间 是 一 一 对 应 的
。Z 缓 冲 区 每 个 单 元 的 大 小 取 决 于 图 形 在 观 察 坐 标 系 中Z 方 向
的 变 化 范 围。Z 缓 冲 区 的 每 个 单 元 的 值 是 对 应 象 素 点 所 对 应
的 物 体 表 面 点 的Z 坐 标 值。
---- 利 用Z 缓 冲 区 法 进 行 消 隐 和 造 型 的 过 程 就 是 对 屏 幕 中 每 一
点 进 行 判 断 并 给 帧 缓 冲 区 和Z 缓 冲 区 中 相 应 单 元 进 行 赋 值 的
过 程。 现 用 形 式 化 语 言 描 述 该 算 法 如 下:
Z缓冲区消隐算法
{
1)将帧缓冲区各单元的值置为背景色值;
2)将Z缓冲区各单元的值置为Z坐标可能出现的最大值;
3)循环:对每一物体
{
循环:对物体每一面的每一点(x, y, z)
{
i)对(x, y, z)做透视投影变换,得到变换后的X、Y坐标(x*, y*);
ii)如果Z缓冲区中(x*, y*)对应单元的值小于z,则
{
a)将Z缓冲区中(x*, y*)对应单元的值置为z;
b)将帧缓冲区中(x*, y*)对应单元的值置为点
(x, y, z)的属性值(通常是亮度、颜色值或颜色查找表的索引值);
}
iii)如果Z缓冲区中(x*, y*)对应单元的值大于z,则
{
a)说明目前帧缓冲区中(x*, y*)对应单元的
所表示的物体上点比点(x, y, z)
更接近观察点,即点(x, y, z)应被消隐;
b)将Z缓冲区和帧缓冲区中(x*, y*)对应单元的值均保持不变;
}
}
}
4)循环:对屏幕上每一点(x*, y*)
根据帧缓冲区中(x*, y*)对应单元的值画出象素点。
}
---- Z 缓 冲 区 消 隐 算 法 简 单、 可 靠, 而 且 消 隐 和 表 现 效 果 很 好
。 但 需 要 的 内 存 容 量 大, 运 算 复 杂, 费 时。
---- 2 . 扫 描 线 法
---- 扫 描 线 法 是 对Z 缓 冲 区 法 进 行 改 进 而 派 生 出 来 的 消 隐 算 法
。 为 了 克 服Z 缓 冲 区 法 需 要 分 配 与 屏 幕 上 象 素 点 的 个 数 相 同
单 元 的 巨 大 内 存 这 一 缺 点, 可 以 将 整 个 屏 幕 分 成 若 干 区 域,
一 个 区 一 个 区 地 进 行 处 理, 这 样 可 以 将Z 缓 冲 区 的 单 元 个 数 减
少 为 屏 幕 上 一 个 区 域 的 象 素 点 的 个 数。 将 屏 幕 的 一 行 作 为 这
样 的 区 域, 便 得 到 了 扫 描 线 法, 又 称 为 扫 描 线Z 缓 冲 区 法,Z 缓
冲 区 的 单 元 个 数 仅 为 屏 幕 上 一 行 的 象 素 点 的 个 数。
---- 扫 描 线 法 的 形 式 化 语 言 描 述 如 下:
扫描线消隐算法
{
1)循环:从上到下对屏幕中每一条扫描线
{
i)将帧缓冲区对应行各单元的值置为背景色值;
ii)将Z缓冲区各单元的值置为Z坐标可能出现的最大值;
iii)循环:对每一物体
{
循环:对物体每一表面
{
如果当前扫描线与当前物体表面相交,则
{
循环:扫描线与当前物体表面的交点是成对的,
对每对交点之间的每一点(x, y, z)
{
A)对(x, y, z)做透视投影变换,
得到变换后的X、Y坐标(x*, y*);
B)如果Z缓冲区中(x*, y*)对应单元的值小于z,则
{
a)将Z缓冲区中(x*, y*)对应单元的值置为z;
b)将帧缓冲区中(x*, y*)对应单元的值置为点(x, y, z)
的属性值(通常是亮度、颜色值或颜色查找表的索引值);
}
C)如果Z缓冲区中(x*, y*)对应单元的值大于z,则
{
a)说明目前帧缓冲区中(x*, y*)对应单元的所表示
的物体上点比点(x, y, z)更接近观察点,即点(x, y, z)应被消隐;
b)将Z缓冲区和帧缓冲区中(x*, y*)对应单元的值均保持不变;
}
}
}
}
}
iv)循环:对屏幕上每一点(x*, y*)
根据帧缓冲区中(x*, y*)对应单元的值画出象素点。
}
}
---- 3 . 视 线 投 射 法
---- 视 线 投 射 法 的 基 本 原 理 是 把 物 体 的 二 维 显 示 图 像 看 成 是
从 眼 睛 到 物 体 的 视 线 把 物 体 的 可 见 点 投 射 到 显 示 屏 上 的 投
影。 该 算 法 的 形 式 化 语 言 描 述 如 下:
视线投射消隐算法
{
1)循环:对屏幕上每一象素(x*, y*)
{
确定经过视点和象素(x*, y*)的直线Ray;
判断直线Ray(x, y)与物体是否相交;
如果存在交点,则
{
a)求出直线Ray与物体的第一个交点(x, y, z);
b)交点(x, y, z)是可见点,其余交点都应消隐;
c)将点(x, y, z)的属性值(通常是亮度、颜色值或
颜色查找表的索引值)赋给象素(x*, y*);
}
}
2)循环:对屏幕上每一点(x*, y*)
画出象素(x*, y*)对应的属性值。
}
---- 4 . 极 值 检 测 法
---- 极 值 检 测 法 需 与 与 其 它 消 隐 算 法 结 合 适 用, 主 要 用 来 提
高 消 隐 速 度。 极 值 检 测 法 通 过 计 算 物 体 表 面 的 显 示 坐 标 的 极
大 和 极 小 值 来 判 断 这 两 个 表 面 是 否 存 在 重 叠。 如 果 一 个 表 面
的x 显 示 坐 标 的 极 大 值 小 于 另 一 个 表 面 的x 显 示 坐 标 的 极 小 值
, 则 这 两 个 表 面 不 重 叠, 可 以 按 任 意 顺 序 直 接 画 出。 否 则, 这
两 个 表 面 存 在 重 叠, 需 要 用 其 它 消 隐 算 法 进 行 消 隐 处 理。
---- 通 常 先 用 极 值 检 测 法 画 出 不 发 生 重 叠 的 表 面, 然 后 在 用
其 它 算 法 处 理 重 叠 的 表 面。
--
不在乎天长地久,就怕你从来没有!
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:210.231毫秒