OpenFlight® 格式常用于视觉模拟系统。可以导入和导出 OpenFlight 文件。使用 Flight Studio® 工具,还可以创建和编辑 OpenFlight 文件中的对象和属性。
OpenFlight 场景
本主题介绍了解如何将 OpenFlight 文件转换为 3ds Max 结构以及随后在导出时将转换的结构重新转换为 OpenFlight 文件所必需的详细信息。
以下各节介绍导入或导出 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 视口中被隐藏。这样既可以轻松编辑任何几何体,又可提供清楚的视口显示。
导入过程还会保留材质和纹理。所创建的单独网格将遵循以下条件:相似顶点、相似网格和贴图。所产生的 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 视口中正确进行显示。
纹理贴图在导入时是基于其路径的。首先,使用真实路径(OpenFlight 文件中存储的路径)查找纹理。如果查找失败,则 Flight Studio 会查找与导入的 OpenFlight 文件相同的目录。如果没有发现贴图,则 Flight Studio 将显示错误对话框。如果没有发现纹理贴图,在导出时将保持其原始路径。
将仅导出材质的漫反射通道中出现的贴图。不会导出先前讨论的不透明贴图通道中的贴图。合成贴图将导出为 OpenFlight 多材质纹理。
如果材质在其漫反射通道中有合成贴图,则将创建多纹理。所有合成子贴图及其对应 UV 贴图均将导出,而无论其与哪个贴图通道关联。将贴图通道保持在 1 至 8 范围内将有助于在连续导入和导出中保持相同的索引方案。
导出时也支持壳材质。此材质是在渲染到纹理操作中创建的。将导出对应于新创建的烘焙纹理贴图的材质。
OpenFlight 文件中的光源作为泛光灯、聚光灯和平行光导入。点光源(光串)具有特殊贴图。将导入点光源节点,并且其参数可供编辑。对于每个特定点光源(单个点),一个菱形网格将会生成并会将其放置为点光源节点的子级。该几何体表示特定点光源。包含相同 OpenFlight 珠子的光串将被转换成单个点光源。
点光源(光串)将导出为独立点光源。如上所述,每个点光源由几何体表示。导出时,任何点光源的位置将位于围绕该网格的轴对齐边界框的中心。任何几何体均可用于表示点光源,只要它在层次视图中作为点光源节点的子节点。
如果点光源节点没有子级(为空),则不会将该节点导出到文件。
导入时,可以有选择性地读取所有外部参照节点。导入后,就可以自由编辑任何几何体结构。编辑外部参照中的文件位置不会导致导入器读取其他文件。在多个外部参照节点之间,单位将保持不变。任何后续参照文件将缩放到首先导入的文件的单位。导入和导出时,将保留与外部参照节点相关的变换。
导入时,将保留与外部参照节点相关的所有变换。
仅导入的原始(顶级)文件将会导出。换句话说,标准导出将起始于场景根节点,并递归遍历整个场景图形。将不会导出“外部参照”之下的所有节点。如果要导出外部参照节点下的任何节点,请使用“文件”“导出选定对象”。
如果导入的外部参照节点包含变换,导出时将合并这些变换,并设置一个“通用矩阵”。
如果在 LOD(细节级别)节点上将“冻结”属性设置为“是”,则导出时会将位于属性面板中的中心 XYZ 值写入文件。否则,将从节点的 3ds Max 轴点派生这些属性。
导入 DOF(自由度)节点时,将使用“原点”、“X 轴上的位置”和“XY 平面上的位置”属性设置 3ds Max 对象的轴点。然后在导出时将该轴点用于派生这些值。
3ds Max 中的所有对象将显示在层次视图中。许多 3ds Max 对象在 OpenFlight 中没有对应的表示形式,但仍将显示在层次视图中。将不会导出这些非 OpenFlight 对象。