Monday, October 09, 2006

HIMMG vol.04

上一回說道,一些我對 Collision Detection 的處理,希望大家明白吧。那麼這次說甚麼好呢?不如......就說說我是如何製作 Level Map Model,以配合「 Ngan-GINE'3D 」來製作遊戲吧。

大家也知道,我是用 MilkShape3D 這個工具來製作 3D Model 的了,在我製作的3D遊戲「 Final Spike 」中,90% 的 3D Model 都是用這個工具製作的,另外的 10% 是用了一個叫做 LithUnwrap3D,來 Unwrap 及調較 Texture UV,其實這個 MilkShape3D 可以做到甚麼的呢?很簡單的說,就是只可以用來做 Low-polygon model,加上 Skeleton Animation 及 Plugin SDK 功能罷了。所以,這軟件和一般的 3D Model 軟件比較 ( 例如:3DSMax、MAYA ... 等 ),可以說是完全比下去。

All-in-One Texture就使用 MilkShape3D 來製作遊戲,我做了數個實驗,究竟如何才能在有限的知識,和資源下,做到一些快速的 3D 遊戲呢?首先我要想的,是如果規劃一個場景的繪畫方法。因為我不懂 BSP Tree 或 QuadTree 之類的演算法,我便想到,有沒有可能以「人手方法」劃分整個場景呢?可能我的想法真的很天真地開始,人手方法,就是先繪畫好場景,整理好場景會有甚麼物件,盡量在「妥協」的方法來製作場景。最後我試出了一個方法,就是自己分好場景中的小區份,每個小區份用一場大 Size 的 Texture 來儲好要用的所有 Texture ( 如左圖,實際 size 為 512x512 ),這樣我便可以大大減少因為要換 Texture,而做成的速度延遲問題。

以上的方法,大家可以看看下圖例子:

Level Map Design

大家看到,我盡量規劃每一個小區,都會是一個方型,那麼我只需要利用 Camera 的 Frustum,做些 AABB 和 Frustum 之間的 Culling,除去不需要畫出來的小區便可以了。另外我之前曾經說過,我是使用另一組超 Low-polygon 的地圖資料,作為 Collision Detection 用,所以我不在此再說了。就是這樣,Ngan-GINE'3D 中處理 Level Map,「人手方法」的方案就製成了。

最後也說一說,我的 Level Map 是使用 Lightmap 的,但其實我沒有甚麼好方法去做的,因為我的方法就是......自己畫 ( 不要笑啊... )。

No comments: