999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Boids算法在Unity3D開發平臺中模擬生物群組行為中的應用研究

2019-06-05 02:51:54王永霞
網絡安全技術與應用 2019年5期
關鍵詞:規則策略

◆王永霞

Boids算法在Unity3D開發平臺中模擬生物群組行為中的應用研究

◆王永霞

(山西經濟管理干部學院 山西 030000)

本文結合Unity3D開發平臺,對Boids算法在生物群組行為中的模擬應用展開了深入研究。并針對群組中移動軌跡隨機更新的復雜行為模擬,提出了Boids算法的改進策略,重點解決了群組行為的隨機更新問題。

Unity3D;3D模擬;群組行為;Boids算法

0 引言

Unity3D是一款3D模擬軟件開發引擎,基于Unity3D實現組群行為模擬控制,其提供有典型的算法參考模型是基于Craig Reynold(逃出克隆島)模擬場景的群組行為示例[2]。Boids算法就是在Craig Reynold中被首次提出的。

Boids算法中每個boid都會應用群組行為的三個規則[3]。分離規則,保證相鄰的boid之間能夠保持適當的距離,不會發生擁擠與碰撞;隊列規則,保證了群組在移動速度和移動方向上對各個boid的有效約束;凝聚規則,對boid的移動位置進行約束,避免其脫離群組行為的控制范圍。通過規則的應用,模擬場景生成的若干boid,會自動形成群組。

1 Boids算法設計

在Boids算法設計中首先會創建一個群組的核心節點,再通過核心節點來生成其他的群組成員,并對其進行行為約束。也就是說在Boids算法中主要包括兩個被控制對象:群組的領導者(核心節點FlockBoid)與其他boid。當群組的領導者的移動行為發生變化,boid也將隨之進行調整。設計思路為:首先由FlockBoid動態生成很多個boid,然后在每個boid上實現群組規則。其中分離規則用于依次檢查boid的間距,并相應地調整速度;隊列規則通過群組的平均速度與航向、boid的隨機速度,獲得當前boid的最速度與角度;凝聚規則是以FlockBoid為中心,預設群組的凝聚范圍和FlockBoid與各個boid的之間的向量值,用于更新當前boid的移動速度與方向。

2 Boids算法實現

Boids算法主要是運用空間幾何的概念實現對群組行為的模擬控制,在核心部分需要遍歷每一個boid,分別計算當前boid與其他相鄰節點的間距,再通過與預設的各個規則下所生成的約束值比對,來動態更新boid的移動速度與角度。

假設FlockBoid為組群原點,三維坐標為(,,),當前boid為,三維坐標值為(1,1,1),相鄰任一節點為,三維坐標值為(2,2,2),依據向量三角形法則及投影定律可知:

3 Boids算法在群組行為中的應用分析

在Unity3d中,Boids算法僅實現了一個簡單的鳥群移動行為,能夠適用于大部分生物類群組行為的3D模擬,但在真實環境中,很多生物群組行為要比這復雜得多,例如群組行為中障礙物的躲避、群組移動路徑的隨機更新等。群組中個體行為通常會比較簡單,但群組行為絕不是個體行為的簡單疊加,任何一件隨機事件的產生都可能導致群組行為在結構、模式和行為上發生變化[4]。為了使得群組行為模擬更加接近真實自然的效果,對一些較為復雜的群組行為實現模擬控制是非常必要的。

4 Unity3D中復雜群組行為的算法改進策略

在Boids算法中隨機性策略的算法改進思路主要是通過隨機生成的移動目標來改變群組的移動軌跡。

在Boids算法中,FlockBoid作為群組的領導者,群組中的boid都是跟隨著FlockBoid移動的。因此在改進算法中,隨機目標的更新主要是針對FlockBoid的,當FlockBoid的軌跡發生變化,群組中所有成員的軌跡也會跟著發生變化,如圖1所示:

圖1 隨機移動軌跡中隨機策略的應用思路

在Unity3D內部封裝的Random類提供的Range()函數可以在用戶自定義的最小數與最大數之間隨機返回一個浮點型的數值,(這個范圍包含最小數,但不包含最大數)[5]。

float posX=Random.Range(initPos.x-bound.x,init Pos.x+bound.x);

float posY=Random.Range(initPos.y-bound.y,initPos.y+bound.y);

float posZ=Random.Range(initPos.z-bound.z,initPos.z+bound.z);

最后Range函數每被調用一次,就會對偏移量進行一次刷新,從而實現目標向量的不斷更新。因此還需要設置一個刷新機制,以確保每隔一段時間就可以對目標向量進行更新。

Unity3D內置有Update()函數,該函數在系統運行時會被自動調用,調用頻率為每幀調用一次,大約每秒Update()函數會被調用千次以上。如果要在Update()內實現移動目標的定時更新,還需要重新設定代碼的刷新頻率。具體實現步驟如下:

( 1 ) 獲取FlockBoid當前的移動位置,以三維坐標(,,)表示;

( 2 ) 獲取FlockBoid當前的移動目標,以三維坐標(,,)表示;

( 3 ) 計算FlockBoid從當前位置到移動目標的間距,公式如下:

( 4 ) 設定FlockBoid從當前位置到移動目標的最小間距為space,將與space進行比較,如果>space,說明FlockBoid距離移動目標還比較遠,對移動目標不做位置更新;如果

當隨機策略更新了移動目標后,FlockBoid也會隨之更新移動軌跡,向新的目標點移動,群組中所有節點也會通過對FlockBoid的追蹤,重新規劃各自的移動路徑。

5 總結

本研究主要圍繞Boids算法在Unity3D模擬生物群組行為中的應用展開深入研究,并在此基礎上對衍生出的復雜群組行為進行了討論,最后針對群組行為的移動軌跡更新問題,提出了基于Boids的隨機性改進策略。改進后的算法策略能夠為很多復雜的群組行為提供隨機性問題與路徑規劃問題的解決思路,從而有效改善群組行為的模擬效果。

[1]Tenney R,Hebbert R,Sandell N Jr. A tracking filterfor maneuvering sources[J]. IEEE Transactions on AutomaticControl,1977,22(2):246-251.

[2]Craig Reynolds. Boids Background and Update[EB/OL]. http://www.red3d.com/cwr/boids/,2001.

猜你喜歡
規則策略
撐竿跳規則的制定
數獨的規則和演變
基于“選—練—評”一體化的二輪復習策略
求初相φ的常見策略
例談未知角三角函數值的求解策略
我說你做講策略
規則的正確打開方式
幸福(2018年33期)2018-12-05 05:22:42
高中數學復習的具體策略
數學大世界(2018年1期)2018-04-12 05:39:14
讓規則不規則
Coco薇(2017年11期)2018-01-03 20:59:57
TPP反腐敗規則對我國的啟示
主站蜘蛛池模板: 国产欧美精品一区二区| 中文字幕调教一区二区视频| 99热这里都是国产精品| 国产制服丝袜91在线| 97人妻精品专区久久久久| 国产精品视频观看裸模| 99久久国产综合精品2020| 亚洲国产无码有码| 亚洲精品在线观看91| 欧美成人在线免费| 日本高清成本人视频一区| 一本一本大道香蕉久在线播放| 黄色网址免费在线| 亚洲IV视频免费在线光看| 天堂成人在线| 欧美成人免费一区在线播放| 亚洲中文无码h在线观看| 免费又爽又刺激高潮网址| 五月婷婷精品| 伊人精品成人久久综合| 日韩精品成人网页视频在线| 亚洲人成在线精品| 亚洲天堂在线视频| 亚洲v日韩v欧美在线观看| 乱色熟女综合一区二区| a天堂视频| a亚洲视频| 国产导航在线| 久久精品国产精品青草app| 国产日本一线在线观看免费| 色综合久久无码网| 99久久国产自偷自偷免费一区| 国产av剧情无码精品色午夜| 色综合中文| 亚洲天堂首页| 波多野结衣AV无码久久一区| 男女男精品视频| 亚洲制服丝袜第一页| 色婷婷成人| 97青青青国产在线播放| 久久久精品国产亚洲AV日韩| 91美女视频在线| 亚洲熟女偷拍| V一区无码内射国产| 亚洲欧美日韩中文字幕一区二区三区| 少妇高潮惨叫久久久久久| 国产一级视频在线观看网站| 国产精品网曝门免费视频| 亚洲欧美不卡视频| 亚洲综合一区国产精品| 国产91久久久久久| 国产在线观看人成激情视频| 毛片a级毛片免费观看免下载| 亚洲成a∧人片在线观看无码| 伊人久久大香线蕉影院| 香蕉久人久人青草青草| 国产在线观看99| av免费在线观看美女叉开腿| 天天色综合4| 亚洲欧洲自拍拍偷午夜色无码| 亚洲综合专区| 亚洲欧洲一区二区三区| 91年精品国产福利线观看久久| 日韩亚洲高清一区二区| 久久国产亚洲偷自| 免费又黄又爽又猛大片午夜| 伊人成人在线| 成人韩免费网站| 欧美爱爱网| 欧美va亚洲va香蕉在线| 国产香蕉在线视频| 又污又黄又无遮挡网站| 欧美一区中文字幕| 视频二区亚洲精品| 久久不卡国产精品无码| 五月丁香在线视频| 欧美特级AAAAAA视频免费观看| 2024av在线无码中文最新| 精品亚洲欧美中文字幕在线看| 亚洲女同欧美在线| 亚洲第一在线播放| 直接黄91麻豆网站|