65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Expression Blend 中插入 3D 模型

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2013年6月7日

CPOL

5分钟阅读

viewsIcon

56824

downloadIcon

2000

在 Expression Blend 中将 3D 对象插入 WPF 项目,并借助 Blender 完成

引言

WPF 的一大优点是其 3D 支持,使您能够将 3D 内容集成到您的应用程序中。在本教程中,我将解释如何在 Expression Blend 中将 3D 模型添加到 WPF 应用程序。我还会使用开源 3D 建模应用程序 Blender。

注意:本文假设您熟悉 Expression Blend,不需要 Blender 的使用经验。

要求 

要进行本教程的学习,您需要以下内容:

Expression Blend & 3D 

虽然可以手动编写 WPF 3D 模型,但 Expression Blend (EB) 可以让您更轻松地创建和操作 3D 对象。如果您在 3D 设计技能方面不那么精通,可以搜索现有的 3D 模型,并将它们以 .obj 文件的形式导入 EB。然后,可以将 3D 内容插入到布局容器中,EB 会创建必要的 WPF 控件,如 Viewport3DCameraLights

3D 模型

在本教程中,您不会设计任何 3D 模型。相反,您将使用一个现有的、免费的 3D 模型,它是 XA-20 Razorback 战斗机

 

您可以在此处下载包含本教程模型文件的 .7z 文件。下载完 .7z 文件后,请解压其内容。在包含解压文件的文件夹中,您应该会看到七个文件:一个材质 (.mtl) 文件、一个对象 (.obj) 文件,以及五个将用于 .mtl 文件中的图像文件。

 

WPF 项目

启动 Expression Blend 并创建一个名为XA-20 Razorback的新 WPF 应用程序项目。

 

接下来,我们将更改应用程序窗口的尺寸,以便能够充分容纳 3D 模型,因此请将 Window 对象的宽度和高度分别设置为 770 和 550,然后保存更改。

向项目中添加一个新文件夹,并将其重命名为Razorback

接下来,我们将导入之前下载的 .mtl、.obj 和相关图像文件。右键单击Razorback文件夹,从上下文菜单中选择添加现有项,然后查找并选择所有必需的文件。在“添加现有项”对话框中单击打开时,会弹出一个对话框,询问您是否要将一些图像文件复制到项目中,因为它们的大小。选择

现在Razorback文件夹包含所有必需的文件。下一步只是一个简单的操作:右键单击 .obj 文件,然后从上下文菜单中选择插入

 

不幸的是,如果您尝试插入 3D 模型,EB 会因 System.IndexOutOfRangeException 而崩溃。这似乎是一个 bug,但这种情况是可以修复的,所以请单击关闭程序

 

Blender

为了解决上一个问题,我们将使用Blender。请确保您已下载并安装它。运行 Blender 时,会看到一个包含启动屏幕的窗口。要关闭启动屏幕,请在启动屏幕外部左键单击。

关闭启动屏幕后,您将看到默认的立方体。我们需要删除这个立方体,所以请确保它已被选中;您可以通过右键单击立方体来做到这一点。按 X 键,然后从上下文菜单中选择删除

接下来,我们将导入在 EB 中导致问题的 .obj 文件。转到文件>导入>Wavefront (.obj),然后导航到包含 .obj 文件的文件夹。双击文件将其导入 Blender。

导入 3D 模型后,它会连同其所有网格对象一起添加到场景中。模型外部的橙色线条表示该对象已被选中。

 

接下来,您将围绕 x 轴(由红色箭头指示)旋转模型。(此步骤不是必需的,因此如果您愿意,可以跳到下一步)。按 R 键,然后按 X 键,输入 -90,然后按Enter。这将更改模型的方向。

 

如果您好奇模型带有纹理后的外观,可以单击标题栏中视口着色上下文菜单中的纹理按钮。

接下来,通过按 A 键取消选择模型。取消选择后,转到文件>导出>Wavefront (.obj),然后导航到包含您之前解压的文件的文件夹。将对象文件名Untitled.obj的默认名称更改为XA-20_Razorback_Strike_Fighter.obj,然后单击导出 OBJ按钮。此名称与您导入的 .obj 文件的名称相似。

回到 Expression Blend

由于 EB 之前崩溃了,所以您已将其关闭,请重新启动它并打开 XA-20 Razorback 项目。在“项目”面板中,展开 Razorback 文件夹,然后删除XA-20_Razorback_Strike_Fighter.mtlXA-20_Razorback_Strike_Fighter.obj。完成后,重新导入您刚刚在 Blender 中编辑过的 .obj 文件和 .mtl 文件。

重新导入这两个文件后,右键单击对象文件,然后从上下文菜单中选择插入。EB 会将一个 Viewport3D 对象添加到根布局容器中。Viewport3D 对象包含各种 WPF 3D 对象,包括 PerspectiveCameraLights 和构成 3D 模型的各种 ModelVisual3D 对象。

Viewport3D 对象当前仅占应用程序窗口的一小部分,因此我们需要增加其尺寸。右键单击“对象和时间线”面板中的 Viewport3D 对象,然后选择重置布局>全部。现在,Viewport3D 对象应该占据整个根布局容器,从而使 3D 模型更加可见。

为了更好地查看 3D 模型,请选择相机轨道工具 并使用它来更改 3D 模型的视图。

 

结论

能够使用此处介绍的免费工具将 3D 模型导入 WPF 项目无疑是一大优势,因此我希望您从本教程中学到了一些有用的东西。如果您花时间阅读了本教程的全部内容,我在此表示感谢。

历史

  • 2013 年 6 月 7 日:初始发布
  • 2013 年 6 月 21 日:更新了源文件
© . All rights reserved.