2007-04-21

Normal map[製作]

normal map的座標系確定後,接下來整理一下normal map的製作方式。

一般製作normal map的方式大概有以下幾種:

  1. 製作 bump mapnormal map
  2. 製作高面數物件以及低面數物件來產生 normal map
  3. 拍照法

第3的方法可參考 http://zarria.net/nrmphoto/nrmphoto.html。以下針對1, 2做法做個說明。

製作bump mapnormal map

製作
bump灰階高低圖透過轉換工具產生normal map。這個方法只適合產生tangent spacenormal map製作的流程如下:

  • 製作bump圖。圖必須是RGB channel, 長寬必須是2的冪次方。
  • 使用normal map轉換工具產生Y-upnormal map


NVIDIA Photoshop Normal map filter plug-in

紅色框的Invert-Y一要勾選, Wrap建議勾選

以下是試做bump mapnormal map的試做結果

製作高面數物件以及低面數物件來產生 normal map

這個做法就是製作高面數的物件, 把高面數的normal 儲存成normal map。目前美術人員常使用的 3ds max, Maya, XSI等軟體都有內建高面轉低面數的工具,所以都可以使用這些工具製作高面數模型來轉換輸出。不過現在 Zbrush/Mudbox 這類 3D建模軟體的出現,使得 normal map 的製作更有效率。以下說明的是使用Zbrush/Mudbox軟體轉normal map的製作方式.。


使用ZBrush

製作的流程如下:

  1. 先用3DS maxMayaXSI等等製作遊戲使用的低面模型,並把UV拆好。ZBrush會使用同樣的UV資料來產生normal map
  2. 輸出OBJ格式。
  3. ZBrush 使用Tool->import 載入OBJ檔案。
  4. 使用ZBrush 製作物件細節。
  5. 使用ZMapper工具產生normal map
    產生Y-upnormal map設定方式如下圖所示:

    注意圖中紅色框框:

    • Tangent space N.Map 必須勾選,才能產生tangent spacenormal map
    • Flip Image Vertically 必須勾選。
    • Interpolate/RayTrace : 計算normal map的方式, Interpolate 比較快,Ray Trace會比較慢。理論上ray trace品質應該會比較好才是。
    • 其他參數使用預設值。
    直接開啟ATI/Maya/NVIDIA tangent space設定檔也可以產生Y-up的normal map。
  6. Texture介面export normal map輸出檔案。

以下是使用ZBrush製作normal map試做的結果:



使用Mudbox


製作方式與Zbrush差不多,也是製作低面模型輸出OBJ檔案到mudbox製作細節。不過目前測試的結果發現mudbox產生normal map Texture Baking工具 效果不是很理想,所以看到網路上一些美術好手的做法是將高面數的物件匯出OBJ檔案,再使用3DS MAX/Maya/XSI透過高低面產生normal map的工具來產生normal map。3DS MAX/Maya/XSI 產生Y-up 的normal map設定可參考http://sd-art.wikispaces.com/normalMapping