国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

動(dòng)量定理在Unity 3D中的應(yīng)用

2022-10-14 08:53丁彥希張迪迪徐秋雨郭仁春
現(xiàn)代信息科技 2022年16期
關(guān)鍵詞:動(dòng)量定理角速度力矩

丁彥希,張迪迪,徐秋雨,郭仁春

(沈陽化工大學(xué),遼寧 沈陽 110142)

0 引 言

動(dòng)量定理是動(dòng)力學(xué)的普遍定理之一。剛體是力學(xué)中的一個(gè)科學(xué)抽象概念,即理想模型。Unity 3D簡稱U3D,是由Unity Technologies公司開發(fā)的一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺的綜合型游戲開發(fā)工具。在U3D中,是通過物理引擎機(jī)制來實(shí)現(xiàn)物體的物理效果。物理引擎通過為剛性物體賦予物理屬性的方式來模仿真實(shí)世界中的物體碰撞、跌落等反應(yīng)。本文通過給剛體添加力和力矩來使剛體產(chǎn)生運(yùn)動(dòng),包括平動(dòng)和轉(zhuǎn)動(dòng),并對運(yùn)動(dòng)狀態(tài)進(jìn)行定量分析,使讀者能更好的認(rèn)識動(dòng)量定理在剛體運(yùn)動(dòng)中的體現(xiàn),從而更好地設(shè)計(jì)一個(gè)仿真系統(tǒng)。

1 剛體運(yùn)動(dòng)——從剛體平動(dòng)到剛體轉(zhuǎn)動(dòng)

1.1 牛頓定律和動(dòng)量定理

剛體都有質(zhì)心的概念,如果作用力的方向通過質(zhì)心,則可以將剛體視作質(zhì)點(diǎn)。當(dāng)剛體的作用力不在質(zhì)心上時(shí),剛體會(huì)發(fā)生轉(zhuǎn)動(dòng),轉(zhuǎn)動(dòng)時(shí)所有的物理量和物理定律都可以從平動(dòng)形式類推過來。

剛體平動(dòng)用位移,速度,加速度,慣性,力,動(dòng)量,沖量等描述,對應(yīng)的剛體轉(zhuǎn)動(dòng)要換成角位移,角速度,角加速度,轉(zhuǎn)動(dòng)慣量,力矩,角動(dòng)量,角沖量等概念,所有的物理定律都不變,如表1所示。

表1 剛體平動(dòng)與剛體轉(zhuǎn)動(dòng)物理量對比

1.1.1 平動(dòng)慣性定律和轉(zhuǎn)動(dòng)慣性定律

牛頓第一定律也叫慣性定律,慣性是物體要保持原有的狀態(tài)。慣性是有大小的。物體的質(zhì)量mass就是衡量慣性的一個(gè)重要指標(biāo)。

轉(zhuǎn)動(dòng)時(shí),物體要保持勻速旋轉(zhuǎn)的狀態(tài),即保持角速度大小和方向不變,這就是轉(zhuǎn)動(dòng)慣性定律。轉(zhuǎn)動(dòng)慣性也有大小,用轉(zhuǎn)動(dòng)慣量來衡量。轉(zhuǎn)動(dòng)慣量用I來表示,其定義為

其中是質(zhì)量,是該質(zhì)心的位置到轉(zhuǎn)軸的距離,的單位是kgm。

1.1.2 平動(dòng)牛頓第二定律和轉(zhuǎn)動(dòng)牛頓第二定律

如果要改變狀態(tài)就需要外力。外力越大狀態(tài)改變也越大,但如果慣性即質(zhì)量很大,狀態(tài)改變就越小。用數(shù)學(xué)公式來描述即

這就是牛頓第二定律,其中是慣性,是外力,是加速度。

如果要改變轉(zhuǎn)動(dòng)的狀態(tài),即改變角速度,就需要對剛體加外力矩,因此角速度的改變用角加速度來衡量,該值與外力矩大小成正比,與轉(zhuǎn)動(dòng)慣量成反比,這與加速度的定義極為相似,即:

1.1.3 平動(dòng)動(dòng)量定理和轉(zhuǎn)動(dòng)動(dòng)量定理

平動(dòng)過程中的動(dòng)量是,轉(zhuǎn)動(dòng)過程中的角動(dòng)量是。平動(dòng)的動(dòng)量定理和轉(zhuǎn)動(dòng)的角動(dòng)量定理分別為:

1.1.4 動(dòng)量守恒和角動(dòng)量守恒

當(dāng)兩個(gè)物體相互碰撞后,在沒有損耗的情況下,碰撞前的總動(dòng)量=碰撞后的總動(dòng)量,這就是動(dòng)量守恒。與平動(dòng)相似,角動(dòng)量也滿足守恒定律。如果兩個(gè)剛體相碰撞,兩者相比較如下:

這些定律都體現(xiàn)在U3D的物理引擎中,了解這些物理定律就會(huì)讓虛擬仿真更符合的預(yù)期。

1.2 剛體屬性

在場景中放置一個(gè)平面Plane作為地面,再添加一個(gè)立方體Cube和一個(gè)球體,并讓這兩個(gè)物體位于地面上方如圖1(a)所示。給立方體和球體增加剛體組件RigidBody如圖1(b)所示。運(yùn)行后物體會(huì)自動(dòng)落到地面。

圖1 Rigidbody組件

讓場景中的物體運(yùn)動(dòng)可以有兩種方式,其一是運(yùn)動(dòng)學(xué),其二是用物理學(xué)。

運(yùn)動(dòng)學(xué)使用的是物體的Transform,直接用Translate(平移)和旋轉(zhuǎn)(Rotate)來使物體移動(dòng)或旋轉(zhuǎn),或者直接用代碼改變物體的位置和歐拉角。

場景中的物體加載了Rigidbody組件,就要受到物理定律的控制,如果希望不被物理定律控制,可以開啟該組件中的Is Kinematic選項(xiàng)。

與物理問題相關(guān)的程序要寫在FixedUpdate中,F(xiàn)ixedUpdate兩幀之間的間隔是固定的,默認(rèn)是0.02 s,也就是1秒鐘運(yùn)行50次。這與Update不同,Update兩幀之間的間隔是不固定的。

質(zhì)量mass(kg),速度velocity(m/s)是剛體的兩個(gè)基本屬性,一個(gè)代表慣性,一個(gè)代表狀態(tài)。在剛體的眾多屬性中最重要的就是速度velocity了,而mass多數(shù)時(shí)候可以忽略。

2 轉(zhuǎn)動(dòng)慣量inertiaTensor

對于平動(dòng),剛體有一個(gè)慣性量就是質(zhì)量mass,同樣對于轉(zhuǎn)動(dòng),剛體也有一個(gè)描述轉(zhuǎn)動(dòng)慣性的量,叫作慣性張量inertiaTensor。

轉(zhuǎn)動(dòng)慣量除了與質(zhì)量相關(guān)外還與旋轉(zhuǎn)軸位置、剛體形狀和大小有關(guān)。同一個(gè)剛體旋轉(zhuǎn)軸的位置,有不同的轉(zhuǎn)動(dòng)慣量。若旋轉(zhuǎn)軸通過剛體的質(zhì)心,軸的方向不同,也會(huì)有不同的轉(zhuǎn)動(dòng)慣量,其中沿著物體坐標(biāo)系,,主軸的三個(gè)方向的轉(zhuǎn)動(dòng)慣量最為重要,其次是其他方向,這樣的轉(zhuǎn)動(dòng)慣量共有9個(gè)參數(shù)形成一個(gè)張量矩陣如下:

,,主軸方向上的量處于矩陣的對角線上,即I,II。在U3D中,慣性張量inertiaTensor就是指這三個(gè)數(shù),形成一個(gè)向量。

3 AddForce

將場景中物體的質(zhì)量mass設(shè)為2 kg,給剛體施加一個(gè)沿軸方向500 N的力的代碼如下:

其中,rb是指如圖1所示場景中的物體。

像平時(shí)扔?xùn)|西,擊球或開槍都是給物體一個(gè)初始的力,然后物體就沿力的方向前進(jìn)了。但同樣是給物體一個(gè)水平方向500 N的力,瞬間給一下,持續(xù)一段時(shí)間和一直持續(xù)給,物體速度很顯然是完全不同的。如下文給出的代碼所示:

其中AddForce代碼只在Start()中僅加載一次,AddForce是對物體加力,這個(gè)力的作用時(shí)間Δ其實(shí)就是0.02 s,也就是FixedUpdate兩幀之間的間隔Fixed Timestep。

根據(jù)動(dòng)量定理求出:

U3D中對AddForce提供了四種模式,用ForceMode來區(qū)別,方法是對AddForce增加第2個(gè)參數(shù):

rb.AddForce(new Vector3(500, 0, 0), ForceMode.Force);

ForceMode的四種模式分別是:Acceleration、Force、Impulse、VelocityChange,其力的作用方式有些區(qū)別,默認(rèn)是Force,可以省略。

3.1 Force

3.2 Acceleration

Acceleration是加速度,單位是m/s,加速度本身就是速度的改變量,因此下面的代碼:

可以猜測得到物體的速度應(yīng)為:10 m/s

因?yàn)榧铀俣?500 m/s,說明速度1秒增加500 m,因而作用時(shí)間是0.02 s,最終速度自然就是500×0.02=10 m/s。

由于直接使用的是加速度,就不用考慮物體質(zhì)量了。

3.3 Impulse

Impulse是沖量,單位是N?s或者kg?m/s,該量就是直接給了Δ。因此下面的代碼:

rb.AddForce(new Vector3(500, 0, 0), ForceMode.Impulse);

可以猜測到物體的速度為:

由于直接給的是沖量,這樣就不用考慮作用時(shí)間0.02 s了。因此Impulse應(yīng)該是每次運(yùn)行就施加500 N?s,與作用時(shí)間無關(guān),只考慮運(yùn)行次數(shù)即可。

3.4 VelocityChange

VelocityChange 顧名思義是速度的改變量,這樣的說法有點(diǎn)類似Acceleration,與Acceleration不同的是,VelocityChange是每次運(yùn)行就改變速度的量,而Acceleration則是每秒速度的改變量。因此VelocityChange的單位應(yīng)該是米/秒/次。

因此代碼:

運(yùn)行結(jié)果就應(yīng)該是:500 m/s

VelocityChange與Acceleration一樣不用考慮物體的質(zhì)量。VelocityChange與Inmpuse一樣不用考慮那個(gè)時(shí)間間隔。

通過這幾個(gè)例子可以看到velocity才是最想知道的量,而mass常被忽略。

4 AddTorque

4.1 給立方體加力矩

與AddForce相似,可以給物體施加力矩AddTorque,該力矩可以使剛體繞質(zhì)心旋轉(zhuǎn)。如果外力矩為,則剛體的角速度的變化量為:

在U3D中Δ=0.02 s,為轉(zhuǎn)動(dòng)慣量,這個(gè)轉(zhuǎn)動(dòng)慣量為慣性張量inertiaTensor,由于是張量,問題就變得比平動(dòng)復(fù)雜得多,下面依然采用手工計(jì)算與代碼相結(jié)合的形式進(jìn)行相互驗(yàn)證。

對場景中的立方體編寫下文的代碼:

因此結(jié)果應(yīng)該是(1.2,0,0)。運(yùn)行后發(fā)現(xiàn)正是這個(gè)結(jié)果如圖2所示。

圖2 給立方體加力矩后的運(yùn)行結(jié)果

4.2 給長方體加力矩

通過代碼驗(yàn)證,結(jié)果如圖3所示。

圖3 長方體的轉(zhuǎn)動(dòng)慣量運(yùn)行結(jié)果

下面將長方體斜著放置,力矩仍保持不變,將立方體的歐拉角設(shè)為(0,30,0),如圖4(a)所示是頂視圖?,F(xiàn)在給一個(gè)力矩=(10,0,0),這個(gè)力矩是對世界坐標(biāo)系的而言的。那么認(rèn)為物體應(yīng)該繞世界坐標(biāo)x軸旋轉(zhuǎn),即如圖4(b)所示的那個(gè)樣子,繞紅色軸旋轉(zhuǎn)。

圖4 斜長方體方體轉(zhuǎn)

然而運(yùn)行結(jié)果卻是另外的形式,轉(zhuǎn)軸相對世界坐標(biāo)發(fā)生了偏移,其角速度如圖5所示。

圖5 運(yùn)行結(jié)果

如圖6(a)所示,物體是繞著黃色的軸旋轉(zhuǎn)的,不是紅色的軸

圖6 對x軸加力矩,結(jié)果旋轉(zhuǎn)軸發(fā)生偏移

如果再將歐拉角改成(0,60,0),結(jié)果如圖6(b)所示的樣子,其角速度如圖7所示。

圖7 運(yùn)行結(jié)果

本來是給世界坐標(biāo)系的軸施加力矩,實(shí)際上物體卻沒有繞世界坐標(biāo)系的軸旋轉(zhuǎn)而是發(fā)生了偏移,角速度為(1.02,0,-0.312)。

4.3 ForceMode

AddTorque與AddForce一樣也有ForceMode選項(xiàng),包括 Acceleration,F(xiàn)orce,Impulse,VelocityChange,含義也都與AddForce中一樣,只不過這幾個(gè)量改變的是角速度,默認(rèn)Force可以省略,具體如下文給出的代碼所示:

含義是對角速度的改變量為10 rad/s,可以推知,作用時(shí)間為0.02 s時(shí)速度的改變量為0.2 rad/s,不 用考慮轉(zhuǎn)動(dòng)慣量。

ForceMode.Impulse是沖量,需要考慮轉(zhuǎn)動(dòng)慣量:

ForceMode.VelocityChange是每次直接改變角速度,不用考慮轉(zhuǎn)動(dòng)慣量,代碼為:

5 結(jié) 論

動(dòng)量定理是物理學(xué)中的一個(gè)基本規(guī)律。在Unity3D中,動(dòng)量定理在剛體運(yùn)動(dòng)過程中充分體現(xiàn),基于此定理的基礎(chǔ)上可以計(jì)算出物體的運(yùn)動(dòng)狀態(tài),從而使用戶更精確地去控制虛擬物體的運(yùn)動(dòng)。

猜你喜歡
動(dòng)量定理角速度力矩
智能輔助駕駛系統(tǒng)中橫擺角速度信號估計(jì)方法的研究
基于地鐵車輛裝配帶力矩螺栓緊固的工藝優(yōu)化分析
基于地鐵車輛裝配帶力矩螺栓緊固的工藝優(yōu)化分析
高中物理角速度矢量性問題的教學(xué)探究
圓周運(yùn)動(dòng)角速度測量方法賞析
從錯(cuò)題中理解動(dòng)能定理和動(dòng)量定理
發(fā)動(dòng)機(jī)阻力矩計(jì)算和起動(dòng)機(jī)介紹
分類例析動(dòng)量定理的應(yīng)用問題
動(dòng)量定理在解題中的應(yīng)用
不倒翁的物理原理