OpenFlight (FLT) 文件

OpenFlight® 格式常用于视觉模拟系统。可以导入和导出 OpenFlight 文件。使用 Flight Studio® 工具,还可以创建和编辑 OpenFlight 文件中的对象和属性。

OpenFlight 场景

本主题介绍了解如何将 OpenFlight 文件转换为 3ds Max 结构以及随后在导出时将转换的结构重新转换为 OpenFlight 文件所必需的详细信息。

注意: 3ds Max 支持将 OpenFlight 文件从版本 14.2 导入至版本 15.8。

以下各节介绍导入或导出 OpenFlight 文件时发生的精确数据转换过程。

转换和属性

取一个 OpenFlight 文件并将其结构导入到 3ds Max 并不完全适合。尽管 OpenFlight 在很多方面适合军事视觉模拟,但在某些方面它与 3ds Max 方法并不匹配。可能存在从 OpenFlight 到 3ds Max 然后回到 OpenFlight 的映射,但需要小心了解场景图形每个部分的处理方式。了解此转换后,使用 Flight Studio 可以大大提高效率和生产能力。

除非另行说明,以下“导入”各节中的任何说明同时适用于“导出”节。这意味着用于导入的任何特定设置或参数同样适用于导出。

在 Flight Studio 中的属性编辑是指对值进行编辑以及使用 3ds Max 的各种功能。任何节点的属性列表可能都无法精确反映 OpenFlight 说明中介绍的属性。必须非常小心,只公开所有 3ds Max 功能中均不存在的属性以进行编辑。这意味着在导出时,对于某些属性,即使您无法直接更改其值,也会进行自动设置。

除几何体外,所有 OpenFlight 对象均表示为 3ds Max 组。导入时,将打开所有 3ds Max 组对象以便编辑,同时在 3ds Max 视口中被隐藏。这样既可以轻松编辑任何几何体,又可提供清楚的视口显示。

导入

导入时,必须将 OpenFlight 面转换成 3ds Max 网格结构。这通过以下算法实现:将所有 OpenFlight 顶点合并到列表,然后创建 3ds Max 网格。部分导入变换参数基于顶点焊接阈值和极小区域阈值。此外,所有发现的共面多边(三个以上边)面均被三角化。导入时将保留面颜色、顶点 UV、顶点渲染状态和法线。

导入过程还会保留材质和纹理。所创建的单独网格将遵循以下条件:相似顶点、相似网格和贴图。所产生的 3ds Max 网格对象将根据该网格中的第一个面命名。

从 .FLT 文件导入非全白且具有纹理的面时,3ds Max 中的结果将为 50% 纹理和 50% 面颜色的混合。

导入时面节点中有附加属性。如果在文件中发现法线,则“使用最大法线”设置为“是”。如果没有发现法线,则设置为“否”。

导出

导出时,3ds Max 网格几何体结构将被写为 OpenFlight 面。每个产生的面的名称将由网格名称派生。面节点中的“注释”字段将复制到 OpenFlight 文件中的每个结果面。

使用 3ds Max“顶点绘制”修改器着色的面将导出为标准 OpenFlight 顶点颜色。

如果 3ds Max 中的面具有 100% 纹理,则在导出到 .FLT 之前需要将面颜色设置为全白,以确保输出文件也具有 100% 纹理。

导出时,如果“使用最大法线”设置为“否”,则不会将任何法线发送到文件。

如果面具有材质,则将其导出颜色设置为该材质的漫反射组件。如果没有,则将导出颜色设置为线框颜色。如果面具有材质且“有 Flt 材质”选项设置为“是”,则将 3ds Max 材质导出到 OpenFlight 文件。

纹理和贴图

导入

基本 OpenFlight 纹理和贴图将被导入到 3ds Max 材质编辑器。

具有发现有“不透明度”通道的贴图的材质(通过顶点属性设置)的处理将稍有不同。贴图将被复制到材质的不透明贴图通道。这将导致 3ds Max 视口正确显示。在材质中完成此不透明通道设置后,可使模型的显示按预期方式呈现。因此将会显示透明材质。

多纹理将存储为标准材质,并将合成贴图应用于其漫反射贴图通道。合成贴图最多可有八个子贴图,对应于 OpenFlight 文件中的各层。将为每个子贴图创建一个存储 UV 的贴图通道;每个通道指定有对应的数值。例如,第一个纹理与贴图通道 1 相关联。未使用的合并贴图已设置但被关闭。而且,任何包含“凹凸”或“自定义”设置(通过顶点)的纹理贴图也将被禁用。这样做可以允许在 3ds Max 视口中正确进行显示。

注意: 3ds Max 使用唯一方法在视口中显示材质和纹理贴图。3ds Max 不可能同时显示所有材质类型的所有纹理贴图。您可能会发现视口显示在视觉上与 OpenFlight 文件中的材质不匹配。Flight Studio 中的内部结构在导入和导出时保留所有材质设置,但这些材质可能不会在 3ds Max 视口中同时可见。

纹理贴图在导入时是基于其路径的。首先,使用真实路径(OpenFlight 文件中存储的路径)查找纹理。如果查找失败,则 Flight Studio 会查找与导入的 OpenFlight 文件相同的目录。如果没有发现贴图,则 Flight Studio 将显示错误对话框。如果没有发现纹理贴图,在导出时将保持其原始路径。

导出

将仅导出材质的漫反射通道中出现的贴图。不会导出先前讨论的不透明贴图通道中的贴图。合成贴图将导出为 OpenFlight 多材质纹理。

如果材质在其漫反射通道中有合成贴图,则将创建多纹理。所有合成子贴图及其对应 UV 贴图均将导出,而无论其与哪个贴图通道关联。将贴图通道保持在 1 至 8 范围内将有助于在连续导入和导出中保持相同的索引方案。

导出时也支持壳材质。此材质是在渲染到纹理操作中创建的。将导出对应于新创建的烘焙纹理贴图的材质。

光源和点光源

导入

OpenFlight 文件中的光源作为泛光灯、聚光灯和平行光导入。点光源(光串)具有特殊贴图。将导入点光源节点,并且其参数可供编辑。对于每个特定点光源(单个点),一个菱形网格将会生成并会将其放置为点光源节点的子级。该几何体表示特定点光源。包含相同 OpenFlight 珠子的光串将被转换成单个点光源。

导出

点光源(光串)将导出为独立点光源。如上所述,每个点光源由几何体表示。导出时,任何点光源的位置将位于围绕该网格的轴对齐边界框的中心。任何几何体均可用于表示点光源,只要它在层次视图中作为点光源节点的子节点。

如果点光源节点没有子级(为空),则不会将该节点导出到文件。

外部参照

导入

导入时,可以有选择性地读取所有外部参照节点。导入后,就可以自由编辑任何几何体结构。编辑外部参照中的文件位置不会导致导入器读取其他文件。在多个外部参照节点之间,单位将保持不变。任何后续参照文件将缩放到首先导入的文件的单位。导入和导出时,将保留与外部参照节点相关的变换。

导入时,将保留与外部参照节点相关的所有变换。

导出

仅导入的原始(顶级)文件将会导出。换句话说,标准导出将起始于场景根节点,并递归遍历整个场景图形。将不会导出“外部参照”之下的所有节点。如果要导出外部参照节点下的任何节点,请使用“文件”“导出选定对象”。

如果导入的外部参照节点包含变换,导出时将合并这些变换,并设置一个“通用矩阵”。

其他

LOD 节点

如果在 LOD(细节级别)节点上将“冻结”属性设置为“是”,则导出时会将位于属性面板中的中心 XYZ 值写入文件。否则,将从节点的 3ds Max 轴点派生这些属性。

DOF 节点

导入 DOF(自由度)节点时,将使用“原点”、“X 轴上的位置”和“XY 平面上的位置”属性设置 3ds Max 对象的轴点。然后在导出时将该轴点用于派生这些值。

非 OpenFlight 对象

3ds Max 中的所有对象将显示在层次视图中。许多 3ds Max 对象在 OpenFlight 中没有对应的表示形式,但仍将显示在层次视图中。将不会导出这些非 OpenFlight 对象。