午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

基于導(dǎo)航網(wǎng)格的A星尋路(Navigation mesh)

 sofes 2012-02-09

最近花了幾個月的時(shí)間實(shí)現(xiàn)了導(dǎo)航網(wǎng)格尋路和導(dǎo)航網(wǎng)格自動生成。

□導(dǎo)航網(wǎng)格數(shù)據(jù)結(jié)構(gòu)定義

    由于數(shù)據(jù)之間有著層級關(guān)系,所以采用XML進(jìn)行定義。
    navmesh基本元素:頂點(diǎn)(Verts)+可走邊(Edges)+凸多邊形(Polys)

□導(dǎo)航網(wǎng)格尋路

   1.以凸多邊形為節(jié)點(diǎn),以可走邊為relation,進(jìn)行A星尋路。

   2.尋路結(jié)果使用LOS算法進(jìn)行路徑平滑,其中視線采用Z軸橫切面而不是直線來實(shí)現(xiàn)。

   3.尋找凸多邊形。先使用八叉樹進(jìn)行空間劃分,然后根據(jù)點(diǎn)跟AABB盒相交進(jìn)行查找。

□導(dǎo)航網(wǎng)格自動生成

   主要是提供

   1.Cleaner:合并重復(fù)的頂點(diǎn)(即焊接頂點(diǎn))、刪除共線情況、刪除沒有用到的頂點(diǎn)、刪除沒有的poly(即刪除不規(guī)范、刪除面積過?。?、重置頂點(diǎn)ID和Poly ID。

   2.MergingPolys:合并多邊形,包含對相同邊進(jìn)行合并和32合并。

   3.PolygonClipping:多邊形剪切,地形數(shù)據(jù)必須是三角網(wǎng)格(若不是,可以使用Triangulate三角化)。輸入障礙物后,使用包裹法(Jarvis步進(jìn)法)進(jìn)行構(gòu)造凸多邊形,然后再對各個三角網(wǎng)格進(jìn)行剪切操作。

    4.Triangulate:三角化。

    5.GeneratingEdges:生成邊操作。

    6.Deleter:刪除指定頂點(diǎn)、刪除指定poly、刪除指定Edge

    7.BoudingBoxCreater:障礙物的輸入可以使用AABB盒,但只對有連接關(guān)系的三角網(wǎng)格進(jìn)行生成包圍盒,如一座橋上的兩個柵欄,必須為它生成2個AABB盒,而不能只生成一個。

    8、NavMesh:導(dǎo)入、導(dǎo)出、遍歷操作等
    9、Poly:遍歷操作、頂點(diǎn)刪除操作等

 

截圖:

1、(未路徑平滑)

image

 

2.路徑平滑后

image

所花時(shí)間:0.412872 ms(跟網(wǎng)格數(shù)量有關(guān))

 

參考資料:

1. 焊接頂點(diǎn),《3d數(shù)學(xué)基礎(chǔ):圖形與游戲開發(fā)》14.4.2節(jié)

2. 32合并, 《人工智能游戲編程真言》里面有一篇 “4.3 建立接近最優(yōu)的導(dǎo)航網(wǎng)格”專門介紹如何建立 基于導(dǎo)航網(wǎng)格的3d尋路,4.3.6節(jié)。

3. http://www./archives/000152.html

4.生成邊: http://www./code/edges.php

5.根據(jù)點(diǎn)生成三角網(wǎng)格,delaunay算法, http://www./tmp/delaunay.htm

http://local.wasp./~pbourke/papers/triangulate/

6.幾何操作:《計(jì)算機(jī)圖形學(xué)幾何工具算法詳解》

7. 。。。。。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多