跳轉到內容

Blender 3D:菜鳥到高手/基礎動畫/彈跳

來自華夏公益教科書,為開放世界提供開放書籍

如何製作一個逼真的彈跳球!

[編輯 | 編輯原始碼]

本教程假定您具備基本的 Blender 知識,以及一些有關使用 Blender 網格和關鍵幀基礎知識的 Blender 面板。瞭解 IPO 曲線在後面會很有用,因為我們會進一步學習更高階的技術。

移動一個球能有多難?

[編輯 | 編輯原始碼]

在螢幕上放置一個球體並將其動畫設定為上下移動非常容易,但說實話,它看起來不像彈跳球。它不會以任何方式令人信服。

為了可信,球體必須使用一些良好的動畫最基本原理。特別是,球體必須在落下、撞擊地面、反彈和再次升起準備再次落下時 **壓縮** 和 **拉伸** 以及改變 **速度**。只要稍微努力,我們就能讓那個無聊的球體看起來栩栩如生!

為什麼要使用網格?

[編輯 | 編輯原始碼]

可以使用不使用網格物件的簡單彈跳球動畫,但使用網格,我們不僅可以彈跳球體。例如,一旦我們有了我們想要的彈跳球,我們就可以為球體新增旋轉,使其在空中旋轉和彈跳,然後,隨著彈跳減少,球體可以滾動到靜止。如果不使用網格,這將是一個更復雜的練習,因為旋轉的壓縮和拉伸的球體看起來像是它在空間中搖晃(就像讓一個扁平輪胎的扁平部分圍繞輪胎旋轉,而不是始終保持在底部,即使車輪在轉動)

那就開始吧

[編輯 | 編輯原始碼]

首先,在 **頂檢視**(NUM7)中新增一個 UV 球體(空格鍵新增>網格>UV 球體)。在頂檢視新增物體很重要,以保持它們的 **Z 軸** 向上對齊。根據需要在球體上設定平滑和細分曲面。按下 Tab 鍵返回 **物體模式**,然後立即新增一個網格(空格鍵新增>網格)。調整大小(S 鍵)以使其緊密包圍球體。使網格的邊緣與球體的圓周對齊,因為這將使動畫更容易。

(預設情況下,網格物體名稱為“網格”。最好為所有物體提供唯一且合理的名稱,尤其是在您計劃建立複雜場景時。因此,您可以將球體命名為“Red_Ball”,將網格命名為“Red_Ball_Latt”或類似名稱,以便以後輕鬆引用和識別。) (菜鳥小貼士:我養成了用全部大寫字母命名一切的習慣。隨著場景變得越來越複雜,我可以輕鬆地跟蹤我已經命名了什麼以及需要命名什麼。)


UV 球體在選定網格內的頂檢視

讓網格變形球體

[編輯 | 編輯原始碼]

在 Blender 2.4 之前,物體是透過網格變形選項與網格關聯的。在 2.4+ 版本中,您可以選擇物體(球體)併為其應用網格修改器(Ob: 網格)。但是,如果您使用這種新方法,球體將不會移動到網格移動的位置,並且當網格壓縮時球體也不會壓縮,而我們希望它做到這兩點。

幸運的是,您仍然可以使用舊的 **關聯選項**,然後使用修改器面板使網格變形“真實”。因此,選擇球體,然後按 SHIFT 鍵選擇網格,然後按 **CTRL-P** 鍵進行關聯,並選擇“**網格變形**”選項。如果您現在只選擇球體,按下 **F9** 鍵,檢視修改器面板,您將看到“**網格父級變形**”的列表,以及“**設為真實**”按鈕。您可以忽略此按鈕或按一下它。現在它實際上並不重要。如果我們想要對球體做一些奇怪的事情,比如踢它或以其他複雜的方式變形它,那麼我們必須使用“真實”網格修改器選項。

因此,這可能不是使用網格的最純粹方法,但它是實現我們想要的結果的便捷方法。基本上,它有效並且相當直觀。


使用關聯選項的網格修改器螢幕。


如果您按下“設為真實”,您將啟用完整的網格修改器。

(在後面的版本中,似乎這些都不需要。只要關聯了它,就會出現完整的網格螢幕。)

您可以透過選擇網格並調整大小、移動或旋轉它來輕鬆地檢查網格是否按我們想要的方式工作。**球體應該做網格做的一切。**我並不想讓這成為關於網格的完整課程,因此,如果您不理解以上任何內容,或者您確定您的網格沒有按預期工作,那麼請在繼續之前學習一些關於 網格 的知識。

開始動畫製作!

[編輯 | 編輯原始碼]

對於我們的基本動畫,我們將使用僅 23 幀,從球體處於較高位置開始,然後落下、壓縮、反彈,並最終回到起始位置。當在 3D 視窗中回放時,它將迴圈,我們會看到球體在一個地方永遠彈跳。

這部分在“SCR:1 - 動畫”視口配置中更易於完成。透過右鍵單擊調整視口大小箭頭並選擇“拆分割槽域”,然後建立一個頂檢視、側面檢視等,在視口中開啟多個正交檢視也很有用。

轉到 **正面檢視**(Num1)按下 F10 並將您的起始(Sta)幀設定為幀 1,將您的結束幀設定為幀 23。然後確保您處於 **幀 1**(Shift+左箭頭)以開始動畫製作。請注意,我們正在 **對網格進行動畫製作**,而不是對球體進行動畫製作。我們對網格所做的所有操作都會直接影響球體。

注意:對網格的所有修改都必須在“物體”模式下進行。否則,它們會影響所有幀。

選擇網格(**不是**球體),然後在相應的幀上執行以下操作

  • **幀 1:**按下 I 鍵併為 LocRotScale 設定一個 **關鍵幀** - 球體的起始位置(較高)。
  • **幀 11:**將網格移動到地面級別,並再次為 LocRotScale 設定 **關鍵幀** (現在保持落下的距離很小)
  • **幀 13:**將網格保持在與幀 11 相同的位置,並再次為 LocRotScale 設定 **關鍵幀**。
  • **幀 23:**將網格移動回起始位置(如果需要,可以使用 Num(N)面板)並再次為 LocRotScale 設定 **關鍵幀**。

(菜鳥注意- 這可能看起來很明顯,但在插入關鍵幀之前移動網格。)

這四個幀提供了基本的上下動畫,底部有一個暫停。我們可以新增幀 12 上的壓縮以完成。

  • **幀 12:**將游標放置在網格的底部,然後將旋轉/縮放樞軸設定為“3D 游標” 沿 Z 軸縮小網格 **S 鍵-Z 鍵**,檢視球體壓縮。再次按下 **I 鍵** 設定 LocRotScale 的關鍵幀。

設定完所有五個關鍵幀後,你可以迴圈播放動畫,你應該可以在我們剛剛設定的關鍵幀上看到以下結果。
我們五個關鍵幀中,3D 視窗的正面檢視截圖。

現在,如果你在3D 視窗中按下Alt-A,你應該看到球在反彈。即使壓縮只發生在一幀上,我們的大腦仍然能正確地解讀它,並且比沒有壓縮的動畫有了很大的進步。 (按下RMBESC停止動畫播放)

如果你有一個設定好的相機和燈光,你可以渲染動畫並使用Blender的“PLAY”按鈕迴圈播放渲染的動畫。 在頁面底部檢視根據以上步驟製作的 OpenGL 渲染結果。 為球體和地面新增材質,可以獲得更有趣的結果。

檢視 IPO 曲線

[編輯 | 編輯原始碼]

如果你想讓球反彈三次,你可以重複以上操作三次——如果你有耐心的話——但Blender有更好的、更簡單的方法。

選擇 Lattice,然後開啟一個 IPO (InterPOlation) 視窗,放大關鍵幀組。如果從右側的通道列表中選擇 LocZ 和 SizeZ,你應該會看到類似於下圖的畫面(我在截圖中添加了標籤)。

注意這裡 IPO 型別為“物件”。純粹主義者可能會對此感到不安或困惑,但請記住,我們並沒有真正地以純粹的 Lattice 修改器形式使用 Lattice。 不用擔心,它能正常工作。


Lattice 的 IPO 曲線,顯示 LocZ 和 SizeZ 通道。

它顯示了 Lattice 在 Z 軸上的相對位置和 Z 軸上的大小。你可以看到,大小在第 11 幀之前保持不變,然後減小,然後恢復並保持不變直到第 23 幀。類似地,LocZ 曲線顯示了球體從高處開始,下降,然後在再次上升之前停止。LocZ 曲線的圓形底部是因為 IPO 曲線映射了 Lattice 的中心點,當我們壓縮它時,中心點會略微降低。

特別值得注意的是,預設情況下,Blender 使用貝塞爾曲線作為 IPO,這使得曲線呈現出圓形的頂部。這意味著球體開始緩慢向下移動,然後加速直到到達底部。同樣,當它接近頂部時,它會再次減速。這很好,因為這正是現實生活中球體上升和下降時發生的情況 (它可以做得更好——但這是一個良好的開端)

在 IPO 視窗中,選擇兩條曲線,然後按下KKEY,你將會看到每個關鍵幀由一條垂直線指示。(注意: 如果你記不住這個快捷鍵,也可以按下檢視->顯示關鍵幀——過去這對我很有幫助)。


設定為顯示關鍵幀的 IPO 視窗

Bouncing ball animated GIF
彈跳球的動畫 GIF

按下AKEY選擇所有關鍵幀,然後複製 (Shift-D) 它們。曲線看起來會變形,但當你將幀向右拖動時,它們會自動排列。將它們放置在“第一”幀在第 24 幀處,而新結束幀現在在第 46 幀處。重置場景 (F10) 視窗中的結束幀,然後再次觀看動畫。效果還不錯。你可以重複這個過程來實現更多的反彈。(要讓它在一個長動畫中永遠反彈,請忽略上述步驟,只需在曲線選單中將“擴充套件模式”設定為“迴圈”。你可能需要稍微調整一下第一幀和最後一幀的曲線,但你只需要做一次,Blender 會將更改應用到所有其他迴圈)。

新手提示: 不用 IPO 視窗,轉到圖形編輯器。我無法找到任何在每個關鍵幀上顯示黃色線的方法,如上圖所示,但使用 A  在每個關鍵幀上放置貝塞爾控制點。我需要進行實驗才能弄清楚如何使用它們。 SHIFT  D  與上面相同。

對於一個開端來說還不錯,但要讓這個球體達到申請動畫工作的標準,還有很多事情要做。

注意: 在更新版本的 Blender 中,你可以進入圖形編輯器,使用 AKEY 選擇所有圖形,然後選擇通道-外推模式-設定為迴圈。這將外推現有圖形以覆蓋所有幀。

儲存動畫

[編輯 | 編輯原始碼]

你如何在 Blender 中指定儲存動畫幀的位置?答案就在渲染設定 (F10) 中的“輸出”迷你視窗中。 在視窗頂部附近有兩個可編輯的文字欄位,第一個在我的 Linux 系統上最初設定為“/tmp/”,第二個設定為“//backbuf”。第一個是輸出路徑名或目錄字首,用於在按下“ANIM”按鈕時將生成的幀儲存為 JPEG 檔案。如果它不包含“#”字元,則它用作目錄字首;因此,預設情況下將動畫幀儲存為/tmp/0001.jpg, /tmp/0002.jpg等等。另外,如果你在檔名規範中輸入了包含“#”字元的字元,那麼這些井號將被替換為幀號。因此,如果我將欄位設定為“/home/ldo/Documents/BlenderTuts/ball####.jpeg”,則幀將被儲存到該/home/ldo/Documents/BlenderTuts目錄,並命名為ball0001.jpeg, ball0002.jpeg等等。

接下來做什麼?

[編輯 | 編輯原始碼]

在現實生活中和典型的卡通片中,球體不會一直在一個地方無限反彈。它們會移動並逐漸失去反彈力,然後滾動到停止。而且它們比我們正在製作的彈跳球更有特點。

接下來需要考慮的事項

  • 完善壓縮——保持體積
  • 新增拉伸
  • 觀察加速和減速
  • 讓球體在反彈時旋轉
  • 隨著時間的推移降低反彈高度
  • 讓球體在反彈時四處移動

檢視此動畫連結 (580kb, AVI-DivX) 以瞭解如何透過多花一點力氣就能獲得有趣的結果。 but its k? k

彈跳球動畫原理: http://www.idleworm.com/how/anm/01b/bball.shtml

Blender 2.49B 彈跳球動畫: http://www.youtube.com/watch?v=BEY_6dFdUJY

Blender 2.49B 向量模糊動畫,為動畫新增真實感: http://www.youtube.com/watch?v=qY4WcNgEXv8

華夏公益教科書