OpenFlight® 形式は、ビジュアル シミュレーション システムで広く使用されています。OpenFlight ファイルは、読み込みや書き出しに対応しています。Flight Studio® ユーティリティを使用すると、OpenFlight ファイルにオブジェクトやアトリビュートを作成して編集できます。
OpenFlight のシーン
このトピックでは、OpenFlight がどのように 3ds Max 構造に変換され、また書き出しのときに再び OpenFlight ファイルに変換されるかを理解するために必要な詳細について説明します。
OpenFlight 形式の詳細については、「http://www.multigen.com/products/standards/openflight/index.shtml」を参照してください。
次のセクションでは、OpenFlight ファイルの読み込みまたは書き出し時に発生する正確なデータ変換の例について説明します。
OpenFlight ファイルの構造を 3ds Max に読み込むだけでは、3dsMax の構造と正確に一致しません。軍事ビジュアル シミュレーションに適した 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 メッシュ オブジェクトには、そのメッシュの最初の面と同じ名前が付けられます。
面ノードには、読み込みの追加のアトリビュートがあります。ファイルに法線がある場合、[Use Max Normals]を[Yes]に設定します。法線がない場合は、[No]に設定します。
書き出し時に、3ds Max メッシュ ジオメトリ構造が OpenFlight の面に書き込まれます。生成された各面には、メッシュ名から名前が付きます。面ノードの[コメント](Comment)フィールドが、OpenFlight ファイル内に生成された各面にコピーされます。
3ds Max の[頂点ペイント](VertexPaint)モディファイヤを使用して着色された面は、標準の OpenFlight 頂点カラーとして書き出されます。
書き出し時、[Use Max Normals]が[No]に設定されている場合は、法線はファイルに送信されません。
面にマテリアルが適用されている場合は、書き出されたカラーは、そのマテリアルの拡散反射光コンポーネントに設定されます。マテリアルが適用されていない場合は、書き出されたカラーはワイヤフレーム カラーに設定されます。面にマテリアルが適用されており、[Has FLT Material]オプションが[Yes]に設定されている場合は、3ds Max マテリアルが OpenFlight ファイルに書き出されます。
基本的な OpenFlight テクスチャおよびマップは、3ds Max マテリアル エディタに読み込まれます。
不透明度チャネルを持つマップが割り当てられたマテリアル(頂点アトリビュート設定経由)は、他のマテリアルと処理が若干異なります。マップは、マテリアルの不透明度マップ チャネルにコピーされます。これにより、3ds Max ビューポートが正しく表示されます。マテリアルで不透明度チャネルをこのように設定する理由は、モデルを意図どおりに表示するためです。透明なマテリアルは、透明に表示されます。
マルチテクスチャは、合成マップが拡散反射光マップ チャネルに適用された標準マテリアルとして保存されます。合成マップには、OpenFlight ファイルのレイヤに対応する最大 8 つのサブマップがあります。各サブマップに対して UV を保存するマップ チャネルが作成され、チャネルには対応する数字が割り当てられます。たとえば、最初のテクスチャがマップ チャネル 1 と関連付けられます。未使用の合成マップも設定されますが、オフになります。また、「バンプ」または「カスタム」設定(頂点経由)を含むすべてのテクスチャ マップもオフになります。これにより、3ds Max ビューポートが適切に表示されます。
テクスチャ マップは、そのパスに基づいて読み込まれます。まず、本来のパス(OpenFlight ファイルに保存されたパス)を使用して、テクスチャを検索します。この検索に失敗すると、Flight Studio は読み込んだ OpenFlight ファイルと同じディレクトリを検索します。マップが見つからない場合、Flight Studio はエラー ダイアログ ボックスを表示します。テクスチャ マップが見つからない場合、書き出し時にはオリジナルのパスが保持されます。
マテリアルの[拡散反射光](Diffuse)チャネルに表示されるマップのみが書き出されます。前述の不透明度マップ チャネルのマップは書き出されません。合成マップは、複数の OpenFlight マテリアル テクスチャとして書き出されます。
マテリアルの[拡散反射光](Diffuse)チャネルに合成マップが割り当てられている場合は、マルチテクスチャが作成されます。どのマップ チャネルが関連付けられているかに関係なく、すべての合成サブマップおよび対応する UV マップが書き出されます。1 ~ 8 のマップ チャネルを使用すると、その後の読み込みおよび書き出し処理で同じインデックス スキームが使用されます。
書き出し時に、シェル マテリアルも使用できます。このマテリアルは、テクスチャのレンダリング処理中に作成されます。新しく作成されたベイク処理済みテクスチャのマップに対応するマテリアルが書き出されます。
OpenFlight ファイルの光源は、オムニ、スポット、および指向性ライトとして読み込まれます。ライト ポイント(ライト ストリング)では、特別なマッピングが行われます。ライト ポイント ノードを読み込むと、そのパラメータが編集できるようになります。特定の各ライト ポイント(個別のポイント)について、ダイアモンドのような形のメッシュが生成され、ライト ポイント ノードの子として配置されます。そのジオメトリが、特定のライト ポイントを表します。複製された OpenFlight Beads を含むライト ストリングが、個別のライト ポイントに変換されます。
ライト ポイント(ライト ストリング)は、独立したライト ポイントとして書き出されます。前述のとおり、各ライト ポイントはジオメトリによって表されます。書き出し時に、すべてのライト ポイントが、メッシュを囲むバウンディング ボックス(座標軸に従って表示されます)の中央に配置されます。ジオメトリが階層ビューでライト ポイント ノードの子として表示される場合は、このジオメトリがライト ポイントを表します。
ライト ポイント ノードに子がない(ノードが空である)場合は、ノードはファイルに書き出されません。
すべての外部参照ノードは、オプションで読み込み時に読み取ることができます。外部参照ノードを読み込んだら、ジオメトリ構造を自由に編集できます。外部参照のファイルの場所を編集しても、別のファイルを読み込むことはありません。単位は、複数の外部参照ノードで維持されます。最初に読み込まれたファイルの単位が、その後に読み込まれる外部参照ファイルのスケールでも使用されます。外部参照ノードに関連付けられている変換は、読み込みおよび書き出し時に維持されます。
読み込み時には、外部参照ノードに関連付けられているすべての変換が維持されます。
読み込まれたオリジナル(一番上)のファイルのみが書き出されます。つまり、通常の書き出しはシーン ルート ノードから開始され、再帰的にシーン グラフ全体をトレースします。外部参照ノードの下にあるノードは書き出されません。外部参照ノードの下にあるノードを書き出したい場合は、アプリケーション メニューの[書き出し](Export) [選択を書き出し](Export Selected)を使用します。
読み込んだ外部参照ノードに変換が含まれている場合は、書き出し時にこれらの変換が結合され、「一般行列」が設定されます。
LOD (level-of-detail、詳細レベル)ノードで[フリーズ](Freeze)アトリビュートが[はい](Yes)に設定されている場合、アトリビュート パネルにある[Center XYZ]値が書き出し時にファイルに書き込まれます。[いいえ](No)に設定されている場合は、これらのアトリビュートはノードの 3ds Max 基点から取得されます。
DOF (degree-of-freedom、自由度)ノードを読み込む場合、[Origin]、[Position On X-Axis]、および[Position On XY Plane]アトリビュートを使用して、オブジェクトの 3ds Max 基点が設定されます。基点は、書き出し時にこれらの値を取得するために使用されます。
3ds Max のすべてのオブジェクトは、階層ビューに表示されます。多くの 3ds Max オブジェクトは、OpenFlight には対応する表示がありませんが、階層ビューには表示されます。これらの非 OpenFlight オブジェクトは書き出されません。