在 Expression Blend 中插入 3D 模型





5.00/5 (5投票s)
在 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 控件,如 Viewport3D
、Camera
和 Lights
。
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.mtl和XA-20_Razorback_Strike_Fighter.obj。完成后,重新导入您刚刚在 Blender 中编辑过的 .obj 文件和 .mtl 文件。
重新导入这两个文件后,右键单击对象文件,然后从上下文菜单中选择插入。EB 会将一个 Viewport3D
对象添加到根布局容器中。Viewport3D
对象包含各种 WPF 3D 对象,包括 PerspectiveCamera
、Lights
和构成 3D 模型的各种 ModelVisual3D
对象。
Viewport3D
对象当前仅占应用程序窗口的一小部分,因此我们需要增加其尺寸。右键单击“对象和时间线”面板中的 Viewport3D
对象,然后选择重置布局>全部。现在,Viewport3D
对象应该占据整个根布局容器,从而使 3D 模型更加可见。
为了更好地查看 3D 模型,请选择相机轨道工具 并使用它来更改 3D 模型的视图。
结论
能够使用此处介绍的免费工具将 3D 模型导入 WPF 项目无疑是一大优势,因此我希望您从本教程中学到了一些有用的东西。如果您花时间阅读了本教程的全部内容,我在此表示感谢。
历史
- 2013 年 6 月 7 日:初始发布
- 2013 年 6 月 21 日:更新了源文件