模型编辑器

本文档介绍如何使用 Visual Studio 模型编辑器 查看、创建和修改三维模型。

可以使用 模型编辑器 从头开始创建基本 3D 模型,或者查看和修改使用全功能 3D 建模工具创建的更复杂的 3D 模型。

备注

由于 Autodesk FBX SDK 中的安全问题,Visual Studio 2022 17.9.3 删除了对模型编辑器和 MeshContentTask 的支持。 请参阅 CVE-2023-27911

支持的格式

模型编辑器 支持 DirectX 应用开发中使用的多种 3D 模型格式:

格式名称 文件扩展名 支持的操作(查看、编辑、创建)
AutoDesk FBX 交换文件 .fbx 查看、编辑、创建
Collada DAE 文件 .dae 查看、编辑(使用 FBX 格式保存对 Collada DAE 文件的修改)。
OBJ .obj 查看、编辑(使用 FBX 格式保存对 OBJ 文件的修改)。

入门

本部分介绍如何将 3D 模型添加到 Visual Studio C++ 项目和其他将帮助你入门的基本信息。

备注

图像项(例如 3D 场景 [.fbx 文件])的自动生成集成仅支持 C++ 项目。

向你的项目添加三维模型

  1. 确保已安装所需的 Visual Studio 组件,以便使用图形。 组件称为 图像和三维模型编辑器

    若要安装它,请从菜单栏中选择“工具”>“获取工具和功能”,然后选择“各个组件”选项卡,打开 Visual Studio 安装程序。选择 游戏和图形 类别下的 图像和三维模型编辑器 组件,然后选择“修改

    图像和 3D 模型编辑器组件

    组件开始安装。

  2. 解决方案资源管理器中,打开要向其添加图像的C++项目的快捷菜单,然后选择“添加>新项

  3. 在“添加新项”对话框中的“图形 类别下,选择 3D 场景(.fbx)

    已选3D场景的“添加新项”对话框

    备注

    如果在 “添加新项”对话框中看不到“图形 类别,并且已安装 图像和三维模型编辑器 组件,则项目类型不支持图形项。

  4. 输入模型文件的 名称,然后选择 添加

轴方向

Visual Studio 支持 3D 轴的每个方向,并从支持它的模型文件格式加载轴方向信息。 如果未指定坐标轴方向,则 Visual Studio 默认使用右手坐标系。 轴指示器 显示设计图面右下角的当前轴方向。 在 轴指示器,红色表示 x 轴,绿色表示 y 轴,蓝色表示 z 轴。

开始创建三维模型

在模型编辑器中,每个新对象始终以内置于模型编辑器中的基本 3D 形状之一(或 基元)开始。 若要创建新对象和唯一对象,请向场景添加基元,然后通过修改其顶点来更改其形状。 对于复杂形状,可以使用延伸或细分添加其他顶点,然后对其进行修改。 有关如何向场景添加基元对象的信息,请参阅 创建和导入 3D 对象。 有关如何向对象添加更多顶点的信息,请参阅 修改对象

使用模型编辑器

以下部分介绍如何使用模型编辑器来处理 3D 模型。

模型编辑器工具栏

模型编辑器工具栏包含有助于处理 3D 模型的命令。

影响模型编辑器状态的命令位于主 Visual Studio 窗口中 模型编辑器模式 工具栏上。 建模工具和脚本命令位于模型编辑器设计图面上的 模型编辑器 工具栏上。

下面是 模型编辑器模式 工具栏:

模型查看器模式工具栏。

下表描述了 模型编辑器模式 工具栏上的项,这些项按它们从左到右显示的顺序列出。

工具栏项 描述
选择 根据活动选择模式,允许在3D场景中选择点、边、面或对象。
平移 相对于窗口框架移动三维场景。 若要平移,请在场景中选择一个点并将其移动。

“选择 模式”中,可以按住 Ctrl 以暂时激活 平移 模式。
缩放 相对于窗口框架显示较多或较少的场景详细信息。 在 缩放 模式下,选择场景中的某个点,然后将其向右或向下移动以放大,或向左或向上缩放。

选择 模式时,可以在按住 Ctrl的同时,使用鼠标滚轮来放大或缩小。
轨迹 将视图定位在围绕选定对象的圆形路径上。 如果未选择任何对象,则路径以场景原点为中心。 注意: 启用 正交 投影时,此模式不起作用。
世界本地 启用此项后,所选对象的转换将出现在世界空间中。 否则,所选对象的转换发生在本地空间中。
透视模式 启用此项后,转换会影响所选对象的 透视点的位置和方向(透视点定义转换、缩放和旋转操作的中心)。否则,转换会影响对象几何图形相对于透视点的位置和方向。
锁定X轴 将对象操作限制为 x 轴。 仅当你使用操控器小组件的中心部分时适用。
锁定 Y 轴 将对象操作限制为 y 轴。 仅当你使用操控器小组件的中心部分时适用。
锁定 Z 轴 将对象操作限制为 z 轴。 仅当你使用操控器小组件的中心部分时适用。
框架对象 框架所选对象,使其位于视图的中心。
视图 设置视图方向。 下面是可用的方向:

前方
将视图定位在场景前。

后方
将视图定位在场景的背面。

左侧
将视图定位到场景左侧。

右侧
将视图定位到场景右侧。

顶部
将视图置于场景上方。

底部
将视图置于场景下方。 注意: 启用 正交 投影时,这是更改视图方向的唯一方法。
投影 设置用于绘制场景的投影类型。 下面是可用的投影:

透视
在透视投影中,离视点较远的对象看起来更小,最终聚合到距离中的某个点。

正交
在正交投影中,无论对象与视点的距离如何,对象看起来都相同。 不显示会聚现象。 启用 正交 投影时,无法使用 Orbit 模式来定位视图。
绘制样式 设置场景中对象的呈现方式。 下面是可用的样式:

透明框架
启用后,对象将呈现为线框。

过度绘制
启用时,通过使用附加混合呈现对象。 使用此工具可以直观显示场景中的过度绘制程度。

平面着色
启用后,使用基本平面着色照明模型呈现对象。 可以使用此功能更轻松地查看对象的人脸。

如果未启用这些选项,则通过使用应用于每个对象的材料来呈现每个对象。
Real-Time 呈现模式 启用实时呈现后,即使未执行用户操作,Visual Studio 也会重新绘制设计图面。 使用随时间变化的着色器时,此模式非常有用。
切换网格 启用此项后,将显示网格。 否则,不显示网格。
工具箱 交替显示或隐藏 工具箱
文档大纲 交替地显示或隐藏 文档大纲 窗口。
属性 交替显示或隐藏 属性 窗口。
高级 包含高级命令和选项。

图形引擎

使用 D3D11 渲染
使用 Direct3D 11 呈现模型编辑器设计图面。

用 D3D11WARP 呈现
使用 Direct3D 11 Windows 高级光栅化平台(WARP)渲染模型编辑器设计界面。

场景管理

导入
将对象从另一个 3D 模型文件导入到当前场景。

附加到父级
将多个选定对象中的第一个对象设为其余选定对象的父对象。

从父级分离
将所选对象与其父对象分离。 所选对象将在场景中成为 根对象。 根对象没有父对象。

创建组
将所选对象分组为同级对象。

合并对象
将所选对象合并为一个对象。

从多边形选择 创建新对象
从当前对象中删除所选人脸,并将包含这些人脸的新对象添加到场景中。

工具

翻转多边形绕组
翻转选定的多边形,使其绕组序列和图面法向反转。

删除所有动画
从对象中删除动画数据。

三角化
将所选对象转换为三角形。

视图

隐面消除
启用或禁用隐面消除。

帧速率
显示设计图面右上角的帧速率。 帧速率是每秒绘制的帧数。

启用 Real-Time 呈现模式 选项时,此选项非常有用。

全部显示
显示场景中的所有对象。 这会将每个对象的 Hidden 属性重置为 False

显示面法向
显示每个面的法向。

显示缺失材料
在未向其分配材料的对象上显示特殊纹理。

显示中心点
启用或禁用在活动选择的枢轴点上显示3D轴标记。

显示占位符节点
显示占位符节点。 将对象分组时会创建占位符节点。

显示顶点法向
显示每个顶点的正常值。 提示: 可以选择 脚本 按钮再次运行最后一个脚本。

下面是 模型编辑器 工具栏:

模型查看器工具栏

下表描述了 模型编辑器 工具栏上的项,这些项按它们从上到下的顺序列出。

工具栏项 描述
平移 移动选定对象。
缩放 更改选定对象的大小。
旋转 旋转选定对象。
选择点 设置 选择模式 以选择对象上的单个点。
选择边 设置 选择模式 在对象上选择边缘(两个顶点之间的线条)。
选择面 设置 选择模式 在对象上选择人脸。
选择对象 设置 选择模式 以选择整个对象。
延伸 创建其他人脸并将其连接到所选人脸。
细分 将每个所选人脸划分为多个人脸。 若要创建新人脸,将添加新顶点(一个位于原始人脸的中心,一个位于每个边缘中间),然后与原始顶点联接在一起。 添加的人脸数等于原始人脸中的边缘数。

控制视图

根据视图呈现 3D 场景,可将其视为具有位置和方向的虚拟相机。 若要更改位置和方向,请使用 模型编辑器模式 工具栏上的视图控件。

下表介绍了主视图控件。

视图控件 描述
平移 相对于窗口框架移动三维场景。 若要平移,请在场景中选择一个点并将其移动。

“选择 模式”中,可以按住 Ctrl 暂时激活 平移 模式。
缩放 相对于窗口框架显示较多或较少的场景详细信息。 在 缩放 模式下,选择场景中的某个点,然后将其向右或向下移动以放大,或向左或向上缩放。

选择 模式时,按住 Ctrl的同时,可以通过鼠标滚轮进行放大或缩小。
轨迹 将视图沿着所选对象的圆形路径进行定位。 如果未选择任何对象,则路径以场景原点为中心。 注意: 启用 正交 投影时,此模式不起作用。
框选对象 框架所选对象,使其位于视图的中心。

视图由虚拟相机建立,但它也由投影定义。 投影定义视图中的形状和对象如何转换为设计图面上的像素。 在“模型编辑器”工具栏上,可以选择“透视”或“正交”投影

投影 描述
透视 在透视投影中,离视点较远的对象看起来更小,最终聚合到距离中的某个点。
正交 在正交投影中,无论对象与视点的距离如何,对象看起来都相同。 不显示会聚现象。 启用 正交 投影时,无法使用 轨道 模式任意定位视图。

例如,如果想要比较两个类似的场景,则从已知位置和角度查看 3D 场景可能会很有用。 对于此方案,模型编辑器提供了多个预定义视图。 若要使用预定义视图,请在 模型编辑器模式 工具栏上,选择 视图,然后选择所需的预定义视图-前、后、左、右、上或下。 在这些视图中,虚拟相机直接查看场景的来源。 例如,如果选择 视图顶部,虚拟相机将直接从其上方查看场景的原点。

查看其他几何图形详细信息

若要更好地了解 3D 对象或场景,可以查看其他几何详细信息,例如每个顶点的法线、每个面的法线、活动选择的枢轴点和其他详细信息。 若要启用或禁用它们,请在 模型编辑器 工具栏上,选择 脚本>视图,然后选择所需的脚本。

创建和导入 3D 对象

若要向场景添加预定义的 3D 形状,请在 工具箱中选择所需形状,然后将其移动到设计图面。 新形状定位在场景的原点。 模型编辑器提供七个形状:圆锥体立方体柱形光盘平面球体茶壶

若要从文件导入 3D 对象,请在 模型编辑器 工具栏上,选择 高级>场景管理>导入>,然后指定要导入的文件。

转换对象

可以通过更改对象的“旋转”、“缩放”和“平移”属性转换对象旋转 应用围绕其枢轴点定义的 x 轴、y 轴和 z 轴的连续旋转来定向对象。 每个旋转规范有三个组件,即按顺序排列的 x、y 和 z,并且这些组件以度为单位指定。 “缩放”通过沿以中心点为中心的一个或多个轴按照指定系数拉伸对象,来调整其大小。 “平移”相对于对象的父级(而非其中心点)在三维空间中定位对象

可以使用建模工具或设置属性来转换和对象。

使用建模工具转换对象

  1. 选择 模式,选择要转换的对象。 线框覆盖表示已选择对象。

  2. 模型编辑器 工具栏上,选择 翻译缩放旋转 工具。 此时将显示选定对象的平移、缩放或旋转操控器。

  3. 使用操控器执行转换。 对于平移和缩放变换,操控器是一个轴指示器。 可以一次更改一个轴,也可以通过使用指示器中心白色立方体同时更改所有轴。 对于旋转,操控器是由颜色编码的圆圈构成的球体,对应于 x 轴(红色)、y 轴(绿色)和 z 轴(蓝色)。 必须单独更改每个轴才能创建所需的旋转。

通过设置对象属性来转换对象

  1. 选择 模式中,选择要转换的对象。 线框覆盖表示已选择对象。

  2. 属性 窗口中,指定 旋转缩放翻译 属性的值。

    重要

    对于“旋转”属性,请分别指定绕每一个轴旋转的度数。 旋转是按顺序应用的,因此请确保规划旋转时,先进行 x 轴旋转,再进行 y 轴旋转,最后进行 z 轴旋转。

通过使用建模工具,可以快速但并非确切地创建转换。 通过设置对象属性,可以精确指定转换,但不能快速指定转换。 建议使用建模工具来“接近”所需的转换,然后微调属性值。

如果不想使用操控器,则可以启用自由格式模式。 在 模型编辑器 工具栏上,选择 脚本>工具>自由格式操作 启用(或禁用)自由格式模式。 在自由格式模式下,可以在设计图面上的任何点开始操作,而不是操作器上的某个点。 在自由格式模式下,可以通过锁定不想更改的轴来限制对某些轴的更改。 在 模型编辑器模式 工具栏上,选择 锁定 X锁定 Y锁定 Z 按钮的任意组合。

你可能会发现在处理对象时,网格线对齐很有用处。 在“模型编辑器模式”工具栏上,选择“对齐”可启用(或禁用)网格线对齐。 启用网格线对齐时,平移、旋转和缩放转换将受预定义增量的约束。

使用透视点

对象的枢轴点定义其旋转和缩放中心。 可以更改对象的枢轴点,从而改变它在旋转和缩放转换中的受影响方式。 在 模型编辑器模式 工具栏上,选择 透视模式 启用(或禁用)透视模式。 启用轴心模式后,选定对象的轴心点会显示一个小轴指示器。 然后,可以使用 平移旋转 工具来操作旋转中心。

有关演示如何使用透视点的演示,请参阅 如何:修改三维模型的透视点。

世界和本地模式

转换和旋转可以发生在对象的本地坐标系(或 局部引用框架)中,或在世界坐标系(或 世界参考帧)。 世界引用框架独立于对象的旋转。 本地模式为默认值。 若要启用或禁用世界模式,请在 模型编辑器模式 工具栏上,选择 WorldLocal 按钮。

修改对象

可以通过移动或删除其顶点、边缘和人脸来更改 3D 对象的形状。 默认情况下,模型编辑器处于 对象模式,以便你可以选择和转换整个对象。 若要选择点、边缘或人脸,请选择适当的选择模式。 在 模型编辑器模式 工具栏上,选择 选择模式,然后选择所需的模式。

可以通过延伸或细分来创建其他顶点。 延伸将复制面的顶点(共面顶点集),该面仍由复制后的顶点连接。 细分将添加顶点,在以前只有一个面的地方创建多个面。 若要创建新人脸,将添加新顶点(一个位于原始人脸的中心,一个位于每个边缘中间),然后与原始顶点联接在一起。 添加的人脸数等于原始人脸中的边缘数。 在这两种情况下,都可以转换、旋转和缩放新顶点以更改对象的几何图形。

从对象延伸面

  1. 在面选择模式下,选择要延伸的面。

  2. 模型编辑器 工具栏上,选择 脚本>工具>延伸

细分面

  1. 在人脸选择模式下,选择要细分的人脸。 由于细分会创建新边数据,所以当多个面相邻时,同时细分所有面将得到更一致的结果。

  2. 模型编辑器 工具栏上,选择 脚本>工具>细分

此外,您还可以对人脸进行三角化处理、合并对象,并将多边形选择转换为新对象。 三角化会创建额外的边缘,以便将非三角面转换为最优数量的三角形。然而,它并不提供额外的几何细节。 合并将所选对象合并为一个对象。 可以从多边形选择创建新对象。

三角化面

  1. 在面选择模式下,选择要三角化的面。

  2. 模型编辑器 工具栏上,选择 脚本>工具>三角化

合并对象

  1. 在对象选择模式下,选择要合并的对象。

  2. 模型编辑器 工具栏上,选择 脚本>工具>合并对象

从选择的多边形创建对象

  1. 在人脸选择模式下,选择要从中创建新对象的人脸。

  2. 模型编辑器 工具栏上,选择 脚本>工具>从多边形选择创建新对象。

使用材料和着色器

对象的外观取决于场景中照明的交互和对象的材料。 材料由属性定义,这些属性描述表面对不同类型的光线的反应,以及着色器程序根据照明信息、纹理地图、普通地图和其他数据计算对象图面上每个像素的最终颜色。

模型编辑器提供以下默认材料:

材料 描述
不发光 呈现没有任何模拟光照效果的表面。
朗伯 呈现具有模拟环境照明和漫射照明的图面。
Phong 使用模拟的环境照明、漫射照明和反射高光呈现图面。

其中每个材料在对象的表面上应用一个纹理。 可以为使用材料的每个对象设置不同的纹理。

若要修改特定对象对场景中不同光源的反应方式,可以更改与使用材料的其他对象无关的材料照明属性。 下表介绍了常见的照明属性:

照明属性 描述
环境 描述表面如何受到环境照明的影响。
漫射 描述表面如何受到方向光和点光源的影响。
放射 描述表面如何发出光,独立于其他照明。
反射 描述图面如何反射平行光和点光。
反射力 描述反射高光的广度和强度。

根据材料支持的内容,可以更改其照明属性、纹理和其他数据。 在 选择 模式中,选择要更改其材料的对象,然后在 属性 窗口中,更改 MaterialAmbientMaterialDiffuseMaterialEmissiveMaterialSpecularMaterialSpecularPower或其他可用属性。 材料最多可以公开八个纹理,其属性依次命名,从 Texture1Texture8

若要从对象中删除所有材料,请在 模型编辑器 工具栏上,选择 脚本>材料>删除材料

可以使用 着色器设计器 创建自定义着色器材料,这些材料可以应用于 3D 场景中的对象。 有关如何创建自定义着色器材料的信息,请参阅 着色器设计器。 有关如何将自定义着色器材料应用于对象的信息,请参阅 如何:将着色器应用于三维模型

场景管理

可以将场景作为对象的层次结构进行管理。 在层次结构中排列多个对象时,父节点的任何转换、缩放或旋转也会影响其子节点。 如果要从更基本的对象构造复杂对象或场景,这非常有用。

可以使用 文档大纲 窗口查看场景层次结构并选择场景节点。 在大纲中选择节点时,可以使用 属性 窗口修改其属性。

可以通过将其中一个对象作为其他对象的父级,或者将它们组合为充当父节点的占位符节点下的同级来构造对象的层次结构。

创建具有父对象的层次结构

  1. 选择 模式中,选择两个或多个对象。 选择的第一个对象将是父对象。

  2. 在“模型编辑器”工具栏上,依次选择“脚本”>“场景管理”>“附加到父级”

创建同级对象的层次结构

  1. 选择 模式中,选择两个或多个对象。 创建占位符对象并成为其父对象。

  2. 模型编辑器 工具栏上,选择 脚本>场景管理>创建组

模型编辑器使用白色线框标识第一个选定对象,该对象将成为父对象。 所选内容中的其他对象具有蓝色线框。 默认情况下,不显示占位符节点。 若要显示占位符节点,请在 模型编辑器 工具栏上,选择 脚本>场景管理>显示占位符节点。 可以使用占位符节点,就像处理非占位符对象一样。

若要删除两个对象的父子关联,请选择子对象,然后在 模型编辑器 工具栏上,选择 脚本>场景管理>从父分离。 从子对象分离父对象时,子对象将成为场景中的根对象。

键盘快捷方式

命令 键盘快捷方式
切换到 选择 模式 Ctrl+GCtrl+Q

S
切换到 缩放 模式 Ctrl+GCtrl+Z

Z
切换到“平移”模式 Ctrl+GCtrl+P

K
全选 Ctrl+A
删除当前所选内容 删除
取消当前所选内容 Escape (Esc)
放大 鼠标滚轮向前

Ctrl+鼠标滚轮向前

Shift+向前滚动鼠标滚轮

Ctrl+PageUp

加号 (+)
缩小 鼠标滚轮向后

Ctrl+鼠标滚轮向后

Shift+向后滚动鼠标滚轮

Ctrl+PageDown

减号 (-)
向上平移照相机 PageDown
向下平移照相机 PageUp
将相机向左平移 向左滚动鼠标滚轮

Ctrl+PageDown
向右平移照相机 向右滚动鼠标滚轮

Ctrl+PageDown
查看模型顶部视图 Ctrl+LCtrl+T

T
查看模型底部 Ctrl+LCtrl+U
查看模型左侧 Ctrl+LCtrl+L
查看模型右侧 Ctrl+LCtrl+R
查看模型正面 Ctrl+LCtrl+F
查看模型背面 Ctrl+LCtrl+B
框选窗口中的对象 F
切换线框模式 Ctrl+LCtrl+W
切换网格线对齐 Ctrl+GCtrl+N
切换透视模式 Ctrl+GCtrl+V
切换 x 轴限制 Ctrl+LCtrl+X
切换 y 轴限制 Ctrl+LCtrl+Y
切换 z 轴限制 Ctrl+LCtrl+Z
切换到翻译模式 Ctrl+GCtrl+W

W
切换到缩放模式 Ctrl+GCtrl+E

E
切换到旋转模式 Ctrl+GCtrl+R

R
切换到点选择模式 Ctrl+LCtrl+1
切换到边缘选择模式 Ctrl+LCtrl+2
切换到人脸选择模式 Ctrl+LCtrl+3
切换到对象选择模式 Ctrl+LCtrl+4
切换到轨道(相机)模式 Ctrl+GCtrl+O
在场景中选择下一个对象 Tab
选择场景中的上一对象 Shift+Tab
基于当前工具操作所选对象。 箭头键
停用当前操控器 Q
旋转相机 使用鼠标左键 Alt+拖动
标题 描述
处理游戏和应用的三维资产 概述可用于处理图形资产(如纹理和图像、3D 模型和着色器效果)的 Visual Studio 工具。
图像编辑器 介绍如何使用 Visual Studio 图像编辑器处理纹理和图像。
着色器设计器 介绍如何使用 Visual Studio 着色器设计器来处理着色器。