当前位置:文档之家› 实验四:基于BSP技术的室内场景渲染和碰撞检测

实验四:基于BSP技术的室内场景渲染和碰撞检测

实验四:基于BSP‎‎‎碰撞检测姓名:班级:学号:一、实验目掌握BSP‎原理;熟悉Ogr‎e中基于S P‎‎法。

二、实验仪器pc、visua‎l studi‎o 2010、实验原理 ‎过程//网上检索B‎S P相关//利 Ogr‎e实现基于B SP‎ 程‎实现 ‎‎‎A PI进行详细说明1、BSP相关‎(1)BSP‎BSP Trees‎‎B i nar‎y Space‎ Parti‎o ning‎trees‎ 二 ‎ 二 ‎。

: ‎; 中‎光照运算;BSP‎预 。

(2)BSP原理‎顺 判定BSP:二 ‎。

‎‎‎‎‎‎ 。

‎‎定过 ‎‎‎ 一 ‎B S P。

‎上 于 ‎件Z Buf‎f er‎后向前画。

‎于‎Z B uff‎e r‎前向后 ‎ 于后画 ‎‎遮挡而 Z‎B uffe‎r CUT 而 ‎高。

筛选优化‎进行顺 判‎定‎ 中 ‎上‎‎ 过‎筛选。

PVS‎减外BSP‎过‎进行进一 ‎筛选优化‎。

理‎解Po‎r tal: ‎‎。

Porta‎l‎于 一‎ 进行 ‎ 算 算 ‎;二 法‎‎集合PV‎S‎候 同 ‎‎‎ 关候 ‎‎PVS‎ 关 ‎ 。

前 ‎D 候‎BC‎过PVS‎测试 A一 ‎‎C U T。

(3)BSP‎BSP‎流程:1) ‎‎‎PVS‎信息;2) ‎;3)‎‎判 ‎‎‎‎理;‎ 中 判 上级 ‎。

4) ‎‎‎‎‎ 理( ) 后 ‎理 ; ‎ 理 ‎ 后 理‎ ;5) ‎ 判 PVS‎‎中‎ 进‎行。

2、程 实现 ‎‎相API‎ 详细‎说明多边 A 一 顶 位于多边 组 一 说多边 A位于多边 “前 ”参考左图。

想象一 一 盒 6 组 朝向盒说盒 一“凸多边 ”朝向盒 盒 “凸多边”。

图1.2让 一 何确定一 图元集合 否一 “凸多边 ” 伪算法 :(1) -参 :o n –确定一 D 中 相 位置 参考多边 。

–待确定 D 中 。

返 值:位于多边 哪一边。

功 :确定一 位于 多边定义 哪一边。

n ce)else if (n ce)DN T(2) -N T参 :o n1 – 来确定 它多边 否“前 ” 多边 。

o n2 –检测 否 一 多边“前 ” 多边 。

返 值:二 多边 否 一 多边 “前 ”。

功 :检测 二 多边 一 顶 否 一 多边 “前 ”。

O N-I o n2)o n2-N T)n true(3) -X-SET参 :– 来检测 否“凸多边 ” 图元集合。

返 值:集合 否 “凸多边 ”。

功 :相 于集合中 它多边 检 一 多边 否位于它多边 “前 ” 任意 多边 满 规 集合“凸多边 ”。

--)for h ()for h ()-[j]))n true-N T中 进行 意味着 多边 位于多边 B“前 ”你 想 认 多边 B一定位于多边B“前 ”。

示 一 。

图1.3图1.3中 多边1位于多边2“前 ” 顶p3、p4位于多边2“前 ”而多边 却 位于多边 1“前 ” 顶 2位于多边1“后 ”。

e e{o de //}e{e e Tree // 接 属 层次e r // 位于 多边// 右h ild // 左[] // 中 多边 集合}y gon{1 // 多边 顶 13 // 多边 顶 23 // 多边 顶 3}现 你 一 多边 顶 来定义件加速 来多边 进行 。

多边 集合小 集合 多 法 你 任意选择 中 一 后 它来 中 多边 进行 把位于 多边 保存 右 中而位于 多边 保存左 中。

法 缺 非常明 想选择一 中 多边 相等 集合 非常困难 中 无 选择 。

何 集合中选择一 最佳 呢?问题给一 适 解决案。

现 已 一 -N T 它 功 确定一 多边 否位于 它多边。

现 做 修改 它也 确定一 多边 否横跨过 它多边 定义 。

算法 :(4) L ATE-SIDE参 :o n1 –确定 它多边 相 位置 多边 。

o n2 –确定相 位置 多边 。

返 值:多边 2位于多边 哪一边功 :过 一 多边 二 多边 上 一 顶 进行检测。

顶 位于 二 多边多边 2 认 位于多边 “前 ”。

二 多边 顶 位于 一 多边多边 2 认 位于多边 “后 ”。

二 多边 顶 位于一 多边 上 多边2 认 位于多边 。

最后一 顶 即位于 位于 多边 2 认 横跨过多边 1。

L-o n1, Pol o n2)e = 0o n2-N T)then e + 1I FY-D)if (Num e = 0)N Te > 0)De = 0)I NG上 算法也给 解答 一 问题 一 多边横跨过 何进行 理 上 算法中 多边多边 解决画家算法中 问题:循环覆盖 多边 相交。

图 示 多边 何进行 。

图1.4图1.4 示 多边 1 而多边 横跨过多边1 图右边 示 多边 2、3多边 2位于“前 ”而多边 位于 “后 ”。

建立一 B SP首 确定 问题 何保证二 衡 意味着 于 一深度而言 太 差异 同 一 左、右 限制 次 。

一次 会产 多边 建立B SP产 太多 多边 图 加速 会加 器 担 而降低 速。

同 一 衡 二 进行遍历 会耗费许多无谓 。

确定一 合理 次 便于 一 衡 二 同 减少 多边 产 。

码示 何过循环多边 集合来 最佳 多边 。

(5) --O N参 :– 于 找最佳多边 集合。

返 值:最佳 多边 。

功 :指定 多边 集合进行搜索 返 最佳 集合 多边。

指定 集合 一 “凸多边 ” 返 。

E-I NG-P)--))Y GONY GONI TYo n = 0循环 找集合 最佳 。

Y GON)for each 多边算 前多边 定义 、 横跨过多边 。

g = 0for each 多边 t P1L ATE-SIDE(P1, P2)N T)e e + 1D)e + 1I NG)g + 1算 前多边 集合 多边 值。

if e)i on eelsee前多边 结 。

前多边少 多边同 后 集合值 接受 保存 前 多边 候选 。

前多边 最佳 一 相同 多边而 后 集合 值 前多边 作 候选 。

n &&s ||s &&o n))n = P1gi on过 一预 定义常 来减少 接受 最小 值。

En四、实验结五、实验心过 次实‎验 目 ‎于掌握B‎S P 原理熟悉Og‎r e中基于B SP‎‎法。

BSP原理‎ :建立BSP‎Trees‎ 最 想法‎ 一 ‎图元 集合‎ 集合 ‎ 一 ‎ 后 ‎图元集合‎ 小 ‎集合 意 ‎集合 ‎凸多边 。

意味着 ‎集合中任一‎多边 ‎位于相同集‎合中 它多‎边 前 。

BSP‎现解决 遮‎挡判定 ‎ 筛选 ‎问题 件ZBu‎f fer‎现后 筛选‎ 中 ‎;而 于 ‎筛选 ‎ 外‎ 过P‎o rtal‎P VS‎来实现 ‎解 ‎ 优缺 ‎P orta‎l复杂 PVS‎; 次实验 ‎B S P流程也 ‎一定 认‎识Ogre‎ 识 学 ‎强化。

六、 码//BSP.hf_H__e_H__d e m ple.h"d e.h"#if O RM ==d e i ls.h"p ace Ogre;p ace i tes;: c m ple{c:(){["] = "BSP";[n"] = e r. "3.";[n ail"] = _bsp.png";[o ry"] = t ry";}i ns(){;b ack(e r");n;}c ted:void(){i on and map name f g filecf;-t h(m ap.cfg"));(v e");("Map");#ifi ve to the app,d ei onif:i ve, "/", )) i ve dirsa th() + "/"i ve);:i ve, "Zip",(), true);}void g er(){-g er("); //e}void c es(){.e for use with the br at 0.7. */-g Bar(1, 1, 0);o n();e Mgr);());(), fals);-g Bar();}void(){e so n();r oup(rgm.g());());}void V iew(){V iew();work-a nce(4);-n ce(4000);-t(true);s-(true Z);-e(90));-i on);-n);-d(350); r}g mMap;};//BSP.cppd e i n.h"d e"BSP.h"p ace Ogre;p ace i tes;fi n* sp;e* s;n"C"r t void u gin(){s = new;-f o()["] + e");-m ple(s);g in(sp);}n"C"r t void g in(){(sp);E sp;e s;}。

相关主题