大色欧美,色老头网站久久网,最近最新手机中文字幕在线看,最新毛片网,a视频在线播放,中文字幕一区二区三区有限公司,国产成人精品视频免费

Houdini vex 模擬交通系統(tǒng)案例教程分享

作者:直尚教育
2020-04-27
441

今天給大家?guī)?lái)一個(gè)比較有意思的Houdini vex 模擬交通系統(tǒng)案例教程分享 Houdini學(xué)習(xí)群:19969476

今天給大家?guī)?lái)一個(gè)比較有意思的Houdini vex 模擬交通系統(tǒng)案例教程分享



1、介紹


我的名字叫Franco Pizzani,參與過(guò)《使命召喚:無(wú)限戰(zhàn)爭(zhēng)》和《使命召喚:第二次世界大戰(zhàn)》等游戲的開(kāi)發(fā)。大約從那時(shí)起,我開(kāi)始在空閑時(shí)練習(xí)Houdini,當(dāng)時(shí)只是為了學(xué)習(xí)一些新東西,但是,在某個(gè)時(shí)候,我意識(shí)到我想進(jìn)一步深入掌握它。所以就參加了加拿大溫哥華的 Houdini FXTD program 。


2、項(xiàng)目的開(kāi)始


這是我的Houdini課程中的第三個(gè)項(xiàng)目,我們需要?jiǎng)?chuàng)建一個(gè)人群系統(tǒng)。前幾講涵蓋了有關(guān)人群及其行為的基本概念。我們進(jìn)一步了解了Houdini內(nèi)置的人群工具,該工具可以與人群求解器一起自動(dòng)為您完成所有操作。盡管人群求解器和內(nèi)置工具非常出色,但我確實(shí)想嘗試使用VEX可以做一些不同的事情,所以我認(rèn)為交通系統(tǒng)將是獨(dú)一無(wú)二的。在我看來(lái),交通系統(tǒng)是如此機(jī)械,它將使我有機(jī)會(huì)控制和設(shè)置使交通系統(tǒng)運(yùn)行的所有必要屬性,例如矢量和力。同時(shí),模擬交通系統(tǒng)似乎并不是典型的Houdini項(xiàng)目,因此我將其視為一舉兩得的事。


3、項(xiàng)目的基本情況


該項(xiàng)目的核心是一個(gè)solver求解器和一堆pointwaranger節(jié)點(diǎn)(您可以在其中寫(xiě)VEX的節(jié)點(diǎn)),通過(guò)vex讀取和設(shè)置屬性。然后,這些屬性用于基于不同條件來(lái)定義屬性狀態(tài)。在此項(xiàng)目的每個(gè)幀上都會(huì)計(jì)算出90多個(gè)屬性,這些屬性的范圍從我所謂的“初始屬性”開(kāi)始,這些屬性是原始數(shù)據(jù),由方向矢量,距離和模擬中產(chǎn)生的其他信息組成。然后分析這些初始屬性以設(shè)置“狀態(tài)屬性”。這些狀態(tài)屬性用于定義車(chē)輛的狀態(tài),這些狀態(tài)是“加速”,“開(kāi)始”,“停止”或“以最高速度行駛”。


例如我前面有一輛與我在同一車(chē)道上的車(chē)輛,那么它的方向與我的方向相同,并且到前面的車(chē)輛的距離小于預(yù)定的制動(dòng)距離,這時(shí)“在前方車(chē)輛制動(dòng)”屬性將為true,從而觸發(fā)“開(kāi)始”狀態(tài)。當(dāng)觸發(fā)此狀態(tài)時(shí),有一個(gè)制動(dòng)節(jié)點(diǎn)負(fù)責(zé)根據(jù)距離減小施加到我的車(chē)輛上的力,從而減小我的速度和與前方車(chē)輛的距離,以防止其發(fā)生碰撞。如果我的車(chē)輛處于“制動(dòng)”狀態(tài)并且我的速度等于0,則表示我已停止,因此將觸發(fā)“停止”狀態(tài)。如果車(chē)輛正在制動(dòng)或停止的狀態(tài)屬性改變,它將變?yōu)椤凹铀佟睜顟B(tài),再次施加力。


這些狀態(tài)屬性的傳遞都是通過(guò)pcopen和neighbor等點(diǎn)云系列函數(shù)實(shí)現(xiàn)的。下圖中是我的節(jié)點(diǎn)圖,盡可能的保證節(jié)點(diǎn)圖的組織化和模塊化。solver求解器將在每一幀中從左到右以及從上到下執(zhí)行這些節(jié)點(diǎn)。



4、道路與交通結(jié)構(gòu)


具體的道路系統(tǒng)是以現(xiàn)實(shí)生活為參照,仔細(xì)觀察,提煉規(guī)則。我非常喜歡現(xiàn)實(shí)生活的交通路網(wǎng),通過(guò)觀察學(xué)習(xí)我了解了車(chē)輛行駛,交通信號(hào)燈,停車(chē)標(biāo)志,避開(kāi)行人的規(guī)則。我花了一段時(shí)間才正確設(shè)置交通信號(hào)燈模式。


當(dāng)我剛開(kāi)始該項(xiàng)目時(shí),我先進(jìn)行了原型制作,使車(chē)輛沿著道路(在單車(chē)道上)行駛并互相制動(dòng)/停車(chē)。后來(lái),當(dāng)我將其擴(kuò)展到每條道路有1條以上車(chē)道時(shí),我看到車(chē)輛似乎無(wú)緣無(wú)故地剎車(chē)和停止,但它們前面沒(méi)有其他車(chē)輛。經(jīng)過(guò)一些調(diào)試后,我發(fā)現(xiàn)它們的停止是因?yàn)槲覜](méi)有執(zhí)行任何判斷來(lái)檢查前面的車(chē)輛是在當(dāng)前車(chē)道中還是在相鄰車(chē)道中,因此很多工作確實(shí)按照現(xiàn)實(shí)生活的邏輯進(jìn)行修改。在檢查設(shè)置狀態(tài)的條件時(shí),重要的是要檢查正在發(fā)生的事件及其優(yōu)先級(jí)。車(chē)輛可能正在剎車(chē)減速以在紅燈處停車(chē),但是如果在到達(dá)紅燈之前有停止的車(chē)輛,則必須先停車(chē)。


在項(xiàng)目中我采用樣條線來(lái)引導(dǎo)車(chē)輛。每個(gè)樣條都有一個(gè)“道路名稱(chēng)”,并且知道與之相連的樣條是什么。當(dāng)車(chē)輛在道路上行駛時(shí),它會(huì)從樣條曲線讀取這些屬性,從而可以知道下一條街道在哪里以及它們可以走到哪里。如果選項(xiàng)為2或更多,則每輛車(chē)將隨機(jī)選擇下一步。這是我最不滿(mǎn)意的項(xiàng)目部分,因?yàn)樵O(shè)置這些樣條線需要一些手動(dòng)工作去放置,并設(shè)置道路屬性。



5、管理車(chē)輛


我在項(xiàng)目中使用速度屬性來(lái)移動(dòng)點(diǎn):以米/秒為單位進(jìn)行計(jì)算,如果車(chē)輛的速度為25,則意味著它以每小時(shí)90公里的速度行駛。由于每個(gè)車(chē)輛都知道它們的位置和所要行駛的道路,因此可以計(jì)算從車(chē)輛的位置到所要行駛的道路的方向向量,然后在該向量的方向上施加力。一旦我們?cè)诘缆飞?,將沿道路的行駛方向施加力,這樣,車(chē)輛就可以沿著道路正常行駛。


項(xiàng)目中也運(yùn)用了一些其他的數(shù)學(xué)概念(例如點(diǎn)積和叉積)。使用點(diǎn)積,我們可以輕松確定車(chē)輛之間的前后關(guān)系。如果我的方向向量和到另一輛車(chē)的方向向量的點(diǎn)積大于0,則意味著另一輛車(chē)在我前面。如果小于0的結(jié)果表示另一輛車(chē)在我后面。



6、speedmax屬性


在生成車(chē)輛時(shí),我立即為它們分配一個(gè)隨機(jī)的“ speedmax”屬性。車(chē)輛的speedmax屬性在每秒11.1至17.7米之間,相當(dāng)于每小時(shí)40至64公里的速度。無(wú)論施加多大的力,都不允許速度超過(guò)指定值。


同時(shí),道路具有真實(shí)的比例大小,并且車(chē)輛以每小時(shí)64公里的最大速度行駛,這意味著車(chē)輛在道路上行駛一些時(shí)間后會(huì)離開(kāi)模擬。因此,我正在準(zhǔn)備模擬一個(gè)14000幀,這相當(dāng)于大約10分鐘的解算,大約需要5分鐘來(lái)模擬。


另一個(gè)重要方面是通過(guò)隨機(jī)變化。每輛車(chē)都會(huì)獲得隨機(jī)值,例如它們開(kāi)始停車(chē)時(shí)與紅燈之間的距離,停在前方車(chē)輛后方的距離或者停車(chē)后重新啟動(dòng)的時(shí)間等隨機(jī)值,所有的這些值的隨機(jī)變化都會(huì)使解算更加逼真。



產(chǎn)生制動(dòng)和停止距離的隨機(jī)值


車(chē)輛始終可以獲取需要?jiǎng)x車(chē)或停車(chē)的屬性狀態(tài),并且當(dāng)距離低于上面屬性中定義的值時(shí),它們會(huì)通過(guò)減小承受的力來(lái)減慢速度,剩下的就是求解器通過(guò)降低其速度。車(chē)輛源的幾何形狀經(jīng)過(guò)仔細(xì)設(shè)置,以1米長(zhǎng)為標(biāo)準(zhǔn),這樣我就可以根據(jù)實(shí)際單位為每輛車(chē)輛分配pscale屬性(大?。S捎诿總€(gè)車(chē)輛都知道它們的尺寸(pscale)和必須制動(dòng)的車(chē)輛的尺寸,因此我可以準(zhǔn)確地計(jì)算出它們從前保險(xiǎn)杠到后保險(xiǎn)杠的距離。


7、紅綠燈與行人


我認(rèn)為添加行人會(huì)使其看起來(lái)更加生動(dòng)復(fù)雜。并且我在之前的制作過(guò)程中已經(jīng)做好了添加行人系統(tǒng)所需要的屬性,以及檢測(cè)其他車(chē)輛并為行人工作而剎車(chē)/停車(chē)的邏輯。這是Houdini的優(yōu)點(diǎn)之一:進(jìn)行一項(xiàng)設(shè)置,并通過(guò)針對(duì)不同的事物進(jìn)行一些調(diào)整來(lái)重復(fù)利用。行人需要做更多的工作,因?yàn)楝F(xiàn)在他們的行為有些漫無(wú)目的,他們只是盲目地穿過(guò)馬路,理想情況下,我會(huì)執(zhí)行一些邏輯以使行人在過(guò)馬路之前停下來(lái)觀察車(chē)輛的往來(lái)疏密,直到有安全的空隙或紅綠燈變?yōu)榫G色時(shí)再穿過(guò)馬路。


交通信號(hào)燈是設(shè)置的重要組成部分,如果沒(méi)有交通信號(hào)燈,在交通流量大的情況下,這個(gè)十字路口可能會(huì)很混亂。


我將交通信號(hào)燈視為具有通過(guò)或不通過(guò)狀態(tài)的實(shí)體。將這些插入解算中,每輛車(chē)可以一直獲取當(dāng)前狀態(tài)以及與會(huì)影響它們的最近紅綠燈的距離。現(xiàn)在已經(jīng)預(yù)定義了交通信號(hào)燈狀態(tài)模式,但是我正在探索使它們根據(jù)車(chē)輛流量自動(dòng)更改紅綠信號(hào)的方法。


8、車(chē)輛生成


我為車(chē)輛定義了不同的生成源,每個(gè)源都有特定的生成頻率,生成數(shù)量和生成種子,以提供更多的變化。我現(xiàn)在設(shè)置的值是在交通流量與我的參考鏡頭相匹配的最佳值。



在下圖中,您可以看到當(dāng)我同時(shí)生成四倍的車(chē)輛時(shí)會(huì)發(fā)生什么。交通堵塞模擬器!



9、后記


我不能保證何時(shí)能夠與人們分享更多的細(xì)節(jié),因?yàn)樵趯W(xué)校的時(shí)間非常緊張,我必須將自己的時(shí)間用于下一個(gè)項(xiàng)目。最重要的是,該系統(tǒng)仍然是一個(gè)半成品,有很多地方需要調(diào)整和修復(fù)。不僅如此,就像我之前說(shuō)過(guò)的那樣,目前還有一部分內(nèi)容需要手工完成,因此,我會(huì)考慮一種解決方案,以使其變得更加程序化,更直接易用。


3D藝術(shù)家:Franco Pizzani


訪談 :Kirill Tokarev





直線網(wǎng)公眾號(hào),第一時(shí)間學(xué)習(xí)最新教程,看最新行業(yè)動(dòng)態(tài)??!


0
0
分享到:

0

喜歡他,就推薦他上首頁(yè)吧^_^

推薦閱讀

×

賽事服務(wù)聯(lián)系方式

0371-86068866

4008887269

cndesign@163.com

好的,我知道了

官方微信

聯(lián)系我們

  • QQ:33143335 QQ:1904200230
  • 電話:18569912460
  • 投稿:cndesign@163.com
  • 地址:鄭州市國(guó)家大學(xué)科技園東區(qū)9號(hào)樓2層

版權(quán)信息

  移動(dòng) Android 版 豫 ICP 備16038122號(hào)-2 豫公網(wǎng)安備 41019702002261號(hào)