青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請(qǐng)移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 305531
  • 排名 - 84

最新評(píng)論

閱讀排行榜

最近閱讀了《GAME PROGRAMMING GEMS6》,頗有收獲,以筆記之。

首先是GENERAL PROGRAMMING SECTION。

1.4Geographic Grid Registration of Game Objects
這篇文章講述的內(nèi)容主要是用來解決Line-of-Sight(在公司里稱視野表)問題的。原理很簡(jiǎn)單,而且在公司內(nèi)也很普遍了,就簡(jiǎn)單的說了。
游戲中有大量的角色,這些角色分布在各處,不斷的移動(dòng),每個(gè)角色都需要考慮它能看到誰,應(yīng)該和誰交互,這就是視野表問題。
在沒有任何數(shù)據(jù)結(jié)構(gòu)的支持下,建立每個(gè)對(duì)象的視野表需要對(duì)所有其他對(duì)象進(jìn)行檢測(cè),因此有N個(gè)對(duì)象的話,程序復(fù)雜度就是O(n^2)。
Geographic Grid是一個(gè)正方形。將一個(gè)場(chǎng)景劃分出一組grid,每個(gè)對(duì)象除了自身坐標(biāo)外,還需要一個(gè)grid坐標(biāo),并將自己注冊(cè)到那個(gè)grid上。當(dāng)對(duì)象移動(dòng)后,需要從原來的grid中刪除,并注冊(cè)到新的grid下。
每個(gè)對(duì)象的視野表,簡(jiǎn)單的實(shí)現(xiàn)下,也就是周圍9個(gè)或25個(gè)grid中包含的對(duì)象。
在文章里,grid是正方形,一個(gè)同事提出了六邊形的想法,六邊形一個(gè)最出色的地方就是到各個(gè)方向的距離相等。不過比較不好的地方就是grid坐標(biāo)是非齊次的,并且是3元的,使用起來要轉(zhuǎn)換,并且挑戰(zhàn)人類本能上熟悉的2元齊次坐標(biāo)系。

1.5BSP Techniques
把BSP技術(shù)放在通用編程這章,看來在quake出現(xiàn)后,BSP已經(jīng)是一種通用技術(shù)了。
文章里介紹了使用BSP的的幾個(gè)方面,我會(huì)逐一介紹。

(a)Convex Leafy BSP-分割場(chǎng)景
關(guān)鍵字是凸包(凸面體)。這種分割方式,要求每個(gè)BSP-Node的front-node如果是葉子的話,那么就必須是凸包。
算法過程如下:
(1)從輸入的所有多邊形中挑出一個(gè)分割平面,將構(gòu)造分割平面的多邊形添加到front-list中
(2)根據(jù)多邊形和分割平面的前后位置關(guān)系,將所有多邊形分別添加到front-list和back-list中。
(3)和分割平面攪和在一起的多邊形,進(jìn)行split,并將拆分的兩部分分別添加到front-list和back-list中
(4)如果front-list中的所有多邊形構(gòu)成一個(gè)凸包的話,那么front-list中的所有多邊形將添加到當(dāng)前節(jié)點(diǎn)的front-node中,并作為一個(gè)葉子節(jié)點(diǎn)存在,不在繼續(xù)分割。
(5)不滿足上一條件的front-list和back-list(無條件),繼續(xù)遞歸的重復(fù)這個(gè)算法過程。也就是說,如果是front葉子,必然是凸包,否則就只能是中間節(jié)點(diǎn),而back葉子就是solid(書上這么說的,但是不能很好的翻譯出solid的意思)

(b)Convex,Leafy BSP Portal Generation
這里簡(jiǎn)單說明了如何自動(dòng)生成portal:
(1)對(duì)每?jī)善~子,當(dāng)然是指凸包的葉子,判斷葉子之間是否相交
(2)如果兩片葉子相交,則找到兩片葉子的第一個(gè)共同父節(jié)點(diǎn),此父節(jié)點(diǎn)的分割平面就是未經(jīng)裁剪的portal。
(3)這里不得不說說找兩個(gè)節(jié)點(diǎn)的共同父節(jié)點(diǎn)的算法,因?yàn)闀餂]提,我也沒想出來,后來問了一個(gè)同事,才知道可以根據(jù)節(jié)點(diǎn)的層次信息向上遞推出結(jié)果。
(4)最后,就是計(jì)算原始的portal和兩個(gè)葉子節(jié)點(diǎn)的交集,這個(gè)交集也就是最小的portal了。

(c)Convex,Leafy BSP Potentially Visible Sets
生成PVS的第一步是復(fù)制portal,接下來是計(jì)算兩兩portal之間是否可見,如果可見則意味著從一個(gè)portal可以看到另一portal相關(guān)聯(lián)的葉子。
至于如何判斷兩兩portal之間是否可見,無非就是射線檢測(cè)法之類的。
每個(gè)葉子都有一個(gè)pvs數(shù)組,用來標(biāo)記是否可以看到其他葉子,每個(gè)葉子根據(jù)編號(hào)占據(jù)其中1bit。怎么算編號(hào)在bit中的位置不用教了吧,一除一模,像quake那樣優(yōu)化的話,也就是
pvs[ i >> 3 ] & ( 1 << (i&7) )

(d)Render
(1)首先是計(jì)算camera當(dāng)前所在的葉子,如果不是上次camera所在的葉子,則需要更新能渲染到的節(jié)點(diǎn)。更新步驟如下:
(2)將渲染幀數(shù)值+1,然后對(duì)每一個(gè)當(dāng)前葉子能看到其他葉子(用PVS數(shù)組判斷),將渲染幀數(shù)值設(shè)置到每一個(gè)可以看見的葉子節(jié)點(diǎn)和其所有父節(jié)點(diǎn)上,最后才開始執(zhí)行渲染。
(3)渲染從根節(jié)點(diǎn)開始,渲染每個(gè)幀值等于系統(tǒng)渲染幀值的節(jié)點(diǎn)(當(dāng)然,少不了可視檢查了)。
(4)如果camera在節(jié)點(diǎn)分割平面前,則先渲染front-node,然后渲染back-node,否則反之。
(5)因此,整個(gè)渲染步驟,其實(shí)是先標(biāo)記出所有會(huì)被渲染的節(jié)點(diǎn),然后從根節(jié)點(diǎn)遞歸的按序渲染所有可渲染的子節(jié)點(diǎn)的過程。


今天就先寫到這里吧。
沒想到寫東西其實(shí)挺累的。

posted on 2007-11-24 21:57 LOGOS 閱讀(1608) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 《GAME PROGRAMMING GEMS6》讀書筆記

FeedBack:
# re: 《GAME PROGRAMMING GEMS6》讀書筆記-2 2009-03-30 16:32 飯中淹
用小方格子來拼成六邊形,然后通過查表方式來進(jìn)行坐標(biāo)轉(zhuǎn)換。
  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久久久久久欧美精品| 亚洲国产精品成人综合| 欧美日韩91| 麻豆精品视频在线观看视频| 久久aⅴ国产欧美74aaa| 洋洋av久久久久久久一区| 亚洲国产精品成人| 国产日韩在线一区| 国产精品一区二区三区乱码| 国产精品视频不卡| 91久久精品美女| 一区二区欧美激情| 欧美制服丝袜第一页| 久久综合婷婷| 亚洲一区二区视频在线| 噜噜噜噜噜久久久久久91 | 亚洲一区二区三区免费观看| 久久精品国产第一区二区三区最新章节| 久久久999国产| 亚洲综合二区| 国产精品久久久久毛片大屁完整版| 国内精品亚洲| 午夜精品一区二区三区在线| 久久夜色精品国产亚洲aⅴ| 99国内精品| 欧美午夜精品一区| 亚洲精品美女在线观看播放| 快播亚洲色图| 久久久精品国产一区二区三区| 国产精品入口夜色视频大尺度 | 国产日韩欧美在线观看| 亚洲天堂男人| 亚洲一区欧美一区| 国产精品无码永久免费888| 亚洲小说欧美另类婷婷| 一区二区三区产品免费精品久久75| 蜜臀av一级做a爰片久久| 久久精品国产亚洲5555| 欧美午夜视频一区二区| 99re国产精品| 亚洲免费av网站| 欧美日韩一区二区在线观看 | 欧美xxx成人| 亚洲精一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产专区精品视频| 欧美福利视频| 国产精品久久久久9999| 亚洲影院色无极综合| 亚洲主播在线观看| 亚洲国产欧美在线人成| 99精品国产高清一区二区| 国产视频久久网| 亚洲精品久久7777| 国产九九精品| 日韩视频在线免费| 亚洲精品国产精品国自产观看 | 亚洲精品乱码久久久久久黑人| 欧美三级乱码| 日韩亚洲在线观看| 亚洲伦伦在线| 美女图片一区二区| 裸体女人亚洲精品一区| 国产精品久久午夜| 亚洲日韩中文字幕在线播放| 国产日韩精品一区二区三区| 亚洲日本电影在线| 亚洲精品无人区| 欧美一区二区视频在线| 欧美激情精品久久久久久免费印度| 亚洲欧美视频| 国产精品一区二区在线观看不卡| 亚洲激情啪啪| 中文日韩在线| 国产亚洲精品久久久久婷婷瑜伽 | 欧美日本国产视频| 亚洲高清视频一区| 一区二区电影免费在线观看| 欧美日韩国产不卡在线看| 亚洲激情偷拍| 亚洲制服av| 国内精品久久国产| 欧美精品成人| 久久久精品999| 亚洲免费观看| 久久久一区二区| 99精品国产福利在线观看免费| 欧美激情国产日韩| 欧美在线高清视频| 最新中文字幕一区二区三区| 亚洲综合首页| 亚洲国产一区二区三区在线播 | 国产精品99久久久久久www| 欧美一区二区三区视频在线| 91久久精品一区二区别| 国产精品久久久久久久午夜片| 久久久亚洲精品一区二区三区| 亚洲国产精品一区二区www| 欧美一区国产二区| 亚洲欧美在线免费| 中日韩美女免费视频网站在线观看| 久久一区二区精品| 欧美在线三级| 国产精品日韩精品| 久久久午夜视频| 亚洲字幕在线观看| 一区二区三区四区五区精品| 亚洲国产视频a| 欧美激情精品久久久久久久变态| 欧美影视一区| 欧美在线一二三四区| 亚洲视频在线观看网站| 亚洲天堂久久| 欧美在线free| 开心色5月久久精品| 欧美1区3d| 一区二区日韩精品| 中文久久乱码一区二区| 一区二区三区高清| 欧美在线不卡视频| 免费日韩精品中文字幕视频在线| 蜜臀av国产精品久久久久| 欧美精品在线播放| 国产欧美一区二区三区在线老狼 | 欧美视频在线一区二区三区| 欧美午夜寂寞影院| 激情五月婷婷综合| av成人激情| 久久久久国色av免费观看性色| 欧美成人一区在线| 亚洲免费中文字幕| 欧美日韩精品久久久| 国产亚洲人成a一在线v站| 亚洲精品日本| 裸体一区二区三区| 一本综合久久| 欧美片在线观看| 在线观看亚洲精品视频| 性亚洲最疯狂xxxx高清| 亚洲精品国产精品国产自| 性久久久久久久| 亚洲大胆在线| 久久久精彩视频| 伊人一区二区三区久久精品| 欧美一区影院| 亚洲免费视频成人| 国产精品日本一区二区| 99re视频这里只有精品| 亚洲清纯自拍| 欧美午夜剧场| 久久爱www久久做| 午夜精品久久久久久久99樱桃| 国产精品久久福利| 久久精品国产亚洲精品| 欧美在线黄色| 亚洲高清在线精品| 日韩一级欧洲| 国产欧美日本在线| 乱中年女人伦av一区二区| 久久久久一本一区二区青青蜜月| 国产一区二区日韩精品| 欧美sm视频| 欧美日韩综合视频网址| 久久激情五月丁香伊人| 欧美成人福利视频| 午夜亚洲影视| 欧美国产乱视频| 欧美在线影院| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲精品一区二区三区婷婷月| 夜夜爽99久久国产综合精品女不卡| 国产精品久久久久久久久| 久久精品视频一| 国产精品久久久爽爽爽麻豆色哟哟| 久久精品首页| 国产精品区二区三区日本| 欧美a一区二区| 精久久久久久久久久久| 亚洲一区免费视频| 亚洲理论在线| 狼人社综合社区| 欧美成人午夜激情| 国产亚洲人成网站在线观看| 亚洲美女啪啪| 亚洲一区三区视频在线观看| 久久精品国产999大香线蕉| 亚洲国产成人av| 欧美伊人久久大香线蕉综合69| 亚洲美女黄色片| 欧美日韩福利在线观看| 亚洲国产美国国产综合一区二区| 黑人巨大精品欧美一区二区| 午夜一区不卡| 久久精品伊人| 亚洲黄一区二区| 欧美精选午夜久久久乱码6080| 欧美激情亚洲自拍| 亚洲一区二区免费在线| 国产精品美女久久久| 欧美伊人久久久久久午夜久久久久|