UE4 Datasmith 格式简述
UE4 Datasmith
是由第三方建模软件的Datasmith
导出插件和UE4
端导入插件构成的。导出插件导出相关文件资源,包括*.udatasmith
场景描述文件以及对应的Mesh
和纹理资源。导入插件则是根据场景描述文件生成UE4对应的资源。
文件组成及其格式
Epic Games Unreal Datasmith
(.udatasmith) 是Datasmith
中间格式文件标准,用于将 3D 场景导入到虚幻引擎项目中。 Datasmith
文件夹包含诸如Mesh和Texture之类的资产。这些资源用于创建.udatasmith
文件,其中包含虚幻引擎 Actor(实例)的场景层次结构。多个 Actor 可以与相同的资产相关联,每个 Actor 还可以包含一组元数据键和值。
如下图所示为Revit Datasmith
插件导出的Datasmith
文件和文件夹。
*.udatasmith
是使用XML描述的关于场景层次结构、元数据信息、材质信息以及Mesh组合信息。
Mesh
<StaticMesh name="271345ccc49aa7d32c34a97b6c977ace" label="管道_管道类型_无缝钢管-焊接">
<file path="*_Assets/271345ccc49aa7d32c34a97b6c977ace.udsmesh"/>
<Size a="63975.40625" x="409.551453" y="21.847969" z="21.847969"/>
<LightmapCoordinateIndex value="-1"/>
<LightmapUV value="-1"/>
<Hash value="9635b943c3f44982e2179505caecf0aa"/>
<Material id="0" name="50d833912bee077a1e0af95c570822e4"/>
</StaticMesh>
材质
<MasterMaterial name="50d833912bee077a1e0af95c570822e4" label="高温_热水回水系统颜色" Type="1" Quality="0" >
<KeyValueProperty name="DiffuseColor" type="Color" val="(R=0.490196,G=0.690196,B=0.984314,A=1.000000)"/>
<KeyValueProperty name="DiffuseMapFading" type="Float" val="0.000000"/>
<KeyValueProperty name="TintEnabled" type="Bool" val="False"/>
<KeyValueProperty name="TintColor" type="Color" val="(R=0.313726,G=0.313726,B=0.313726,A=1.000000)"/>
<KeyValueProperty name="SelfIlluminationLuminance" type="Float" val="0.000000"/>
<KeyValueProperty name="SelfIlluminationFilter" type="Color" val="(R=1.000000,G=1.000000,B=1.000000,A=1.000000)"/>
<KeyValueProperty name="SelfIlluminationMapEnable" type="Bool" val="False"/>
<KeyValueProperty name="BumpAmount" type="Float" val="0.000000"/>
<KeyValueProperty name="IsMetal" type="Bool" val="False"/>
<KeyValueProperty name="Glossiness" type="Float" val="0.500000"/>
</MasterMaterial>
元数据
<MetaData name="47b979b25e11bcba04f49fc51d825cbc_DATA" reference="Actor.47b979b25e11bcba04f49fc51d825cbc">
<KeyValueProperty name="Element_Category" type="String" val="管道附件"/>
<KeyValueProperty name="Element_Family" type="String" val="静态平衡阀"/>
<KeyValueProperty name="Element_Type" type="String" val="标准"/>
<KeyValueProperty name="Element_总体大小" type="String" val="240 mm240 mm"/>
<KeyValueProperty name="Element_隔热层厚度" type="String" val="20 mm"/>
<KeyValueProperty name="Element_隔热层类型" type="String" val="橡塑保温棉"/>
<KeyValueProperty name="Element_标高" type="String" val="-6.050"/>
<KeyValueProperty name="Element_标高中的高程" type="String" val="7330"/>
<KeyValueProperty name="Element_创建的阶段" type="String" val="新构造"/>
<KeyValueProperty name="Element_拆除的阶段" type="String" val="无"/>
<KeyValueProperty name="Element_系统分类" type="String" val="循环回水"/>
<KeyValueProperty name="Element_系统类型" type="String" val="M-常温回水"/>
</MetaData>
完整示例
<DatasmithUnrealScene>
<Version>0.24</Version>
<SDKVersion>4.26.2</SDKVersion>
<Host>Revit</Host>
<Application Vendor="Autodesk Inc." ProductName="Revit" ProductVersion="2020"/>
<ResourcePath>D:/A</ResourcePath>
<User ID="7487beb84f95f1ea33dcb09490601f47" OS="Windows 10 (Release 2009)"/>
<StaticMesh name="6c39819a10e90b5810bc6c0c4f5d75e7" label="管道_管道类型_内外壁热镀锌焊接钢管-丝接或卡箍">
<file path="_Assets/6c39819a10e90b5810bc6c0c4f5d75e7.udsmesh"/>
<Size a="872.102417" x="3.427872" y="16.787811" z="16.787811"/>
<LightmapCoordinateIndex value="-1"/>
<LightmapUV value="-1"/>
<Hash value="88097329ab856460b31c3ce03bb0f625"/>
<Material id="0" name="a12b7dd13cc40a9abacdf9256b70bf41"/>
</StaticMesh>
<MasterMaterial name="a12b7dd13cc40a9abacdf9256b70bf41" label="HYP-自喷" Type="1" Quality="0" >
<KeyValueProperty name="DiffuseColor" type="Color" val="(R=1.000000,G=0.000000,B=1.000000,A=1.000000)"/>
<KeyValueProperty name="DiffuseMapFading" type="Float" val="0.000000"/>
<KeyValueProperty name="TintEnabled" type="Bool" val="False"/>
<KeyValueProperty name="TintColor" type="Color" val="(R=0.313726,G=0.313726,B=0.313726,A=1.000000)"/>
<KeyValueProperty name="SelfIlluminationLuminance" type="Float" val="0.000000"/>
<KeyValueProperty name="SelfIlluminationFilter" type="Color" val="(R=1.000000,G=1.000000,B=1.000000,A=1.000000)"/>
<KeyValueProperty name="SelfIlluminationMapEnable" type="Bool" val="False"/>
<KeyValueProperty name="BumpAmount" type="Float" val="0.000000"/>
<KeyValueProperty name="IsMetal" type="Bool" val="False"/>
<KeyValueProperty name="Glossiness" type="Float" val="0.500000"/>
</MasterMaterial>
<ActorMesh name="709ac30374d11c4af5f8081e3ee9dcae" label="管道_管道类型_内外壁热镀锌焊接钢管-丝接或卡箍" layer="管道">
<mesh name="6c39819a10e90b5810bc6c0c4f5d75e7"/>
<Transform tx="627715.9375" ty="-699380.875" tz="126.572128" sx="1.0" sy="1.0" sz="1.0" qx="0.0" qy="-0.707107" qz="0.0" qw="0.707107" qhex="00000080F20435BF00000000F204353F"/>
<tag value="Revit.Element.Id.3970290" />
<tag value="Revit.Element.UniqueId.8c144726-493d-41ff-ab00-9ecf3b927a7d-003c94f2" />
<tag value="IsElement" />
</ActorMesh>
<MetaData name="709ac30374d11c4af5f8081e3ee9dcae_DATA" reference="Actor.709ac30374d11c4af5f8081e3ee9dcae">
<KeyValueProperty name="Element_Category" type="String" val="管道"/>
<KeyValueProperty name="Element_Family" type="String" val="管道类型"/>
<KeyValueProperty name="Element_Type" type="String" val="内外壁热镀锌焊接钢管-丝接或卡箍"/>
<KeyValueProperty name="Element_系统分类" type="String" val="湿式消防系统"/>
</MetaData>
</DatasmithUnrealScene>
Mesh和纹理存储
*_Assets
文件夹 包含了 *.udsmesh
Mesh 资产文件和Texture
。
*.udsmesh
二进制文件存储了顶点、索引及UV等信息。据了解应该是FRawmesh
对象序列化本地存储格式。
其他
总结
在清楚了解Datasmith格式之后,可以自定义导出插件将自定义三维格式转换为Datasmith格式,以便于利用UE4 Datasmith 导入插件的功能。