跳转到内容

使用 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
华夏公益教科书