文/ 沉舟舟 圖/ 芝士多多
你知道,蘋果成熟之后,會因?yàn)橹亓ν侣洌患眲x車時(shí),人會在慣性的作用下往前沖。這些物體運(yùn)動的規(guī)律,就是物理學(xué)研究的對象。小到螞蟻爬行,大到星球運(yùn)轉(zhuǎn),真實(shí)世界中的萬事萬物都是在物理的“約束”下運(yùn)行的。
用電腦模擬出的虛擬世界,物理就管不著了。蘋果可以落地,也可以飛向外太空;人可以服從慣性,也可以在急剎車時(shí)穩(wěn)如泰山。但是,我們已經(jīng)在潛移默化中習(xí)慣了真實(shí)世界的物理現(xiàn)象,因此電影里的情節(jié)也必須在物理的框架內(nèi)展現(xiàn),這樣看起來才真實(shí),才有代入感。
于是,物理引擎就出現(xiàn)了。物理引擎通過一系列復(fù)雜的計(jì)算,讓電腦中的虛擬世界也能遵照現(xiàn)實(shí)世界里的物理定律。比如,它能“告訴”電腦,虛擬導(dǎo)彈只能按照物理定律中的彈道前進(jìn),不能毫無限制地隨意亂飛。
物體的運(yùn)動是非常復(fù)雜的,物理引擎也是從模擬簡單的動作開始,慢慢升級,慢慢成長。瞧,到現(xiàn)在,仍有一些動作它無法完美模擬呢!讓我們一起來看看物理引擎成長道路上的幾道難關(guān)吧。
汽車轉(zhuǎn)彎激起的塵土,超人和怪獸大戰(zhàn)撞飛的山石,炸彈爆炸沖擊而起的碎片等大量而微小的物體的運(yùn)動。
難處:這些看似簡單的場景,都有無數(shù)粉塵、細(xì)屑等微小物體(統(tǒng)稱為粒子)在運(yùn)動,要將它們的運(yùn)動規(guī)律統(tǒng)一模擬出來,難度可想而知。
波濤洶涌的大海、洗澡時(shí)飛濺的水花、落在身上的雨滴等液體的運(yùn)動。
難處:液體沒有固定的形狀,運(yùn)動軌跡難以捉摸。如果要模擬物體在液體中的運(yùn)動,比如海上航船的顛簸,難度就更大了。
鼻涕蟲、果凍、外星怪獸一類軟軟的物體的運(yùn)動。
難處:觀察抖動的果凍就能知道,軟軟的物體運(yùn)動起來,可以用“牽一發(fā)而動全身”來形容,需要在把握整體動作的時(shí)候關(guān)注身體的每一個(gè)細(xì)節(jié)。
行走、奔跑、打斗等人或動物身體的運(yùn)動。
難處:身體運(yùn)動不僅僅是關(guān)節(jié)或肌肉的活動,還與重力、慣性等息息相關(guān)。例如,在虛擬角色爬上高臺的畫面中,不但要展示出角色的動作,還要讓觀眾能感受到角色的“體重”,而不是輕飄飄的。
旗幟飄揚(yáng)、衣服抖動等布料的運(yùn)動。
難處:布料運(yùn)動的難度在于模擬布料和人體的互動。瞧,一個(gè)簡單的抬手動作,衣服就會產(chǎn)生各種不同的褶皺,更不用說穿脫衣服時(shí)衣服褶皺的復(fù)雜變化。
那么,這些難關(guān)都克服了嗎?
前面幾項(xiàng)基本上都克服了,就是最后的布料運(yùn)動還無法達(dá)到“完美”,因此,我們很少在電影中看到虛擬人物穿脫衣服的畫面。
那還真是“看起來簡單,做起來難”。
你瞧,物理引擎不但能模擬單一物體的運(yùn)動,還能設(shè)計(jì)復(fù)雜的運(yùn)動場景,比如:兩輛車相撞后,各自按照怎樣的路線運(yùn)行,它們激起的煙塵是怎樣的狀態(tài),車內(nèi)的人該如何運(yùn)動,等等。
聽起來,物理引擎好像很強(qiáng)大,但僅僅用來拍電影,有些大材小用了吧?
哈哈,被你說對了。
跟電影一樣,電子游戲的畫面也需要借助物理引擎來完成。與電影不同的是,游戲中的角色更自由,需要更加強(qiáng)大的物理引擎來“規(guī)范”他們的動作。
舉個(gè)簡單的例子,電影中的士兵只會往一個(gè)設(shè)定好的方向射擊,而游戲中的士兵可以在玩家的操作下,往任意方向射擊,子彈的飛行軌跡、擊中物體后的效果等都會因此發(fā)生相應(yīng)的改變。這就需要物理引擎對相關(guān)物體之間的關(guān)系進(jìn)行全方位的計(jì)算。
大家對網(wǎng)絡(luò)購物應(yīng)該非常熟悉了。在網(wǎng)上買衣服的一大問題,就是無法試穿。買家不知道這件衣服的樣式和大小到底是否適合自己,只能買了再說。
有研究人員估計(jì)遭遇過類似的煩惱,因此他們將物理引擎用到了在線試衣系統(tǒng)里。他們對衣服的材質(zhì)、重量、質(zhì)感、光澤等都進(jìn)行了逼真的模擬。用戶可以選擇與自己體形相似的虛擬模特試穿這些衣服,并且可以實(shí)時(shí)控制模特做出旋轉(zhuǎn)、跳躍、抬腿、下蹲等動作。用戶就能由此全方位了解衣服的情況。
等這項(xiàng)技術(shù)成熟推廣,我們足不出戶就能買到稱心如意的衣服了。
聽說過“兩個(gè)鐵球同時(shí)落地”的故事嗎?有了物理引擎,老師就可以像真的一樣演示在高塔上扔球了。
想驗(yàn)證用杠桿是否可以翹起地球?通過物理引擎將地球簡化成一個(gè)小球,再設(shè)置一根無限長的杠桿和一個(gè)不會被壓潰或移動的支點(diǎn),然后去看看結(jié)果就可以啦。
理論上,羽毛和鐵球在真空中會同時(shí)落地,可課堂上如何制造真空呢?找物理引擎幫忙就能實(shí)現(xiàn)。
有了物理引擎的幫助,這些與物理有關(guān)的經(jīng)典場景都能展現(xiàn)在課堂上,我們就能更直觀地了解物理的奧秘。
既然能走進(jìn)課堂輔助教學(xué),物理引擎自然能夠更進(jìn)一步,走上科學(xué)研究的崗位。據(jù)說,研究人員設(shè)計(jì)物理引擎的初衷之一,就是模擬火炮的彈道,再根據(jù)模擬結(jié)果修正火炮結(jié)構(gòu)。
除此之外,物理引擎在工程上還有許多用處,比如,可以模擬高速水流沖擊橋墩的情景,以測試橋墩的強(qiáng)度;可以對挖掘土壤的過程進(jìn)行仿真分析,以設(shè)計(jì)出結(jié)構(gòu)更合理的挖掘機(jī);可以模仿交通事故,來改進(jìn)車輛的安全性能。