以下小节详细介绍了Datasmith在场景转换期间处理的特定问题。理解这些问题有助于你理解Datasmith产生的结果,更好地在虚幻编辑器中处理内容。
你可以从Sketchfab下载本页面用到的两个项目:
- "Richard的美术馆——语音讲解"由shinymagic创作,根据知识共享署名协议获得授权。
- "老式风扇"由Noah创作,根据知识共享署名协议获得授权。
单位和标尺
在虚幻引擎中,所有距离始终用厘米测量。但是,其他3D设计应用程序通常提供计量单位选项。如果你在源应用程序中使用其他计量单位,Datasmith会自动调整场景的比例,使几何体在虚幻引擎中与现实世界大小完全一致,并且在3D空间中位于正确的位置。你不必更改在源应用程序中的工作方式。
例如,如果你在源应用程序中使用英寸作为计量单位,在原始场景中长10个单位的物体在导入到虚幻引擎中后会变为25.4个世界单位。
![]() |
![]() |
源应用 | 导入后 |
当场景层级包含具有非等分标尺的父项和在单个对象层面进行补偿校正的自定义枢轴变换时,因为坐标系转换非常复杂,可能会导致虚幻引擎中的结果与初始场景不匹配。若遇到此问题,解决办法是返回原始场景并简化场景层级中的变换。
名称和标签
Datasmith会检测源应用程序中的几何体命名信息,并将该信息尽可能地重复用于它所创建的资产和Actor。对于每种不同的应用程序或文件格式,具体流程会有稍许不同,在虚幻引擎中的结果也可能与在源应用程序中稍有不同,但最终目标是使你在导入后能够找到和管理内容。
对于静态网格体,你会看到,内容浏览器中的资产名称、磁盘上的资产文件名以及关卡中的Actor名称通常不同。
-
内容浏览器标签 - Datasmith会根据它在源文件中找到的命名信息(如果有)在内容浏览器中为每个静态网格体资产生成标签。 某些支持的应用程序和文件格式允许存在多个同名对象。如果在你的场景中存在这种情况,你可能会发现,内容浏览器中有多个资产最终都具有相同的标签。
-
文件名 - 但是,磁盘上每个资产的文件名都必须唯一。因此,Datasmith会使用从源应用程序中提取的唯一标识符来命名每个资产文件。
-
Actor名称 - Datasmith每次将Actor放入关卡时,都会尝试为该Actor指定与源文件中对应对象(如果有)完全相同的名称。 如果找不到唯一的名称,则会重复使用内容浏览器中的相同标签来命名Actor。如果关卡中已经有一个Actor具有该名称,则Datasmith会通过递增数字后缀让Actor名称变得唯一。
请注意,你在内容浏览器中看到的静态网格体资产的 标签 与Datasmith为这些资产在磁盘上生成的文件 名称 之间是有区别的。在编辑器中工作时,这一点在大多数情况下应该显而易见。但是,如果你想要使用蓝图或Python脚本来处理资产或Datasmith场景,你可能需要了解这个区别。
三角形朝向
为了在运行时尽可能达到最佳性能,虚幻引擎会剔除它认为不可见的所有三角形。这可以避免耗费GPU周期来渲染这些三角形。尤其是,引擎会假设所有对象都具有一定的厚度。所有未朝向摄像机的三角形一律假定为在对象的背面,会因对象正面的遮挡而不可见。这叫作 背面剔除 ,是3D渲染中广泛使用的一种优化方法。
但是,某些设计应用程序不会像这样区分表面的正面和背面,无论你从哪一侧查看,都会渲染这些表面。在设计工具中工作时,你不一定知道特定表面的朝向。这可能会导致表面法线(即垂直于表面的方向)指向内侧,或者偏离你需要的表面查看方向。这可能会导致你创建出完全没有厚度的平面单壁几何体。
导入场景后,在虚幻引擎中从特定角度查看时,可能会看不到场景的某些部分,甚至看起来就像是模型的这些部分没有导入;但是,原因很可能只是表面法线指向的方向偏离你查看场景时使用的摄像机。如果你围绕着模型转圈,可能会发现这些表面突然出现。
例如,在下方场景(左侧)中,虽然几何体已正常导入,但天花板和管道末端看起来缺失了。为材质启用 双面(Two Sided) 选项会让这些表面显现(请参阅下文了解详细信息)。


这种情况最好在源应用程序中处理。请记住以下建议:
-
若你需要从所有面查看对象,我们强烈建议你在建模时为这类对象指定厚度,并确保法线朝外。
-
如果你知道对象只需要从一面查看,可以在源应用程序中翻转表面法线并重新导入场景,以修复缺损的网格体。这会将表面保留为单面,但至少调转了表面的朝向,这样一来,在虚幻引擎中从你需要的方向查看时,表面能够正确显示。
-
Rhino、3ds Max、Cinema 4D和SketchUp等建模应用程序拥有视口模式,便于你更轻松地查找背向三角形。详情请参阅建模工具的文档。
但是,如果想要在虚幻编辑器中修复问题,而不回到源场景,还可以考虑以下选项:
-
你可以在静态网格体编辑器中调转三角形的朝向,使它们朝向其他方向。请参阅建模模式介绍。 但是,如果这些三角形从另一面可见,则仍然存在同样的问题。对于天花板等只能从内部看到的对象,这可能是一种很好的解决方案,但对于两面都能看到的内墙则不然。 记住,如果你在源场景中修改了该几何体,然后重新导入了Datasmith场景资产,你在静态网格体编辑器中所做的更改将会丢失。因此,如果因为其他原因必须返回并修改几何体,请确保同时返回SketchUp并修复表面朝向。
-
你可以在材质编辑器中将材质设为双面。这样一来,无论从哪一侧查看表面,引擎都会渲染表面。尽管这初听起来像是一种很好的解决方案,但在与 静态 或 固定 光照一起使用时,往往会产生视觉瑕疵,因为表面的两侧会使用光照贴图纹理中的相同空间。 如果你的材质是材质实例,请在材质编辑器的 细节(Details) 面板中查找 常规(General)>材质属性覆盖(Material Property Overrides)>双面(Two Sided) 。你也可以在 材质编辑器 的 细节(Details) 面板中找到这个属性。
点击查看大图。
-
你的问题症结可能不在于表面本身的可视性,而仅仅在于光线会穿过对象,如天花板没有正确阻挡上方的定向光源投射的光线。要解决此类问题,请配置静态网格体Actor,让它从两面投射阴影。 在 细节(Details) 面板中寻找 光照(Lighting)>双面阴影(Shadow Two Sided) 设置。
点击查看大图。
虚幻引擎提供了多种方法来照亮场景。烘焙 光照可提供最佳的运行时性能,通常也能最流畅、最逼真地传播间接光照。要在虚幻引擎中使用这种方法,可以将场景中光源的 移动性(Mobility) 设置指定为 静态(Static) 或 固定(Stationary) ,然后使用虚幻编辑器中名为Lightmass的工具来为场景构建光照。这样会计算从静态光源和固定光源照射到场景中每个对象的光线,并将它存储在一种叫作 光照贴图 的特殊纹理中。在运行时,各个对象光照贴图纹理中的这些光照信息将被应用至对象表面。
为了使该系统运作起来,静态网格体中的每个顶点都需要映射到其光照贴图纹理2D空间中的唯一坐标上。该映射叫作UV集或UV通道。此外,该2D坐标空间的布局方式要求:网格体中任意两个三角形在2D纹理空间中都不能彼此重叠。如果网格体中的两个三角形被映射到了2D纹理的相同区域,那么Lightmass将无法为这些三角形存储独特的明暗模式。这会导致运行时出现奇怪的光照瑕疵。
为确保所有静态网格体都准备好接收静态光照,Datasmith会为它导入的每个静态网格体自动调用虚幻编辑器的自动UV展开系统。该过程会向每个静态网格体添加两个新的UV集:
-
一个将构成网格体的三角形简单展开成2D空间中的平面表示。这会将网格体分解成多个较小的"岛状区",每个岛状区都代表网格体表面的一个相连片段。
-
然后,第一张光照贴图中岛状区的排列顺序和尺寸会得到调整,以便融入特定的布局,从而避免重叠,并大幅减少岛状区周围空间的浪费。这就是为关卡构建光照时,将用于对象光照贴图的最终布局。
然后,Datasmith会自动设置静态网格体资产,以使用第二个生成的UV存储和应用光照贴图。
如果你使用3ds Max,并且已设置了要用于光照贴图的UV通道,请参阅面向3ds Max的Datasmith指南。
碰撞和物理
默认情况下,Datasmith不会为它创建的静态网格体资产设置物理模拟。你可以在导入后在虚幻编辑器中为静态网格体设置物理模拟;有关详细信息,请参阅为静态网格体设置碰撞或在蓝图和Python中使用静态网格体设置碰撞。
如果你使用3ds Max,可以在3ds Max中为自定义几何体建模,并让Datasmith导入程序自动将该几何体分配给它创建的静态网格体资产。有关详细信息,请参阅面向3ds Max的Datasmith页面。
光源
Datasmith会从支持光源的文件格式中导入光源,并自动将这些光源转换为虚幻引擎支持的最合适光源类型,通常为点光源、聚光源、矩形光源或定向光源。
区域、平面和体积光源
3ds Max和Cinema 4D等一些应用程序支持基于2D形状或3D体积发出光线的光源。此类光源在虚幻引擎中没有精确的对应物。这类光源包括Mental Ray区域光源、V-Ray和Corona平面光源、圆盘光源、圆顶光源和球面光源等。当Datasmith导入某种此类区域光源时,它会使用特殊的自定义蓝图类 DatasmithAreaLightMesh 来模拟该光源的行为。


此蓝图本质上是将自动生成的自发光表面与自动生成的矩形光源、点光源或聚光源配对:
- 自发光表面的作用是在关卡的3D空间中以及其他表面的反射中表现光源的可见物理范围。
- 矩形光源、点光源或聚光源的作用是将实际光线发射到场景中。
你可控制自发光的形状、大小、颜色和强度,以及光源Actor的属性。在 关卡视口 或 世界大纲视图 中选择 DatasmithAreaLightMesh Actor,并使用 细节(Details) 面板 光源(Light) 类目中的设置。例如:
点击查看大图。
颜色(Color) 和 强度(Intensity) 等设置会同时影响自发光和光源Actor。
使用这种设置时,光源在场景中可见,并会照亮周围的物体。然而,不同于你在源应用程序中执行的离线渲染,若 DatasmithAreaLightMesh 使用聚光源或点光源,则DatasmithAreaLightMesh向关卡发出的实际光线将从单点投射,而非从整个面投射。
无论是使用Lightmass烘焙光照还是使用动态光照,自发光表面目前不会将光线投射到场景中。只有点光源或聚光源组件才能真正在关卡中照亮周围物体。
材质
Datasmith导入流程会在虚幻引擎项目中创建新的材质资产,用来表示它在导入的场景中识别到的各组不同的几何体表面属性。虽然场景变换的目标是尽可能以最高的保真度保留表面属性,但你可能需要在导入后微调这些材质。你可以双击材质资产进行编辑。
你在 Materials(材质) 文件夹中找到的大部分材质资产都是材质实例。这意味着当你编辑材质实例时,会看到一份经过预先设置的设置列表,这些设置由其父材质或"主"材质决定。在内容浏览器中,你可以看到材质是否属于材质实例。
点击查看大图。
有关何谓材质实例以及如何使用材质实例的更多信息,请参阅实例化材质和创建和使用材质实例。
每种材质实例也都有父材质:一种不同类别的材质资产,包含类似于蓝图的节点图表。当虚幻引擎需要渲染应用了父材质或任何材质实例的表面时,该图表将确定要在GPU上执行的实际操作。父材质图表的构造方式还控制着在其材质实例中公开的设置,以及这些设置的使用方式。
Datasmith将按照以下原则,根据源应用程序为材质实例分配不同的父材质:
-
在大多数情况下,Datasmith会为每种材质实例分配一个预先存在的父材质,该父材质作为Datasmith插件的一部分已包含在插件中。通常,这些父材质公开的预定义设置非常类似于源应用程序中提供的材质编写设置。
对于Datasmith在项目中创建的每个材质实例,你都可以自由编辑其中的公开设置。Datasmith提供的各个父材质都会提供一组不同的属性:
- Datasmith_Color - 该父材质用于纯色和纹理表面,主要在导入CAD模型时使用。请参阅下文的Datasmith颜色材质。
- SketchUpMaster - 该父材质用于从SketchUp导入的所有表面。请参阅SketchUp Pro互操作指南。
- RevitMaster - 该父材质用于从Revit导入的所有表面。请参阅Revit互操作指南。
-
如果从3ds Max或Rhino导入内容,你可能会发现Datasmith还会在项目中的
Materials/Master
文件夹中创建新的父材质。3ds Max提供比大多数其他源应用程序更丰富的材质编写工作流程,在概念上类似于虚幻引擎的材质图表。因此,Datasmith创建的新主材质通常能够非常接近于你在3ds Max中自定义的材质,不必复用拥有预设图表和预设公开设置列表的预设父材质。 在这种情况下,Datasmith通常仍会为这些自定义父材质创建材质实例。然后它会将这些材质实例应用至静态网格体资产和场景中的静态网格体Actor。在大多数情况下,修改材质实例的属性应该足以让你良好地控制渲染结果。 对于某些类型的3ds Max材质,Datasmith可能会跳过创建材质实例这一步骤。在该情况下,它只会将新的父材质分配给静态网格体资产和Actor。
如果想要更改材质实例用于确定如何根据这些属性对表面着色的实际材质图表,你需要复制父材质并修改副本中的属性。有关该流程的详细信息,请参阅修改Datasmith主材质。
另一种选项是,不使用Datasmith创建的材质,始终使用其他基于物理的材质彻底替换Datasmith创建的材质。这可以是你在虚幻编辑器中自行创建的材质,也可以是来自第三方的材质。
Datasmith颜色材质
许多计算机辅助设计(CAD)应用程序都会使用简单的表面颜色为几何体着色。Datasmith通常会将这些表面作为 Datasmith_Color 材质的实例导入虚幻引擎:
-
该材质的颜色通常会预设为与源场景中的颜色完全匹配。 当你在虚幻引擎中使用这些材质时,请特别注意颜色亮度的数值。设计工具有时允许使用非常明亮的表面颜色(在自然界中不常见),甚至包括纯白色。你可能需要大幅调低这些值,让光照看起来更逼真。
-
Datasmith通常能够保留源材质的不透明度。如果源场景中某个表面的颜色被设置为半透明(例如玻璃面板),Datasmith会将它的不透明度引入颜色(Color)设置中的 Alpha 通道。 如果要在虚幻编辑器中使用Alpha通道让之前不透明的材质变为半透明,则还必须更改材质的混合模式。在 常规(General) 部分,展开 材质属性覆盖(Material Property Overrides) 组,选中 混合模式(Blend Mode) 选项,并将其值设置为 半透明(Translucent) 。
-
Datasmith_Color父材质还允许你使用三种不同类别的纹理贴图:漫反射贴图,提供表面的基础颜色(会覆盖"颜色(Color)"设置);法线贴图,提供精致的表面细节;透明贴图,允许同一个表面的不同部分拥有不同的不透明度值。 如果Datasmith能够从源应用程序导出这些类型的纹理贴图,就可以使用这些纹理贴图的设置。如果你的Datasmith_Color实例使用的是单调色,而你想要使用这类纹理贴图增加表面的真实度,那么就可能需要激活这些设置并为它们指定纹理资产。 当你启用其中一种贴图设置时,纹理参数值(Texture Parameter Values)下面会出现一项新的设置,供你设置想要使用的纹理。
但是,你最好了解一下如何从头创建自己的材质,以便利用虚幻引擎渲染器中其他未被Datasmith_Color父材质公开的物理属性,例如粗糙度(Roughness)和金属感(Metallic)属性。请参阅基于物理的材质。
动画
如果源场景包含具有动画3D变换的对象(对象的平移、旋转和/或缩放值将随时间变化),Datasmith可以将这些动画导入虚幻引擎项目。它会创建一个新的关卡序列,在其中包含场景中每个动画对象的轨道,并将该关卡序列保存到Datasmith场景资产旁边的 Animations 文件夹中。你可以使用该关卡序列在虚幻编辑器或正在运行的虚幻引擎中播放动画。
例如,在该3ds Max场景中,车库门的部分经过动画化,将沿着样条线移动,同时,经过动画化的摄像机会绕着对象旋转。
导入后,你可以双击 内容浏览器(Content Browser) 中的关卡序列资产,以在Sequencer UI中将它打开,并播放动画。
例如,在该视频中,关卡视口被设置为显示Datasmith场景中的摄像机视图,因此动画结果看起来与3ds Max中的原始视图一样。
关于该工作流程有一些重要的注意事项:
-
Datasmith不会导入动画曲线。相反,对于原始源动画中的每一帧,它会为每个动画对象烘焙一个关键帧,其中包含该对象的当前变换。
-
Datasmith不处理子对象的动画、网格体变形、对象属性或骨骼绑定动画。它仅处理会改变场景对象在3D空间中的整体平移、旋转或缩放的动画。
有关关卡序列以及如何在Sequencer UI中工作的更多信息,请参阅Sequencer编辑器文档。
目前只有从3ds Max、Cinema 4D、VRED、Deltagen和glTF文件导入的场景支持导入动画。 (欲了解如何在导出的Datasmith文件中包含3ds Max场景中的动画,请参阅从3ds Max导出Datasmith文件。)
渲染摄像机动画
若源场景包含带动画的摄像机,则Datasmith创建的关卡序列将包含虚幻引擎关卡中对应CineCameraActor的轨道。此轨道所含的关键帧存储着该摄像机在3D空间中移动和旋转时的3D变换。若在 世界大纲视图(World Outliner) 中选择该CineCameraActor,并在虚幻编辑器中播放关卡序列,将在关卡视口中看到摄像机的预览窗口播放从该摄像机视角拍摄的动画。
但若要从动画摄像机的视角将关卡序列渲染为磁盘上的影片文件或图像序列,则首先需要向关卡序列添加一个 镜头切换(Camera Cut) 轨道,并将带动画的摄像机添加到该镜头切换轨道。
-
双击关卡序列,在Sequencer UI中打开它。
-
点击 +轨道(+ Track) 按钮,然后从菜单选择 镜头切换轨道(Camera Cut Track) 。
点击查看大图。
-
点击新 镜头切换(Camera Cuts) 轨道上的 +摄像机(+ Camera) 按钮,选择要使用其视角的摄像机。若要使用已在关卡序列中为其添加了动画的摄像机,可从 现有绑定(Existing Binding) 列表中选择。
点击查看大图。
若关卡序列包含许多动画轨道,可能难以在 现有绑定(Existing Binding) 列表中找到所需的摄像机。若如此,可改为从 新绑定(New Binding) 列表中选择所需的摄像机,或从 世界大纲视图(World Outliner) 中将CineCameraActor拖至Sequencer UI中的新 镜头切换(Camera Cuts) 轨道中。
-
在镜头切换轨道中,该CineCameraActor表示为时间轴上的一个区块。必要时,拖动这个区块的左右边界,使之与动画的开始和结尾对齐。
点击查看大图。
-
下次渲染关卡序列时,将以镜头切换轨道中摄像机的视角渲染每一帧。
可向镜头切换轨道添加多个不同的CineCameraActor,使渲染在不同的时间自动在它们之间来回切换。
在多个关卡中使用动画
每个关卡序列都包含对单个特定关卡中Actor的引用。当你使用Datasmith导入包含动画的场景时,关卡序列将包含在你导入场景时打开的关卡中动画Actor的引用。
如果你稍后将同一个Datasmith场景资产放入其他关卡,关卡序列无法在新关卡中找到相同的Actor。轨道名称会在Sequencer中显示为红色,在新关卡打开的情况下播放序列不会有任何效果。你可以采取以下几个办法修复这个问题:
-
你可以更新关卡序列,以指向新关卡中的Actor副本。
打开新关卡,单击Sequencer工具栏中的常规设置图标,从菜单中选择 修复Actor引用(Fix Actor References) 。
点击查看大图。
Actor轨道应该会恢复为常规颜色。然后,将更改保存到关卡序列。
关卡序列一次只能用于一个关卡。如果你将它指定给新关卡,旧关卡将无法使用它。
-
你可以在内容浏览器中复制关卡序列资产,然后如上所述修复其Actor引用。这样,你就可以在导入了内容的原始关卡中使用一个关卡序列,在新关卡中使用另一个关卡序列。
如果重新导入Datasmith场景资产,只有原始关卡序列会随着源场景中动画的更改而更新。你可能需要重新创建副本并再次修复其Actor引用。
-
如果需要在多个关卡中使用同一个导入的关卡序列动画,请考虑使用 子关卡。你可以将Datasmith场景导入空关卡,然后将该关卡作为子关卡添加到需要播放动画的每个关卡内部。有关具体有哪些子关卡以及如何使用它们的更多信息,请参阅管理多个关卡。
动画时间和帧精度
由于播放会对动画帧率与虚幻引擎每秒渲染帧数之间的不一致进行调整,所以播放包含许多轨道和关键帧的复杂动画时,有时可能会发生卡顿和"跳帧"现象。为避免此问题,尽量使播放流畅,Datasmith会固定在它创建的关卡序列中启用 在运行时锁定为显示率(Lock to Display Rate at Runtime) 属性。
此设置位于 Sequencer UI中的此位置:
点击查看大图。
这将提高动画的流畅性。但要注意,此设置会将引擎的最大帧率限制为动画的帧率。若要引擎使用更高的帧率,则此法不适用。例如,若动画片段在源应用程序中以每秒24或30帧的速率创建,而你需要在VR中以每秒90帧的速率播放该动画,那么将引擎帧率限制为动画帧率则并非良策。此类情况下,需要为关卡序列资产禁用此选项。
图层
如果你的源应用程序允许你将内容组织为多个图层或类似的内容,Datasmith会在虚幻编辑器中保留该组织形式。你可以使用 图层(Layers) 窗口(窗口(Window)>图层(Layers))来显示和隐藏图层,或者快速找到并选择一个图层中的所有对象。
但是,虚幻编辑器不支持 嵌套 图层。如果源场景使用嵌套图层,Datasmith会自动将图层的层级展平为一个列表。
有关如何在虚幻编辑器中使用图层的更多信息,请参阅层级面板。
元数据
对于某些类型的源文件格式,Datasmith会导入场景中你在源应用程序中设置的几何体对象的元数据。你可以在虚幻编辑器中使用蓝图和Python脚本访问该元数据。有关该系统的详细信息,请参阅使用Datasmith元数据。
应用程序特定的技术型元数据
某些第三方应用程序和文件格式允许你访问与单个场景对象相关的技术型元数据值,如它们的唯一ID、对象类或其他应用程序的特定数据。Datasmith会将这类技术数据导入到它分配给静态网格体组件的组件标签中,该组件用于表示关卡中每个对象的几何体。
你可以从细节(Details)面板中访问元数据。
-
在 关卡视口(Level Viewport) 或 世界大纲视图(World Outliner) 中选择想要查看其组件标签的Actor。
-
在 细节(Details) 面板中,选择分配给该Actor的静态网格体组件。
-
在 细节(Details) 面板中向下滚动,找到 标签(Tags)>组件标签(Component Tags) 列表。
点击查看大图。
这类技术信息通常特定于创建了该对象的源应用程序。因此,与上一节所述的Datasmith元数据不相关。相比之下,Datasmith元数据通常表示关于各个场景对象的"现实"信息,例如BIM数据、构造属性、成本、制造商等;或者表示在生产流程中具有特殊含义的用户自定义属性。