筆記:《遊戲開發物理學》

漆楚衡發表於2015-03-28

筆記:《遊戲開發物理學》

ISBN:7-121-00208-6

這本書的內容主要可以分成三塊

  1. 基礎物理背景
  2. 具體情境
  3. 實時模擬

因為公式恐懼症,這本書我沒有細看。 主要是翻來覆去地翻閱,希望除了公式之外,這本書還能給我提供一些思想上的指導,也還有收穫。

我一直對遊戲和動畫很有興趣,不過一直也沒有深入,最都就是用html5的canvas畫一些小動畫。

我做動畫的模式主要就是處理一些最基本的運動,再加上對粒子的繪製。沒有加入過更復雜的效果。

看了這本書之後發現自己的認識不夠深入。

我的實踐主要就停留在了運動學上面,沒有引入力,也就沒有動力學。這樣有兩方面的後果

  1. 只能編寫簡單的粒子運動(複雜運動不好控制),而真實感是通過對引數的除錯尋找的
  2. 很難整合多種控制引數,引數多了,尋找一組較為真實的引數就很困難了

其實還有,我主要寫的是粒子的動畫,所以根本沒有涉及轉動方面的東西,而且粒子都是一樣的,碰撞處理也很簡單。

統一格式

看了這本書以後得到的一個最重要的觀點就是通過力來處理模擬世界裡的物體運動和物體間的相互作用(當然,真實世界本就如此)

這樣,可以統一“輸入”的“格式”,比如我們有一個賽車遊戲,可以通過鍵盤來控制油門。

可以直接由賽車本身儲存一個以畫素為單位的速度欄位,而鍵盤輸入則可以直接改變該欄位(加速度)。

通過這種方式,經過對速度加速度的嘗試,也可以調整出比較真實的場景。

但是如果此時希望在遊戲中加入對賽車的影響又如何?如果我們希望有不同體積與質量的賽車由如何?

剛才我們所得到的引數沒有任何的現實意義,只不過是可以驅動動畫的經驗數值。此時環境的更改即意味著需要重新嘗試它們。

如果我們用更統一的場景呢?

設想,我們將運動與力的作用分開,形成兩部分

  1. 與顯示有關的是運動部分,包括速度加速度等,它們會對映為螢幕上的運動
  2. 另一部分與改變運動有關,即,現在的鍵盤輸入對映為

最簡單的賽車只需要給定質量引數就可以實現初始賽車遊戲的功能。

而風,只不過是另一種輸入()。而體積也不過是引起了阻力,是的,

此時我們希望加入任何真實世界本來就有的現象都不會與之前的勞動衝突。

實際上,這只不過是表現出原有系統將一些物理引數固化隱含表示了。

如果在遊戲中尋求的是真實感,那麼正確的建模方法應該是向真實世界學習。

很汗顏自己喜歡做動畫卻一直沒有領悟到這句話。

力的作用不僅僅表現在同一“輸入格式”上,力也是粘合物理場景中各個獨立單元的“膠水”。

如果嚴格按照物理來建模,那麼,一個封閉的模型環境只需要一組啟動引數就可以執行下去了。

而對物體的控制則表現到對物體施加怎樣的影響。

而不是我之前的做法:在運動學層面規定每一個物體的軌跡

這也是為什麼我一直只能做出來簡單的移動和旋轉,主角永遠都是粒子。

反思

至於我為什麼一直裹足不前,沒有自己建立這一套思想?

我想應該是懶惰,也沒有找到很好的引導。

canvas(以及其它基礎圖形介面)所提供的就是直接操作螢幕的能力。

我看到了別人的作品也只是那種控制螢幕上的東西的那種。

沒有見過大型的(自己也沒耐心去看)動畫,也就沒有見過複雜到上升抽象層次的必要。

所以一直也就停留在了手動在螢幕上控制運動的狀態。做不出來的效果也未深究。

應該學會對問題進行抽象,發覺本質

相關文章