使用 XNA 建立遊戲/3D 開發/匯入模型
在上一章中,我們學習瞭如何在何處查詢 3D 模型。真正的難題出現在您實際上想要在遊戲中使用它們時。有很多問題需要擔心。因此,這裡我們將向您展示如何匯入使用以下軟體生成的模型:
- Cinema4D
- Maya
- Blender
- Sketchup
- 其他
到您的 XNA 遊戲中。
本簡短介紹的主題是如何在 XNA 中匯入模型。我們將匯入部分內容放在引言中的原因很簡單…… 對於 .x 檔案或 .fbx 檔案來說,每次都是一樣的。
首先,模型中的骨骼和多邊形在 XNA 中受到限制
- 骨骼:最大 59,在 4.0 中最多 79
- 多邊形:取決於硬體
我將向您展示如何使用 msdn.com 網站上的簡單程式碼匯入模型。此演示展示了我們所需的最重要方法。演示
http://create.msdn.com/en-US/education/catalog/sample/skinned_model
首先,我們需要一個模型
Model currentModel;
接下來,我們看一下 LoadContent() 方法
protected override void LoadContent()
{
// Load the model.
currentModel = Content.Load<Model>("ModelName");
// Look up our custom skinning information.
SkinningData skinningData = currentModel.Tag as SkinningData;
if (skinningData == null)
throw new InvalidOperationException
("This model does not contain a SkinningData tag.");
}
LoadContent() 方法是匯入模型的唯一方法。我們目前不考慮動畫,但這是另一個主題。
http://create.msdn.com/en-US/education/catalog/sample/skinned_model
http://www.stromcode.com/2008/03/10/modelling-for-xna-with-blender-part-i/
http://www.stromcode.com/2008/03/11/modelling-for-xna-with-blender-part-ii/
http://www.stromcode.com/2008/03/13/modeling-for-xna-with-blender-iii/
http://www.stromcode.com/2008/03/16/modeling-for-xna-with-blender-part-iv/
FixSpix
Cinema 4D 是 Maxon 的 3D 建模工具,與 Autodesk Maya 相當。C4D 可以匯出 .fbx 檔案,然後可以匯入到 XNA 中。與 Google 的 SketchUp 不同,它無法直接匯出為 .x 檔案。
在下面的連結中,您可以找到有關 Cinema 4D 的有用連結
http://www.der-webdesigner.net/forum/cinema-4d-f3/linksammlung-cinema-4d-t5919.html
當您使用普通的 .fbx 匯出時,紋理有時不會被一起匯出。這是由 Maxon 的 C4D 引起的錯誤 - 可能可以,可能不行。
- 檔案
- 匯出
- 匯出為 .fbx
- 匯出
Settings for the normal import: http://iclone-freebies.wikispaces.com/file/view/fbxexport.png/176558803/fbxexport.png
In the link below you can find an exporting/importing plug-in for C4D: http://forums.creativecow.net/readpost/19/873735
YouTube Turtorial: http://www.youtube.com/watch?v=nX2k81T1eaQ
Download: http://www.cactus3d.com/Plugins.html
現在,您可以將 .fbx 檔案匯入到您的 XNA 程式中。它可能比匯出到 .x 檔案更可靠。
實際上,對於 XNA 來說,檔案是 .fbx 檔案還是 .x 檔案並不重要。對於建模者來說,重要的是他們正在使用的軟體。
--> 簡介
http://www.maxon.net/de/products/cinema-4d-prime/who-should-use-it.html http://de.wikipedia.org/wiki/Cinema_4D http://forums.creativecow.net/readpost/19/873735 http://www.cactus3d.com/Plugins.html http://iclone-freebies.wikispaces.com/file/view/fbxexport.png/176558803/fbxexport.png http://www.youtube.com/watch?v=nX2k81T1eaQ http://www.c4dcafe.com/ipb/topic/43560-coffee-script-export-scene-to-fbx/
sfittje

Maya 是 Autodesk 公司的商業 3D 電腦圖形軟體。它可以在許多不同的作業系統上執行,例如 Linux、Mac OSX 或 Windows。它用於所有 3D 應用,例如電子遊戲、動畫、電影或視覺效果。Maya 和 3Ds MAX 都來自 Autodesk,它們彼此相似。
Maya 和 XNA 的主要問題是兩者是用不同的語言編寫的。Maya是用OpenGL編寫的,而XNA是基於DirectX的。根據這個問題,將 .x 檔案從 OpenGL 匯入 DirectX 很棘手,但有一些工具可以管理它,例如 cvXporter。
如果您使用 cvXporter,以下是一些使用此工具的步驟。點選 http://www.chadvernon.com/blog/resources/cvxporter/
以下是如何在您的外掛不起作用的情況下管理問題的示例。點選 http://www.gamedev.net/topic/383794-exporting-x-files-from-maya-70/
如果 fbx 和 .x 匯入器不起作用,請僅執行這些步驟。我將在後面詳細介紹fbx 匯入器。
fbx 格式是以最簡單的方式匯出可以在 XNA 中使用的檔案。Maya 不支援 fbx 檔案格式,因此我們必須使用外掛。http://usa.autodesk.com/adsk/servlet/pc/item?id=10775855&siteID=123112
此外掛允許我們以 Maya 格式匯出 fbx 檔案。
真是巧合…Autodesk 知道很多問題,並且為 Maya 中的 fbx 檔案編寫了一整本電子書。因此,如果您在使用 fbx 匯出器時遇到問題,請使用此非常有用的連結。
fbx 和 Maya 的電子書:http://download.autodesk.com/us/fbx/2010/Maya_online/_index.html
--> 簡介
http://www.gamedev.net/topic/383794-exporting-x-files-from-maya-70/
http://www.chadvernon.com/blog/resources/cvxporter/
http://usa.autodesk.com/adsk/servlet/pc/item?id=10775855&siteID=123112
http://download.autodesk.com/us/fbx/2010/Maya_online/_index.html
FixSpix
3D Studio MAX,稱為 3ds MAX,是 Autodesk 的商業 3D 建模工具。在 Maya 和 3ds Max 之間的使用和邏輯之間,並沒有太多差異。唯一的區別是 3ds MAX 僅在 Windows 系統上執行。
首先,無法從 3ds Max 匯出.x 檔案,但 3ds Max 有很多非常有用的外掛。其中之一是 KWXPorts。
此工具允許您將 x 放入 3ds Max。XNA 還支援 FBX 格式。但您的模型的動畫和紋理可能會出現一些問題。
- 首先從上面的網路資源下載外掛並安裝該工具。
…幾分鐘後…
- 在 3ds Max 中
- 檔案 ->
- 匯出 ->
- KWXPort(格式) ->
- KWXPort 匯出選項
- KWXPort(格式) ->
- 匯出 ->
- 檔案 ->
- 幾何
- 匯入法線(光照)
- 使 Y 向上(以正確對齊)
- 匯出右手系網格(模型的網格)
- 材質
- 匯出材質
- 匯出紋理
- 動畫
- 匯出動畫:有一個包含您所有動畫的列表,如果您在 3ds Max 中設定了一些動畫。您可以選擇為不同的動畫命名並將這些動畫放在整個動畫的正確幀中。
- 最後
- 以二進位制格式匯出(提供最佳格式)
結果是三個檔案的組合。
- 紋理:nameofthemodel.png
- DirectX 檔案:nameofthemodel.x
- .X 日誌檔案:nameofthemodel.log
日誌檔案中包含對我們非常有用的資訊。頂點的數量……以及模型的整個骨骼結構,包括這些骨骼的完整層次結構。DirectX SDK 檢視器是一個很好的工具,可以檢查您的 .x 檔案。在這裡,您可以看到 .x 檔案中模型的法線、紋理等。
DirectX SDK http://msdn.microsoft.com/en-us/directx/default
-> 介紹
http://www.youtube.com/watch?v=h5gmTpvlFZI
http://3ds-max.software.informer.com/wiki/
http://en.wikipedia.org/wiki/Autodesk_3ds_Max
http://www.kwxport.org/
http://msdn.microsoft.com/en-us/directx/default
FixSpix
Blender 是 3D 建模軟體中的 Linux,它是一個完全開源的程式,可以在所有已知的作業系統上執行。
你可以在 Blender 中做任何事情,就像在 Maya 等其他商業工具中一樣……UV 貼圖、繫結、蒙皮……以及遊戲和電影的動畫製作。
這裡有一份 Blender 與 XNA 結合使用的好教程列表。
Part1: http://www.stromcode.com/2008/03/10/modelling-for-xna-with-blender-part-i/ Part2: http://www.stromcode.com/2008/03/11/modelling-for-xna-with-blender-part-ii/ Part3: http://www.stromcode.com/2008/03/13/modeling-for-xna-with-blender-iii/ Part4: http://www.stromcode.com/2008/03/16/modeling-for-xna-with-blender-part-iv/
不,Blender 無法在沒有外掛的情況下匯出到 .X。
- 檔案 ->
- 匯出 ->
- DirectX(.x)
結果是你的模型的漂亮的 .x 檔案。
再次,唯一解決方案是外掛。還有什麼?Blender 支援 Python 指令碼語言,這裡有一個用於匯出到 XNA 的好指令碼。
http://www.triplebgames.com/export_fbx__for_xna.py
-> 介紹
http://www.stromcode.com/category/xna/
http://www.blender.org/education-help/tutorials/
http://de.wikibooks.org/wiki/Blender_Dokumentation
http://de.wikibooks.org/wiki/Blender_Dokumentation
FixSpix
Sketchup 是一款來自 Google 的開源軟體,用於開發 3D 模型。有兩個不同的版本可用——“普通”版和 Pro Sketchup。在普通版中,3D 匯出功能受到限制。你只能將模型匯出為 2D 影像格式,如 .jpg、.png、.tif 和 .bmp,或者唯一支援的 3D 格式 COLLADA(.dae)。Pro 版本允許匯出為其他 2D 格式(.pdf、.eps、.epx、.dwg、.dxf)和其他 3D 格式(.3ds、.dwg、.dfx、.fbx、.xsi、.vrml)。
在 Sketchup 中,將 3D 檔案匯出為 .fbx 檔案非常簡單。
- 選擇檔案
- 匯出
- 3D 模型
- 匯出
The Export Model dialog box is displayed (Microsoft Windows). In the link below you can find information about the export dialog box and what settings you can conduct: http://sketchup.google.com/support/bin/answer.py?answer=114381
- 在“檔名”(Microsoft Windows)或“儲存為”(Mac OS X)欄位中輸入匯出檔案的名稱。
- 從“匯出型別”(Microsoft Windows)或“格式”(Mac OS X)下拉列表中選擇 FBX 匯出型別。
- (可選)單擊“選項”按鈕。將顯示 FBX 匯出選項對話方塊。
- (可選)調整 FBX 匯出選項對話方塊中的選項。
- (可選)單擊“確定”按鈕。
- 單擊“匯出”按鈕。
現在,你可以將 .fbx 檔案匯入到你的 XNA 程式中。它可能比匯出為 .x 檔案更可靠。
但還有另一種可能性!藉助免費外掛,我們也可以直接將 3D 模型匯出為 .x 檔案,從而輕鬆地將其匯入到我們的 XNA 程式中。
In the link below you can find a really nice tutorial which explains step by step the usage of this plug-in:
http://www.jamesewelch.com/2008/03/07/how-to-load-a-google-sketchup-model-into-a-xna-game/
Another link... to another plug-in:
http://www.3drad.com/Google-SketchUp-To-DirectX-XNA-Exporter-Plug-in.htm
--> 簡介
http://sketchup.google.com/support/bin/answer.py?hl=en&answer=36203 http://sketchup.google.com/support/bin/answer.py?answer=114380 http://sketchup.google.com/support/bin/answer.py?answer=114381 http://www.jamesewelch.com/2008/03/07/how-to-load-a-google-sketchup-model-into-a-xna-game/ http://www.3drad.com/Google-SketchUp-To-DirectX-XNA-Exporter-Plug-in.htm/ http://forums.create.msdn.com/forums/p/69433/424091.aspx/ http://forums.create.msdn.com/forums/p/31246/177968.aspx
sfittje
看起來將模型匯出為 .fbx 或 .x 檔案以及將其匯入 XNA 框架非常簡單。但實際上並非如此。當你一直在閱讀有關匯入 3D 模型的論壇時,你必須斷言,可能會出現許多問題。紋理沒有顯示,模型在 XNA 遊戲中顯示錯誤……
為了避免建模軟體引起的這些錯誤,你可以使用免費的 Autodesk Softimage Mod Tool。
http://usa.autodesk.com/adsk/servlet/pc/item?id=13571257&siteID=123112
但你們中的大多數人不會自己建立模型。那麼我們“尋找免費模型”的模型呢?在我們的介紹中,解釋了匯入的“正常”方式,以及對於 XNA 框架,副檔名無關緊要。
因此,我將重點關注這些檔案的匯出優缺點。
這兩者之間的區別
- FBX 表示建模工具中的整個場景,其中包含動畫、修改器、幾何體和其他屬性,並且具有相當高的細節。
- .X 格式僅儲存執行時渲染動畫幾何體所需的資料——該格式沒有對諸如相機、燈光、變形器或修改器之類的東西提供明確的支援。
有關差異的更多詳細資訊,請參見下面的連結。
http://forums.create.msdn.com/forums/p/31246/177968.aspx
| 優點和缺點 | .fbx | .x |
|---|---|---|
| 優點 | 3DS Max 和 Maya 原生支援 .fbx 支援動畫 支援骨骼和蒙皮 支援嵌入式媒體 |
檔案大小更小 支援動畫 支援骨骼和蒙皮 是一種專門為 3D 遊戲模型設計的格式 支援嵌入式媒體 |
| 缺點 | 匯出器中有許多不需要的選項,因為它不是專門針對遊戲的 不支援檔案中的動畫片段 通常比 .X 大一個數量級 |
需要第三方匯出器 |
現在你需要衡量並決定哪種方法最適合你。但請注意,只能將 .fbx 或 .x 檔案匯入你的程式!
在這裡你可以找到關於“匯入模型”主題的幫助。
- 在第 282 頁
http://books.google.com/books?id=P049UmI9GuYC&pg=PA282&dq=xna+importing+models&hl=de&ei=slTzTbCzCsXxsgbA-8W1Bg&sa=X&oi=book_result&ct=result&resnum=3&ved=0CDgQ6AEwAg#v=onepage&q&f=false
- 在第 261 頁
http://books.google.com/books?id=jjJ1tH1k4uEC&pg=PA257&dq=xna+importing+models&hl=de&ei=slTzTbCzCsXxsgbA-8W1Bg&sa=X&oi=book_result&ct=result&resnum=5&ved=0CEQQ6AEwBA#v=onepage&q=xna%20importing%20models&f=false
http://forums.create.msdn.com/forums/p/57219/349404.aspx http://forums.create.msdn.com/forums/p/31246/177968.aspx http://books.google.com/books?id=P049UmI9GuYC&pg=PA282&dq=xna+importing+models&hl=de&ei=slTzTbCzCsXxsgbA-8W1Bg&sa=X&oi=book_result&ct=result&resnum=3&ved=0CDgQ6AEwAg#v=onepage&q&f=false http://books.google.com/books?id=jjJ1tH1k4uEC&pg=PA257&dq=xna+importing+models&hl=de&ei=slTzTbCzCsXxsgbA-8W1Bg&sa=X&oi=book_result&ct=result&resnum=5&ved=0CEQQ6AEwBA#v=onepage&q=xna%20importing%20models&f=false