資源描述:
《游戲物理引擎開發(fā)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第1章概述第1章概述物理學(xué)一直是計(jì)算機(jī)游戲的熱點(diǎn),若缺乏物理引擎的支持,動(dòng)作類游戲便會(huì)黯然失色。同時(shí),這一趨勢也逐漸蔓延至其他風(fēng)格的游戲中,包括戰(zhàn)略游戲以及猜謎類游戲。針對這一發(fā)展趨勢,多家中間件公司均提供了高性能的物理模擬器。另外,多款大制作游戲均體現(xiàn)了商業(yè)級(jí)物理引擎之特征。然而,商業(yè)級(jí)軟件包通常價(jià)格不菲,對于廣大開發(fā)者而言,“定制型”物理解決方案通常兼具經(jīng)濟(jì)性、操控性以及靈活性。盡管如此,物理學(xué)依然充滿了神秘感,且與數(shù)學(xué)密不可分,因而令人望而生畏。2000年,我曾著手設(shè)計(jì)通用物理引擎,當(dāng)時(shí)的情況可描述為:資料匱
2、乏且無代碼可用,同時(shí),該領(lǐng)域內(nèi)充斥著諸多自相矛盾的信息。天道酬勤,經(jīng)過不懈的努力,一款商業(yè)級(jí)物理引擎終于誕生。當(dāng)然,這一經(jīng)歷本身也是一個(gè)自我提高和學(xué)習(xí)的過程。在隨后的5年中,它與其他商業(yè)級(jí)物理系統(tǒng)頻繁地出現(xiàn)于多款游戲中。本書直接體現(xiàn)了作者多年的努力成果和開發(fā)經(jīng)驗(yàn)。關(guān)于游戲物理,相關(guān)書籍、網(wǎng)站和文章不勝枚舉,然而卻鮮有資料介紹物理引擎的解決方案,即適用于游戲中的、較為全面的模擬技術(shù)。本書旨在引領(lǐng)讀者構(gòu)建物理引擎,并以循序漸進(jìn)的方式對其進(jìn)行分析,進(jìn)而體現(xiàn)構(gòu)建過程中的設(shè)計(jì)決策。在本書的指導(dǎo)下,讀者可對示例物理引擎實(shí)施進(jìn)一
3、步擴(kuò)展,構(gòu)建自己的物理系統(tǒng),進(jìn)而展示不同的設(shè)計(jì)理念。1.1游戲物理物理學(xué)包含了豐富內(nèi)容,并可進(jìn)一步劃分為數(shù)百個(gè)子學(xué)科,各學(xué)科對物理學(xué)中的不同問題予以關(guān)注,例如光學(xué)或星球中的核反應(yīng)。其中,某些內(nèi)容適用于游戲,例如光學(xué)原理。據(jù)此,讀者可嘗試模擬光線的傳播和反射行為,以使圖像具有更為真實(shí)的外觀——這正是光線跟蹤的用武之地,在多個(gè)場合中均可看到它的身影。然而,盡管上述內(nèi)容隸屬于物理學(xué)范疇,但并非是本書所討論的游戲物理學(xué),本書將對此加以深度考察。某些物理學(xué)知識(shí)與本書并不存在直接關(guān)聯(lián),例如,如果游戲的賣點(diǎn)并非是展示核反應(yīng)這一復(fù)
4、雜的技術(shù),核物理模擬往往較少出現(xiàn)于游戲中?!?·第1章概述實(shí)際上,游戲物理僅涉及物理學(xué)中的某些經(jīng)典理論,即重力和其他作用力模式下的用于控制物體運(yùn)動(dòng)方式的物理定律。在學(xué)術(shù)領(lǐng)域內(nèi),部分定律已被最新理論所替代,例如相對論和量子論。在游戲中,此類定律常用于展示實(shí)體對象的真實(shí)運(yùn)動(dòng)行為,包括質(zhì)量、慣性、反彈行為以及浮力。游戲物理學(xué)基本上與首批游戲同時(shí)誕生,并用于模擬粒子的運(yùn)動(dòng)方式,包括火花、爆竹、彈道模擬、焰火以及爆炸效果;近30年來,物理模擬還用于飛行模擬器中;近期,物理模擬廣泛出現(xiàn)于汽車工業(yè)中,進(jìn)而提升輪胎、懸掛系統(tǒng)以及發(fā)
5、動(dòng)機(jī)模型的精度。隨著處理性能的不斷提升,視覺效果體現(xiàn)了更為豐富的內(nèi)容。例如,箱體可隨意移動(dòng)、堆放;墻體被摧毀時(shí)所展現(xiàn)的灰飛煙滅效果——此類視效均屬于剛體物理學(xué)范疇,讀者可稍加擴(kuò)展,即可獲得“軟物體”的行為方式,例如布料、旗幟以及繩索。近期出現(xiàn)的布娃娃系統(tǒng)即模擬了人類骨骼系統(tǒng)的行為方式,包括絆倒、跌倒以及掙扎時(shí)的各種動(dòng)作。本書將對物理學(xué)內(nèi)容進(jìn)行系統(tǒng)、全面的介紹,并不斷完善物理引擎中的相關(guān)組件,進(jìn)而支持粒子效果、飛行模擬、車輛物理行為、箱體對象的運(yùn)動(dòng)、對象被摧毀時(shí)的視效、布料以及布娃娃系統(tǒng)等內(nèi)容。1.2物理引擎盡管游戲
6、物理學(xué)可視為一類新生事物,但近30年來,其實(shí)現(xiàn)方式發(fā)生了顯著的變化。最初,各類視效僅對自身內(nèi)容進(jìn)行編程設(shè)計(jì),對應(yīng)物理學(xué)內(nèi)容僅局限于某一游戲作品。例如,弓箭沿某一軌跡運(yùn)行,開發(fā)人員針對該軌跡方程予以編程實(shí)現(xiàn)。除此之外,該方程別無他用。針對簡單的模擬操作(代碼量較少且物理應(yīng)用范圍有限),該過程工作良好。稍后將會(huì)看到,基本的粒子系統(tǒng)將包含數(shù)百行代碼,隨著復(fù)雜度的不斷增加,直接獲取令人可信的物理效果將變得越發(fā)困難。例如,在首款Half-Life游戲中,當(dāng)玩家移動(dòng)箱體時(shí),錯(cuò)誤的物理實(shí)現(xiàn)代碼使得箱體對象以一種奇怪的方式運(yùn)動(dòng)。物
7、理效果的實(shí)現(xiàn)難度以及多款游戲中的同一效果迫使開發(fā)人員尋找通用的解決方案,進(jìn)而實(shí)現(xiàn)代碼的復(fù)用。復(fù)用技術(shù)體現(xiàn)了某種通用特征,例如,彈道模擬器僅處理弓箭的運(yùn)動(dòng)軌跡,并于隨后對其進(jìn)行硬編碼。若同一段代碼需要處理子彈的運(yùn)動(dòng)行為,則軟件系統(tǒng)須對特定的彈道軌跡進(jìn)行抽象,進(jìn)而生成具有某種共性的物理方案——這體現(xiàn)了物理引擎的含義,即基于物理學(xué)的公共代碼段,而非針對各游戲方案進(jìn)行程序設(shè)計(jì)。這里的問題是,若存在特定代碼對弓箭對象進(jìn)行模擬,則該操作可勝任模擬過程中的全部任務(wù);若采用通用引擎模擬任意彈道軌跡,針對當(dāng)前弓箭對象,則需向引擎提供
8、該對象的各類特征,因而需要設(shè)定弓箭、子彈以及箱體的屬性。這一重要差別須引起讀者的關(guān)注。通常情況下,物理引擎可視為一類大型計(jì)算器,即執(zhí)行數(shù)學(xué)運(yùn)算并對物理行為進(jìn)行模擬,且并不了解模擬的具象內(nèi)容。對此,除了引擎自身之外,讀者還需提供表達(dá)游戲關(guān)卡的特定游戲數(shù)據(jù)?!?·第1章概述盡管各類游戲數(shù)據(jù)將貫穿于本書中,但本書重點(diǎn)并非討論數(shù)據(jù)的獲取方式。在商業(yè)級(jí)引擎中,關(guān)卡編輯