Blender 3D:菜鳥到專業/構建天空盒
|
|
適用的 Blender 版本:2.49。 |
在遊戲引擎中為您的 3D 環境新增真實感的其中一種方法是建立天空盒。天空盒是一個大型立方體,其內部投影了 360° 環境。當玩家(相機)位於此環境中時,場景會以身處巨大世界中的錯覺進行渲染。這與 Quicktime VR 類似(有關示例,請參閱 http://www.fullscreen360.com/)。此外,透過將天空盒設定為一個簡單的立方體形狀,您可以將對圖形引擎的負擔降到最低。對於您的遊戲來說,這是一項巨大的優勢,且幾乎沒有開銷。
本教程將向您展示如何從全景照片中輕鬆建立天空盒。我最喜歡的部分是,您可以使用 Blender 和 Gimp 等免費工具輕鬆完成。
使用 Gimp 處理影像不在本教程的範圍之內... 請檢視其他有關使用該軟體的頁面。您應該瞭解如何編輯影像並應用 alpha 通道。(您也可以使用 Gimp 將極座標紋理應用到您的矩形影像,以建立魚眼影像。提示:它不是球化濾鏡。)
您可以使用普通數碼相機和三腳架拍攝全景影像。實現此目的的一種快速方法是在三腳架底座上每隔 30 度繪製標記(想象一下鐘錶上的小時)。在三腳架的旋轉部分做一個標記,以便您對齊拍攝的照片——共 12 張照片,每張照片間隔 30 度。然後,使用 Gimp 或令人難以置信的酷炫的 Autostitch 等程式將照片合併成一張大的全景圖。
或者,如果您像我一樣懶惰,您只需從網上獲取照片作為模板來建立原始影像。您還可以從許多地方免費下載非版權照片。一個用於多雲天空紋理的資源,以及全景攝影說明,是 Philippe Hurbain 的網站 Philo's Home Page。本教程將使用他版權免費的全景天空影像收藏中的魚眼天空照片。
您可能還需要一張地面的照片,除非您更喜歡在您的天空盒中使用真實的模型,例如建築物。這一 更早的章節 關於建立景觀可以被整合到設定您的天空盒中。但是,本教程將使用天空照片作為我們世界的上半部分,以及帶有 alpha 通道的全景景觀作為下半部分。我使用從 Accustudio 獲取的版權免費紋理建立了一個地面影像。
以下是我將使用的影像(您需要使用更高解析度的影像):請注意,天空上有樹木等。
注意:我已經用 alpha 通道勾勒出地面紋理的視界線,這將允許我將地面網格直接放置在天空網格上,並呈現出非常自然的感覺。
在 Blender 中開啟一個新檔案。您的預設新檔案可能是一個位於螢幕中心的兩個單位的立方體,帶有一個光源和一個相機。您可以刪除光源,因為我們不需要它。保留立方體,因為它將成為我們的天空盒。
立方體將是我們環境的中心,因此,如果您的游標未居中,請使用物件 -> 對齊 -> 游標到選擇。然後,從頂檢視 [鍵盤-7],使用 [鍵-空格鍵] 插入一個新的網格;將其設定為 UV 球體。我發現 32 段、32 環的球體就足夠了。我們從頂檢視建立球體,因為這是我們想要新增天空紋理的投影。
將球體放大,使其看起來像與您的立方體相比一個大型“競技場”,然後選擇並刪除下半部分的頂點,使用前檢視 [鍵盤-1] 和 [鍵-B] 建立一個邊界框。如果“選擇可見”已關閉,則可以一次性選擇所有頂點,這會有所幫助。
使用 [鍵-O] 開啟比例編輯,然後選擇最下面一行的頂點,並使用 [鍵-S] 將其放大,使球體的底部呈鐘形。由於天空紋理的投影將來自 Y 軸(天花板),因此我們需要球體的底部面呈一定角度,以捕捉紋理。(垂直於投影的面將看起來像塗抹。)使用 [鍵-PageUp] 和 [鍵-PageDown] 更改比例編輯的影響。線性或銳利衰減效果與球體形狀最匹配。
現在您可以將天空紋理新增到此網格了。在材質選單中,建立一個新材質和一個新紋理。確保透過單擊“無陰影”按鈕將您的材質設定為不接收陰影。然後,在紋理選單中,將紋理型別設定為影像,並單擊載入影像按鈕插入我們的天空紋理。回到材質 -> 紋理 -> 貼圖輸入選單中,您可能需要縮放影像以消除魚眼邊緣的扭曲紋理,方法是將大小設定為 0.950(對於 X、Y 和 Z)。
在這一點上,如果您願意,您可以重新定位相機並渲染場景以檢視您的天空網格的外觀。
我發現使用 [鍵-M] 移動到層命令將天空圓頂移動到一個新層最容易。然後您可以選擇立方體,如果需要,物件 -> 對齊游標到選擇,選擇頂檢視 [鍵盤-7],並像以前一樣插入另一個 UV 球體——但這次,請刪除頂部的半球頂點。我在“赤道”處保留了一排額外的頂點,放大後,用作“公告板”,以使用 alpha 通道顯示我們地面紋理的視界線。此球體應該比天空半球略小。
這次,我將使用管投影應用地面紋理,因此它會水平投影到網格上 [材質面板 | 貼圖輸入選項卡 | 管按鈕]。由於我的紋理上有一個 alpha 通道,因此我點選了紋理選單中的“使用 alpha”,並將貼圖到 -> Col 和 alpha 按鈕 [材質面板 | 貼圖到選項卡 | -> Col 和 alpha 按鈕]。您還需要在映象透明選單中設定 ZTransp [材質面板 | 連結和管道選項卡 | ZTransp 按鈕],以便您的 alpha 通道顯示在 envmap 中(它將成為您的天空盒),並將 alpha 設定為 0 [材質面板 | 材質選項卡 | A 滑塊 ],以允許蒙版區域透明。(alpha 通道似乎需要 Z 緩衝才能顯示在過程紋理上。)此外,您可能需要調整地面紋理的偏移量(Y 軸),以便視界線正確顯示在您的地面半球的“公告板”區域。
再次,您可以重新定位相機並渲染場景,以確保所有內容都已正確對齊。請務必啟用您移動天空網格的層。您的結果將類似於以下影像。在渲染螢幕中開啟 OSA 以獲得最佳效果。此外,請使用具有更清晰 alpha 通道的更高解析度影像——以下影像相當模糊,您可以看到視界線周圍有一個光暈。
最後一步是使用過程 Envmap 紋理將圓頂紋理投影到立方體上,這將成為我們的天空盒。選擇立方體並建立一個新材質。將材質設定為“無陰影” [材質面板 | 材質選項卡 | 無陰影按鈕]。新增一個新紋理,並將其型別設定為 Envmap。將 CubeRes [Envmap 選項卡 | CubeRes 設定 ] 設定為您希望天空盒的解析度(512 對於遊戲來說是一個很好的解析度;1024 或 2048 是相當高的解析度;在本教程中,我堅持使用低解析度)。如果您的天空和地面半球在物理上非常大,您可能還需要增加 ClipEnd 值以包含所有面。您可能希望將 Envmap 計算設定為 Anim,這樣您就不必在進行實驗時不斷釋放 envmap 資料。(Anim 會在每次渲染時自動清除 Envmap 資料,否則您必須單擊“釋放資料”才能重置 Envmap。)
建立 Envmap 紋理後,您應該可以渲染天空盒的 Envmap。如果您希望設定檔案格式,例如 JPG 或 PNG,您應該首先進行設定。然後,只需轉到渲染螢幕,然後單擊“渲染”。再次,確保所有層都可見。渲染窗口出現。首先,Blender 渲染立方體的環境貼圖。之後,將渲染相機檢視,此時您可以按 [鍵-ESC] 停止渲染——我們只對已經完成的環境貼圖感興趣。
再次選擇立方體,然後進入其紋理選單。您將在樣本紋理上看到新渲染的 Envmap。單擊紋理選單中的“儲存 Envmap”以儲存渲染的 Envmap。
Blender 環境貼圖以 3x2 個正方形矩陣的形式儲存,如下所示
立方體面按以下順序排列。
你現在可以將此影像作為環境貼圖紋理載入到一個新的立方體中,你可以將其整合到你的遊戲中作為天空盒。這個檔案也可以在 Gimp 中編輯,以去除任何不希望出現的物體,例如樹木、建築物、飛機尾跡等。另外,因為我在下半球使用了管狀投影,所以在環境貼圖的底部面,你會看到一個奇怪的星形圖案在“極點”。你的遊戲中很可能會有地板,所以你可能根本看不到那個面,但是挑剔的人可以透過在 Gimp 中巧妙地使用 Filters->Distorts->Polar Coords 過濾器或在 Photoshop 中使用 Filter->Distort->Polar Coordinates (Polar to Rect.) 過濾器來避免它。修補也可以很好地解決這個問題。
為了使天空盒在遊戲中顯示為靜態背景,請將其頂點父級關聯到當前活動相機物件。
Ira Krakow 的 Blender 2.49 天空盒教程:http://www.youtube.com/watch?v=azkk3JrM5Es















