當前位置:首頁 » 操作系統 » 導航網格演算法

導航網格演算法

發布時間: 2022-10-01 14:13:41

❶ 導航地圖,規劃路徑的原理

GPS

❷ unity test用的什麼演算法

並沒一種尋路適合所有場合,選擇都是基於需求而定的。

1. A* 演算法與貪婪演算法不一樣,貪婪演算法適合動態規劃,尋找局部最優解,不保證最優解。
A*是靜態網格中求解最短路最有效的方法。也是耗時的演算法,不宜尋路頻繁的場合。一般來說適合需求精確的場合。
與啟發式的搜索一樣,能夠根據改變網格密度、網格耗散來進行調整精確度。
使用的地方:
a. 策略游戲的策略搜索
b. 方塊格子游戲中的格子尋路

2. Unity 自帶的導航網格系統
Unity 內置了NavMesh導航網格系統,一般來說導航網格演算法大多是「拐角點演算法」。
效率是比較高的,但是不保證最優解演算法。
使用的地方:
a.游戲場景的怪物尋路
b.動態規避障礙

❸ 如何使用Unity3D做游戲中的尋路導航

現在的大部分mmo游戲都有了自動尋路功能。點擊場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。使用Unity來開發手游,自動尋路可以有很多種實現方式。
最近,一名海外開發者在博客中分享了自己用Unity引擎重做此前研發的Flash游戲尋路導航的心得,希望可以給大家帶來幫助:
大家好,最近我一直都在忙於把2006年的一款Flash游戲用Unity引擎重做出來,盡管我們在《Arrival in Hell》這個項目已經工作了一年多,但這里我希望從頭開始來寫開發者博客,因為這樣才能讓讀者們有比較完整的印象。
如果你們不太熟悉這款游戲的話,我這里做幾句話的介紹,我們在對2006年我和朋友Eardo Mojica以及Richard Rout三人研發的一款Flash游戲進行重做,這是一款點擊式操作的冒險游戲,我們將用Unity引擎進行重做。我做編程和研發游戲已經有十年左右的經驗,但這是我使用Unity引擎做的首款游戲。
在其他事情之前,我首先想要說的就是玩家角色的移動,由於這款游戲現在是真正的3D,因此玩家角色需要在3D空間里尋路。幸運的是,Unity引擎已經有了一些不錯的內置尋路功能,你只要打開窗口-導航(Navigation),選擇你想要使用的物體並且放到路徑中,然後把他們標記為『導航靜態(Navigation static)』這就會告訴Unity這些物體是靜態的(非移動),在尋路的時候應該被考慮進去。

把物體設置為『導航靜態』
這里我想要說一說這個功能有多麼強大。過去,我和大多數的游戲開發者一樣,都必須打造自己的尋路系統,我之前就做過一個A*tile和基於節點的尋路系統,在兩種情況下,特別是基於節點系統的尋路所產生的walls讓人非常頭痛。在基於節點的尋路系統中,你必須手動地把AI使用的點在兩者之間進行導航。Unity不僅做導航功能,還使用了導航網格(Navigation meshes),這比手動放置節點更有效率而且更流暢。更重要的是,你還可以一鍵重新計算整個導航網格,徹底擺脫了手動修改導航節點的做法。

我用基於節點系統做的失敗的尋路系統之一
在把靜態物體加入了導航網格之後,你可以選擇一系列的設定然後點擊bake按鈕,比如在考慮加入一堵牆之前確定坡有多陡以及台階應該多高。這樣你就可以獲得可以預覽的視圖。值得注意的一件事是,不要僅僅因為物體存在在場景中就意味著它是導航網格的一部分。比如說在這款游戲中,我不在乎玩家們是否會踩到瓦礫,所以我並沒有把任何瓦礫標識為導航靜態,這加快了當行網格的生成速度。

《Arrival in Hell》中其實是有數值的
在導航網格生成之後,我簡單地給玩家模型增加了一個NavMeshAgent組件,這款游戲現在就可以進行尋路了,唯一剩下的就是增加滑鼠輸入控制NavMeshAgent的目的地。

用NavMesh做的bake

NavMeshAgent設定
為了告訴NavMeshAgent導航我做了以下指令:
1.注意聽取滑鼠輸入
2.把滑鼠放進屏幕空間
3.把屏幕空間轉變成來自攝像頭的一束光
4.在光達到地面的時候把它移除
5.把NavMeshAgent的目的地設定到地板的對應位置。
C#代碼是這樣的:

可視化視圖下的目的地與路徑
這就解決了我這款游戲的大多數導航需求,唯一的例外就是導航網格由於游戲內的一些活動而發生改變的時候。比如第一個房間的們最開始是關閉的,後來當它打開的時候,當行網格需要更新反映此次變化,允許玩家從新開的們中走過去。我並沒有在游戲運行的時候rebake完整的靜態導航網格,而是使用了NavMeshObstacle組件,該組件可以讓你把尋路過程中的動態物體加進去,如果物體移動,Unity的尋路演算法就會根據實際情況而更新。

導航路徑會根據NavMeshObstacle的變化而自動發生改變

可視化視圖
所以,游戲尋路導航就這么做好了,這就是《Arrival in Hell》游戲中的導航工作原理,這一些只需要Unity內自帶的導航功能就可以完成了。

❹ ue4導航網格看不到綠色

按下P鍵。
先來新建一個場景,添加到場景里尋路體積,右邊世界大綱里就會出現這個體積的東西,但是我們發現現在按下P鍵,P是顯示尋路導航體積覆蓋面的顯示和隱藏功能。按下P後我們發現場景就會有綠色。
導航網格是AI行為中必不可少的,在其范圍內是AI可以執行相關行為的地方,而出了這范圍就無法再生效,根據支持的導航代理者類型,導航網格會生成不同的RecastNavMash以支持不同代理者。

❺ 什麼是網格演算法

網格化是解釋流程中構造成圖的比較重要的一步,演算法種類也比較多。在SMT中就列出了許多種演算法供選擇,當然每種演算法有自己的特點和適應性,所以在真正網格化操作時為了提高預測的精度需要選擇合適的演算法。如下為SMT中提供的幾種演算法簡單對比。

Collocated Cokriging
協克里金演算法
層位、斷層、網格、XYZ數據、層段屬性、鑽井分層(較好用於井數據與地震屬性匹配)

Cubic Spline
樣條插值
三維的層位、網格、斷層、XYZ數據

Flex Gridding
彈性網格化
層位、斷層、網格、XYZ數據、層段屬性、鑽井分層

Gradient Projection
梯度投影
二維、三維的層位、網格、斷層、等值線、XYZ數據(較好用於構造數據)

Inverse Distance to a Power
反距離加權
二維、三維的層位、網格、斷層、等值線、XYZ數據、層段屬性、鑽井分層(較好用於速度成圖)

Natural Neighbor
自然鄰點插值
XYZ數據、層段屬性、鑽井分層(較好用於非地震類數據)

Ordinary Kriging
普通克里金插值
XYZ數據、層段屬性、鑽井分層(較好用於滲透率成圖)

Simple Kriging
簡單克里金插值
XYZ數據、層段屬性、鑽井分層(較好用於滲透率成圖)

Universal Kriging
廣義克里金
XYZ數據、層段屬性、鑽井分層(較好用於滲透率圖件和有整體變化趨勢的數據)

這里對兩種演算法做個介紹:

1、SMT8.2版本中新出現的Flex Gridding 彈性網格化演算法

該演算法利用差分方程系統原理,產生的網格節點處數值需要滿足以下兩種原則:

. 內插面與實際數據產生的趨勢面一致或者很接近;

. 該面的RMS曲率值盡可能小。

如果在一個節點處應用每一種方程都計算差分的話,而且將鄰近點都考慮在內的話,其結果會形成一個組合,但越遠的點影響越弱、越不直接。因此,在計算時都假設鄰近節點為常數,每個方程就會得到一個網格數值。如此重復應用於其它節點處。這樣可以解決單個節點的問題,我們將方程稱為「調和器」。該方法產生的曲率面會趨於最小,而且逼近實際數據。

由於每個節點在進行調和濾波計算時都需要一個局部的調和器,網格節點多時就會有許多次迭代計算過程。迭代次數差不多為N的e次方(N為數據列/行數)。因此初始網格一般時非常小的。

2、Collocated Cokriging 協克里金插值

協克里金插值與克里金演算法原理基本一樣,都是通過差異比較來計算網格數值,同時產生方差圖,但是該方法假設事件都是多屬性的,可以利用第二種協數據(如層位)輔助第一種主數據進行稀疏數據點(如井控制點)的內插。

協克里金插值利用第二種協數據指導主數據的網格化,可以提高克里金插值的准確性。該演算法中斷層可以參與運算。在使用時用稀疏數據(如井數據)作為主數據,另外一種密集分布數據作為協數據。

在具體計算中網格點處主數據有值的地方都用主數據的值,如果網格點處沒有值時則用協數據作為輔助進行計算。並且會同時產生一個方差模型。

最終的協方差網格結果為主數據進行克里金插值,同時受協數據影響。

因此,如果主數據為密集分布的數據,計算產生的網格也會接近主數據。例如,數據中包括測井解釋的孔隙度數據(稀疏分布),從地震屬性中預測的偽孔隙度數據(密集分布)。數據單位是一致的,但來源可能不一樣。

對於這種情況下協克里金插值就是一種很好的網格演算法,還可以建立起振幅與孔隙度之間的關系。

在應用時有以下注意事項:

1)在主數據為稀疏分布,協數據偽密集分布時應用效果最好。

2)如果主數據與協數據之間有一定聯系的話效果最好。

3)數據類型最好一致。

❻ 手機端APP界面導航布局中使用的九宮格 布局形式屬於

手機端APP界面導航布局中使用的九宮格布局形式屬於網格組合。
導航是APP設計時要著重考慮的,常見的APP框架有列表、網格、屏幕輪顯、標簽導航、tab導航、抽屜導航、卡片、泳道、堆疊組合。
網格就是把應用圖標、縮略圖、功能圖標等內容根據水平方向和垂直方向劃分所構成的輔助線進行布局。在界面設計中,九宮格這種類型的構圖更為規范和常用,用戶在使用過程中非常的方便,應用功能會顯得格外的明確和突出。

❼ unity導航網格里哪個函數是獲取路線的

在Unity3d中,我們一般常用的尋路演算法:
1.A*演算法插件
與貪婪演算法不一樣,貪婪演算法適合動態規劃,尋找局部最優解,不保證最優解。A*是靜態網格中求解最短路最有效的方法。也是耗時的演算法,不宜尋路頻繁的場合。一般來說適合需求精確的場合。
與啟發式的搜索一樣,能夠根據改變網格密度、網格耗散來進行調整精確度。
使用較好的地方:
a.策略游戲的策略搜索
b.方塊格子游戲中的格子尋路
2.U3D自帶的導航網格系統
U3D內置了NavMesh導航網格系統,一般來說導航網格演算法大多是「拐角點演算法」,具體大家可以去查下。效率是比較高的,但是不保證最優解演算法。
使用較好的地方:
a.游戲場景的怪物尋路
b.動態規避障礙
3.WayPoint尋路插件
速度最快,但相應來說表現也非常局限,它常常走「Z」型的軌跡,並不適合復雜場合的使用。例如它不能根據寬度、高度、路徑點耗散等來改變行進路徑。
使用較好的地方:
a.塔防怪物行進路徑
b.AI巡邏路線

熱點內容
html文件上傳表單 發布:2024-09-17 03:08:02 瀏覽:783
聊天軟體編程 發布:2024-09-17 03:00:07 瀏覽:725
linuxoracle安裝路徑 發布:2024-09-17 01:57:29 瀏覽:688
兩個安卓手機照片怎麼同步 發布:2024-09-17 01:51:53 瀏覽:207
cf編譯後沒有黑框跳出來 發布:2024-09-17 01:46:54 瀏覽:249
安卓怎麼禁用應用讀取列表 發布:2024-09-17 01:46:45 瀏覽:524
win10設密碼在哪裡 發布:2024-09-17 01:33:32 瀏覽:662
情逢敵手迅雷下載ftp 發布:2024-09-17 01:32:35 瀏覽:337
安卓如何讓軟體按照步驟自動運行 發布:2024-09-17 01:28:27 瀏覽:197
Z包解壓命令 發布:2024-09-17 01:27:51 瀏覽:221