• <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>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            碰撞檢測 小結

            轉載自:http://www.cnblogs.com/Yuri/archive/2007/07/28/834227.html

            http://yuri.cnblogs.com/


             

            Broad-phase碰撞檢測

            Sweep and Prune:
            1.將物體的AABB分離到三個坐標軸上。得到若干個區間。
            2.根據區間的終點坐標由小到大排序。
            3.逐個遍歷排序結果,當遇到一個區間的起始點的時候,就將這個區間放到一個列表中;當遇到一個區間的終點時,就將這個區間從列表中清除。
             當在列表中存在區間,而又遇到一個新區間的起始點時,則遇到的區間與列表中的所有區間重疊。
            4.如果一對物體在三個坐標軸上的區間都重疊,那么他們的AABB相疊。

            Mid-phase碰撞檢測

            碰撞檢測樹就是將要碰撞的網格分離成多個部分,并將這些部分按樹的結構組織起來。
            我的碰撞檢測樹就是一BVH樹,和標準的AABB碰撞檢測樹相比,AABB樹是2叉樹,我的樹的節點數是不定的。
            兩種建樹過程如下:

            AABB:

            1.計算三角形集合的AABB包圍體
            2.找出一個平面,這平面能最大限度的分割三角形集合(一般在中心即可),這個平面必須與坐標平面平行(因為包圍體是AABB)
            3.穿過這個平面的三角形按中點分配到平面一側,如果中點還在平面上,隨便分配
            4.將分出的這兩部分作為子節點繼續分割(步驟1),直到分出的部分只有一個三角形

                   我的碰撞檢測樹:
            1.計算三角形集合的包圍體
            2.計算三角形集合的幾何重心,將幾何重心視為原點,按三個坐標平面將三角形集合分成8部分
            3.穿過這個坐標平面的三角形按中點分配到平面一側,如果中點還在平面上,隨便分配
            4.如果有的部分中沒三角形,那么去掉它。如果只有一部分且這部分包含多個三角形,強行隨便的將這部分分成多部分(防止死遞歸)。
            5.將分出的n部分作為子節點繼續分割(步驟1),直到分出的部分只有一個三角形
            我的樹可能不如AABB樹平衡,可能性能稍差。

            包圍體有:

            包圍球
            AABB
            OBB
            ……

            注:
             碰撞檢測樹一般在物體定坐標系下建立出來
             可以根據情況,為不同節點選擇不同類型的包圍體,使得包圍體包圍得最緊湊

            碰撞檢測:
            一個幾何圖形vs樹
              按深度優先或廣度優先遍歷樹,對于非最末級節點,判斷幾何圖形是否和節點包圍體相交,如果相交那么繼續遍歷它的子節點。對于最末級節點,還要進行幾何圖形和最末節點所對應的三角形求交。這樣,遍歷完一次即可找到所有碰撞。

            注:
             1.碰撞檢測需檢測出碰撞點,碰撞法向量,和刺穿深度
             2.球和三角形碰撞:
              以下過程按順序執行,一旦相交就return,停止和這個三角形繼續檢測:
               (1).判斷球心與三角面垂直且過三邊的平面的位置關系,如果被包圍,那么直接判斷球心到三角面所在平面距離是否<=半徑
               (2).根據(1)的結果,如果球心在哪條邊外,那么試著和那條線段求交
               (3).判斷球心到三角形某頂點距離<=半徑
             3.球和棱、點碰撞,碰撞法向量為那個面在碰撞點的切平面的法向量
             4.通過更精確的包圍體測試,會遍歷更少節點,但更精確的包圍體測試一般會花更多時間。

            樹vs樹
              對于一對節點,判斷兩個節點的包圍體是否相交。如果相交,那么測試它們的子節點包圍體是否相交。
            如果有一個節點是最末級節點,它對應著一個三角形,另一個是一個非最末級節點,那么問題轉化為上面“一個幾何圖形vs樹”。
            如果兩個節點都是最末級節點,那么進行三角形求交。

            注:
             對于剛體,它們會轉動,轉動了的AABB可以用AABB加上一個剛體變換矩陣表示。也可懶一些,直接把樹放入全局坐標系下,更新樹。


            樹的更新:
              如果物體不是剛體,可能會形變,這就需要更新樹。一般自下而上的更新樹。先根據最末級節點對應的三角形,更新最末級節點。然后一級一級更新上面的節點,使它們的包圍體包住子節點。


            以后安排(先把想法記下來)
            物體破裂 :
            將物體網格表示成一張無向圖(不用鄰接矩陣表示),在壓強足夠大的地方細化網格,細化出的部分作為圖的一部分,然后從壓強足夠大的幾個頂點遍歷圖。遍歷時根據物體物理材質選擇圖的邊(第一條邊應選擇最和切向量正交的),將其并入斷裂線,必要時就細化網格,直到這條線首尾封閉。這樣做是因為不同材質的物體,其斷裂口有的光滑,有的粗糙,甚至有尖刺。這樣應該能生成一條滿意的斷裂線。然后取出子圖,成為分裂出的物體的網格的一部分。不過斷口的填充就暫無想法了……

            腳本:
            設想了一種托管腳本。先寫好腳本,經過編譯器將其編譯為自定的較低級中間語言,或者直接IL代碼。運行前加載時,對其進行JIT編譯,除了.Net的JIT以外,還有自己的一些,當然肯定是自己先處理后再交給.Net……這樣腳本最終就是本機代碼,執行速度比解釋型的快,而且異常也不用一下一下的考慮。
            一開始編譯為直接IL代碼時,不能直接轉為它的字節碼,而是自己規定的字節碼,但其指令還是一一對應的(就是把IL代碼用2進制形式表示了一下)。這主要是因為代碼中有一些東西,還不能直接轉為標準的IL字節碼

            最終應該可以構建復雜的物體,比如一個人,由Joint、剛體(骨骼和關節)和柔體(頭發和肥膘)組成。他做個什么動作要是碰到了什么倒是自然能模擬出來。不過他的行走,怎么維持重心不好說,我的想法是對已做好的動畫解析,將其數值微分,最后算出各部分的作用力……維持重心不管他用那些肌肉,維持重心的力 應該包括在里面……
            以前有外國人擬做過類似的東西,第六屆全國中小學電腦制作活動上還有即將得一得獎的抄過——botz,一個2D質點彈簧系統模擬程序,它的歐拉法積分不嚴密(或者說就不是),碰撞檢測就和邊界檢查了一下,但是要注意他的“肌肉”思想,質點彈簧系統組成機器人,然后肌肉伸縮運動,我這個應該和那個在這一點有著類似之處。更接近一點的東西就是Dr.Jan Bender的那些機器人了。
            當然稍微遙遠的東西別想得太多,畢竟還有不少東西未完成……

            posted on 2008-01-09 17:21 楊粼波 閱讀(1454) 評論(0)  編輯 收藏 引用

            久久精品国产亚洲77777| 伊人久久精品线影院| 久久国产AVJUST麻豆| 精品乱码久久久久久久| 国产精品无码久久久久久| 91精品国产91久久久久久青草| 亚洲AV成人无码久久精品老人| 色综合久久中文字幕无码| 久久无码人妻一区二区三区午夜| 久久棈精品久久久久久噜噜| 国产精品热久久毛片| 中文精品久久久久国产网址| 欧美va久久久噜噜噜久久| 久久精品夜色噜噜亚洲A∨| 久久A级毛片免费观看| 2021久久精品免费观看| 精品欧美一区二区三区久久久 | 色综合久久久久久久久五月| 欧美大战日韩91综合一区婷婷久久青草 | 久久国产精品一区| 久久精品无码一区二区无码| 国内精品久久久久久久久电影网| 思思久久99热只有频精品66| 久久久综合香蕉尹人综合网| 亚洲国产成人精品无码久久久久久综合| 久久久精品免费国产四虎| 亚洲精品高清国产一久久| 国产成人精品久久| 亚洲精品tv久久久久| 波多野结衣中文字幕久久| 久久精品一区二区影院 | 99久久精品国产综合一区| 久久婷婷五月综合成人D啪| 国产亚洲精品久久久久秋霞| 国产女人aaa级久久久级| 久久se精品一区二区| 国产精品一区二区久久| 国产精品美女久久久m| 亚洲午夜久久久久久久久久| 亚洲精品久久久www| 精品久久久久久久久久中文字幕|