跳轉到內容

使用 XNA 建立遊戲/3D 開發/匯入模型

來自華夏公益教科書,開放世界的開放書籍

匯入模型

[編輯 | 編輯原始碼]

在上一章中,我們學習瞭如何在何處查詢 3D 模型。真正的難題出現在您實際上想要在遊戲中使用它們時。有很多問題需要擔心。因此,這裡我們將向您展示如何匯入使用以下軟體生成的模型:

  • Cinema4D
  • Maya
  • Blender
  • Sketchup
  • 其他

到您的 XNA 遊戲中。

本簡短介紹的主題是如何在 XNA 中匯入模型。我們將匯入部分內容放在引言中的原因很簡單…… 對於 .x 檔案或 .fbx 檔案來說,每次都是一樣的。

現在,如何將模型匯入 XNA 框架?

[編輯 | 編輯原始碼]

首先,模型中的骨骼和多邊形在 XNA 中受到限制

  1. 骨骼:最大 59,在 4.0 中最多 79
  2. 多邊形:取決於硬體

我將向您展示如何使用 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 檔案匯出

[編輯 | 編輯原始碼]

當您使用普通的 .fbx 匯出時,紋理有時不會被一起匯出。這是由 Maxon 的 C4D 引起的錯誤 - 可能可以,可能不行。

  • 檔案
    • 匯出
      • 匯出為 .fbx
Settings for the normal import:
http://iclone-freebies.wikispaces.com/file/view/fbxexport.png/176558803/fbxexport.png

使用外掛匯出 .fbx 檔案

[編輯 | 編輯原始碼]
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 中匯入

[編輯 | 編輯原始碼]

實際上,對於 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 匯出 .x 檔案?

[編輯 | 編輯原始碼]

Maya 和 XNA 的主要問題是兩者是用不同的語言編寫的。Maya是用OpenGL編寫的,而XNA是基於DirectX的。根據這個問題,將 .x 檔案從 OpenGL 匯入 DirectX 很棘手,但有一些工具可以管理它,例如 cvXporter。

以適當的格式匯出

[編輯 | 編輯原始碼]
如何匯出 (.x)?
[編輯 | 編輯原始碼]

如果您使用 cvXporter,以下是一些使用此工具的步驟。點選 http://www.chadvernon.com/blog/resources/cvxporter/

以下是如何在您的外掛不起作用的情況下管理問題的示例。點選 http://www.gamedev.net/topic/383794-exporting-x-files-from-maya-70/

如果 fbx 和 .x 匯入器不起作用,請僅執行這些步驟。我將在後面詳細介紹fbx 匯入器

如何匯出 (.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 匯出.x 檔案,但 3ds Max 有很多非常有用的外掛。其中之一是 KWXPorts。

http://www.kwxport.org/

此工具允許您將 x 放入 3ds Max。XNA 還支援 FBX 格式。但您的模型的動畫和紋理可能會出現一些問題。

以適當的格式匯出

[編輯 | 編輯原始碼]
如何匯出?
[編輯 | 編輯原始碼]
  • 首先從上面的網路資源下載外掛並安裝該工具。

…幾分鐘後…

  • 在 3ds Max 中
    • 檔案 ->
      • 匯出 ->
        • KWXPort(格式) ->
          • KWXPort 匯出選項
  1. 幾何
    1. 匯入法線(光照)
    2. 使 Y 向上(以正確對齊)
    3. 匯出右手系網格(模型的網格)
  2. 材質
    1. 匯出材質
    2. 匯出紋理
  3. 動畫
    1. 匯出動畫:有一個包含您所有動畫的列表,如果您在 3ds Max 中設定了一些動畫。您可以選擇為不同的動畫命名並將這些動畫放在整個動畫的正確幀中。
  4. 最後
    1. 以二進位制格式匯出(提供最佳格式)

結果是三個檔案的組合。

  1. 紋理:nameofthemodel.png
  2. DirectX 檔案:nameofthemodel.x
  3. .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 檔案?

[編輯 | 編輯原始碼]

不,Blender 無法在沒有外掛的情況下匯出到 .X。

以適當的格式匯出

[編輯 | 編輯原始碼]
如何匯出(.x)?
[編輯 | 編輯原始碼]
  1. 檔案 ->
  2. 匯出 ->
  3. DirectX(.x)

結果是你的模型的漂亮的 .x 檔案。


如何匯出(.fbx)?
[編輯 | 編輯原始碼]

再次,唯一解決方案是外掛。還有什麼?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)。

以適當的格式匯出

[編輯 | 編輯原始碼]

簡單 .fbx 檔案匯出

[編輯 | 編輯原始碼]

在 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 檔案更可靠。

使用外掛匯出 .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

在 XNA 中匯入

[編輯 | 編輯原始碼]

--> 簡介

參考文獻

[編輯 | 編輯原始碼]
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 檔案更好?

[編輯 | 編輯原始碼]

這兩者之間的區別

  • 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
華夏公益教科書