首先。先介紹下delta3d的ai大體狀態機制。其主要分為三種基類iconditional,operator,istatevariable。
iconditional作為條件,通過從維護全域性狀態的worldstate中獲得狀態資訊來判斷條件是否成立,
operator則是具體行為,同樣他需要通過worldstate中獲得狀態資訊來對狀態進行改變。 最
後istate
variable就是不同狀態的具體資訊。
現在我們從乙個例子開講,例子主要講的是。乙個人為了填飽肚子,
首先會去打**問奶奶做什麼菜。然後去超市把材料買了,
最後把菜做出來。然後吃掉填飽肚子。
現在我來介紹一下planner,和plannerhelp的基類。
plannerhelp主要維護了乙個operator的list的,乙個當前的狀態。
worldstate是基類用來維護,全部的狀態的。最後就是上述的倆個重要元素。remainingcost
是控制當前執行到哪一狀態的方法,isdesiredstate是維護最期待狀態的。
在本例子中他就是保持我們的npc不要餓到。
planner維護了乙個plannerhelp和乙個對planner的配置方法,plannerconfig。
這裡不再具體介紹。接下來我具體介紹iconditional。
像我在前文說的。iconditional是條件,當他滿足時則執行operator。
然後是operator
然後是istatevariable他維護了關於選單的具體資訊。
最後要做的就是將上述設計好的operator註冊到operatorlist中,以及istatevariable註冊到worldstate中。
就可以執行了如圖
關於例子的**。在delta3d的原始碼中可以找到。
Delta3D 原始碼 之 dtCore Base
dtcore base解析 table of contents 1 dtcore base類 1.1 概述 dtcore base主要作用 1.設定訊息結構messagedata 2.作為收發訊息的基類,乙個類要想在onmessage中接收別類發來的訊息,就要繼承base base class to...
delta3d與ode物理引擎的結合。
使用delta3d有些日子了,對物理引擎這塊沒有細看過,最近研究了一下。主要分為兩大部分,第一在dtcore中對ode的封裝,第二通過dtphysics,使用pal phys abstract layer 對三種物理引擎 bullet ode phys的封裝。這裡先介紹下dtcore中對delta3...
Halcon中的3D技術
對於檢測一些產品的3d資訊,我們通過3d相機能獲取其點雲資料或一張帶有高度資訊的影象。這邊我們用smartray相機,獲取到一張16位的png影象。實際上就是一張高度資訊圖。這邊x y縮放比例為0.019,z方向為0.0016,意思就是你xyz乘這係數就是相對距離。在那個相機軟體中能看到如上的3d圖...