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反腐敗規則對我國的啟示
主站蜘蛛池模板: 综合色在线| 亚洲侵犯无码网址在线观看| 国产乱人视频免费观看| 91丝袜在线观看| 特级做a爰片毛片免费69| 国产一级毛片在线| 久久久精品久久久久三级| 国产美女自慰在线观看| 成人精品在线观看| 国产欧美专区在线观看| 久99久热只有精品国产15| 91小视频在线观看| 日本一区二区三区精品视频| 少妇高潮惨叫久久久久久| 九色在线视频导航91| 美女国内精品自产拍在线播放| 40岁成熟女人牲交片免费| 亚洲Va中文字幕久久一区| 国产成人91精品| 黄色三级网站免费| 亚洲V日韩V无码一区二区| 国产精品欧美激情| 黄色免费在线网址| 国产成人福利在线| 久久久久无码国产精品不卡| 久久99国产乱子伦精品免| 高清精品美女在线播放| 久草网视频在线| 亚洲成人福利网站| 精久久久久无码区中文字幕| 国产精品页| 自拍欧美亚洲| 丰满人妻被猛烈进入无码| 亚洲伊人天堂| 久久精品丝袜高跟鞋| 国产网友愉拍精品视频| 精品一区二区三区中文字幕| 欧美成人看片一区二区三区| 日韩av手机在线| 日本在线欧美在线| 日韩在线播放中文字幕| 日韩高清欧美| 国产一区二区三区免费| 国产成人综合欧美精品久久| 女人18毛片久久| 无码日韩视频| 91麻豆国产视频| 久久久久青草大香线综合精品 | 久久无码高潮喷水| 国产在线八区| 久久国产亚洲欧美日韩精品| 国产成人区在线观看视频| 伊人久综合| 日韩精品久久无码中文字幕色欲| 99精品福利视频| 亚洲AV成人一区国产精品| 色偷偷av男人的天堂不卡| 国产黄在线观看| 999福利激情视频| 在线播放真实国产乱子伦| 亚卅精品无码久久毛片乌克兰 | lhav亚洲精品| 亚洲欧美日韩成人在线| 免费一级成人毛片| 婷婷五月在线视频| 日韩国产一区二区三区无码| 中字无码av在线电影| 国产女人喷水视频| 欧美午夜理伦三级在线观看| 六月婷婷精品视频在线观看| 996免费视频国产在线播放| 伊人大杳蕉中文无码| 四虎成人精品| 在线日韩日本国产亚洲| 婷婷激情亚洲| 91美女视频在线| 国产又粗又爽视频| 欧美h在线观看| 99尹人香蕉国产免费天天拍| 日本欧美成人免费| 亚洲国产精品久久久久秋霞影院 | 国产精品成人不卡在线观看|