Choose your operating system:
Windows
macOS
Linux
Datasmith导入器可自动导入其处理对象相关的 元数据 :即在3D设计或CAD应用程序中设置的对象信息。元数据常用于存储资源代表的机械部件或建筑元素的真实信息,如部件成本、制造材质、物理特性(如重量、隔热率)或使用信息(如应用到部件的最大扭矩)。还可使用元数据存储项目所需资源的其他相关信息。
在虚幻编辑器和虚幻引擎中启用此元数据,可提供以下两类帮助:
-
在资源流程中: 导入资源和设置关卡时可使用元数据,以区分需不同处理的不同类型的资源和Actor。例如:
-
可在Datasmith导入期间使用元数据,以辨识最终场景中无需的资源类型,从而跳过导入。
-
导入后,可使用元数据辨识关卡中要合并、连接、替换或替换其材质的Actor。
-
-
游戏运行时: 可在运行时使用元数据,向用户显示源设计工具中的Actor相关选择信息。例如:
-
若关卡中的对象包含BIM数据,且此类数据含有自身结构属性信息,则在玩家在场景中选择此类对象时,需在互动体验中显示此类信息。
-
如项目为产品配置器,玩家可利用其选择不同设计方案,则可能需设置游戏逻辑,以基于指定到可见资源的成本元数据,计算和显示玩家当前选择的总运行成本。
-
本页将对通过Datasmith导入流程将元数据导入到虚幻,及在编辑器中和运行时访问脚本中元数据的方法进行讲解。
元数据源
Datasmith目前可从以下设计工具中导入元数据:
Datasmith目前仅处理几何体上的元数据,而非如光源或相机等其他场景对象。
Autodesk 3ds Max
在 对象属性(Object Properties) 窗口的 用户定义(User Defined) 选项卡上,将元数据添加到3ds Max对象。
要在3ds Max中访问网格体的此面板:
-
在大纲视图或视口中选择该网格体。
-
右键点击并从快捷菜单中选择 属性 或 对象属性 ,或在主菜单中选择 编辑 > 属性 。
-
以
键 = 值
对的格式将将元数据输入到该面板中,如上所示。无比在等号(=)两端各保留一个空格 。否则Datasmith将无法识别元数据,也无法正常导入元数据。
还可 使用MAXScript 设置用户定义的属性。
若最初在Revit中创建的模型被导入3ds Max,则3ds Max导入工具应已使用模型BIM信息预设用户定义的属性。
Autodesk Revit
在Revit视图中选择元素时, 属性 控制板将显示指定到该元素的所有实例属性列表。可随意修改此类值,并添加自定义属性。
欲了解设置和使用此类属性的详细方法,参见 Revit帮助 。
使用Datasmith将Revit场景导入虚幻编辑器时,Datasmith会将各Revit元素的所有实例属性作为元数据,指定到其在虚幻引擎关卡中创建的元素静态网格体Actor上。该元数据还包括对象Revit类型的所有非空类型属性。
由于Datasmith元数据固定为键值对的简单列表,因此不包括属性控制板中的类别标题(如上图中的 约束(Constraints) 、 结构(Structural) 、 维度(Dimensions) 和 辨识数据(Identity Data) )。仅保留实际属性的命名和值。
Dassault Systèmes SolidWorks
导入SolidWorks文件时,Datasmith会向其创建的各静态网格体Actor添加最少量的预设元数据,以表明该网格体在原始SolidWorks设计中的部件命名和程序集。但Datasmith目前无法继承添加到部件和程序集的自定义元数据属性。
Trimble SketchUp Pro
对于在SketchUp中创建的各组件,可设置其的 高级属性 ,如价格、尺寸和状态等:
Datasmith会将所有此类高级属性(包括类型值(如有))导入元数据。
可将Datasmith元数据附加到场景层级中代表组件的Actor,而非附加到代表该组件几何体的单个静态网格体Actor。若场景需进行以上操作,需按照本页下文内容,调整蓝图和Python范例。
Maxon Cinema 4D
在Cinema 4D中,可选择 属性(Attributes) 面板中的 用户数据(User Data)> 管理用户数据(Manage User Data) ,将用户数据添加到场景中的每个对象。
欲了解如何进行此操作的更多信息,请参阅 Cinema 4D文档 。
关于数据转换,有几条重要的注意事项:
-
在Cinema 4D中,可将用户数据组织为分层的组,但虚幻引擎中的Datasmith元数据始终是键和值组成的扁平列表。如用户数据包含任何组(如上图所示),Datasmith会使层级扁平化,将所有组中的所有元数据键放到一个扁平列表中。组名本身会被丢弃。
例如在下图中,可以看到组没有导入,而内嵌的属性( IntegerData 、 VectorData 、 ColorData 和 BooleanData )都变成了 StringData 和 FloatData 的同级。
-
无论在Cinema 4D中为用户数据设置怎样的数据类型,存储在Datasmith元数据中的值始终是字符串。只要有可能,Datasmith就会将原始数据值转换为字符串,对其进行解析即可提取相关信息。但某些复杂的或特殊用途的Cinema 4D数据类型不受支持,如梯度、指向其他场景对象的链接、优先级值、样条等。
例如,下图显示了 ColorData 和 VertexData 项如何被分别转换为包含原始颜色RGB值和原始顶点XYZ值的字符串。
-
Datasmith只允许在元数据键名中使用字母数字字符、连字号和下划线。如用户数据的名称包含其他任何字符,这些字符将自动转换为下划线。
下图显示导入上图所示用户数据的结果:
IFC 2x3
Datasmith会导入指定给每个IFC对象的所有属性,在相应的虚幻引擎Actor上将它们另存为Datasmith元数据。
关于数据转换的注意事项:
-
IFC允许将属性整理到组中。例如,上图显示了多个组: PSet_Revit_Mechanical 、 PSet_Revit_Dimensions 、 PSet_Revit_Identity Data 等。但虚幻引擎中的Datasmith元数据始终是键和值组成的扁平列表。如IFC属性包含任何组(如上图所示),Datasmith会使层级扁平化,将所有组中的所有元数据键放到一个扁平列表中。组名本身会被丢弃。
-
Datasmith只允许在元数据键名中使用字母数字字符、连字号和下划线。如用户数据的名称包含其他任何字符,其将自动转换为下划线。例如在上图中, Fixture Units 属性转换为Datasmith元数据中的 Fixture_Units 。
元数据值中的所有特殊字符都会保留。
在虚幻编辑器中查看元数据
Datasmith导入流程完成后,可在 细节 面板中的 资源用户数据(Asset User Data) 部分下,查看关卡中静态网格体Actor的元数据:
编辑器中的Datasmith元数据当前为只读状态。
在蓝图和Python中访问元数据
有多种访问关联场景对象的元数据的方法。应根据在Datasmith导入流程期间或导入完成后访问元数据,选择要使用的方法。
忽略设计或CAD应用程序的所有元数据键和值原始类型,均以字符串形式存储于虚幻引擎中。例如,若将3ds Max中的元数据值设为布尔值(如
true
)或数字(如
312
),在虚幻脚本中读取此类元数据时,将以字符串形式显示。如需布尔值或数字值,使用蓝图转换节点(如
工具(Utilities)>字符串(String)> String to Int
或
String to Float
),或内置Python字符串解析函数(如
int()
或
float()
)。
导入时访问元数据
如需在Datasmith导入流程 期间 访问元数据(例如,在生成场景的虚幻资源前辨识要过滤的特定网格体),可在Datasmith场景中读取元数据。欲了解如何在输入过程运行脚本的背景信息,参见 自定义Datasmith导入流程 。
您会发现元数据已附加到Datasmith场景中的 网格体Actor元素 。
选择实现方法:
Python
导入后访问元数据
在导入流程将Datasmith场景导入虚幻资源和Actor后,其同时会将Datasmith场景中各网格体元素的元数据,应用到关卡中代表该静态网格体实例的所有Actor。之后可使用蓝图或Python获取关卡中任意或所有静态网格体Actor的元数据。
选择实现方法:
Python