チュートリアル > ジオメトリ データのテキスト ファイルへの出力 > ジオメトリ データのテキスト ファイルへの出力 - 第 2 部 |
これは、「ジオメトリ データの出力」チュートリアルの第 2 部です。第 1 部で開発したスクリプトを拡張して、スムージング グループ、マテリアル ID、およびエッジ可視性をサポートします。
ExportMesh という名前の macroScript を定義します。スクリプトを使用する場合は、[カスタマイズ](Customize)に移動してスクリプトを[HowTo]カテゴリからツールバー、メニュー、またはクアッド メニューにドラッグするか、キーボード ショートカットを割り当てることができます。
特定のオブジェクト タイプの選択だけを許可するフィルタ関数が必要です。この例では、パラメータとして渡されるオブジェクトのスーパークラスが GeometryClass で、渡されたオブジェクトのクラスが TargetObject でない場合にのみ、関数は true を返します (TargetObject は、メッシュなしの唯一のジオメトリ オブジェクトです)。
ここで、ユーザに 2 番目のオブジェクトを選択してもらい、マウス ポインタの下にあるすべてのオブジェクトにフィルタを適用します。マウス ポインタは、シーン オブジェクトのクラスがフィルタ関数内で定義されたクラスに一致する場合にのみ、シーン オブジェクトの選択を許可します。
ユーザが有効なオブジェクトを選択した場合(つまり、右クリックしてキャンセルせず、 Esc も押さなかった場合)、スクリプトの残りの部分を実行します。そうでない場合は、以降の行をスキップします。
これは、第 1 部のコードと同じです。選択されたオブジェクトからメッシュを取得します。
ハードコードされたパスを指定する代わりに、ユーザにファイル名を入力してもらいます。
ユーザが有効な名前を指定した場合、つまり[キャンセル](Cancel)を押さなかった場合は、実行を続けます。
out_file = createfileout_name num_verts = tmesh.numverts num_faces = tmesh.numfaces format "%,%\n" num_verts num_faces to:out_file
第 1 部と同様に、新しいファイルを作成して頂点と面の数を出力します。
次に、第 1 部のコンパクト バージョンと同様に、頂点を書き込みます。
面のループでは、今回の方が多くのデータを書き出します。各面には、スムージング グループの値、マテリアル ID の値、および 3 つのエッジ可視性の値があります。このすべてを単一のパスで書き出します。
Editable_Mesh : GeometryClass および TriMesh : 値
これで、すべての値を取得したので、それらの値すべてを単一行で出力します。行の最後に改行文字を追加します。 これで、各面に 1 つの行が対応します。
スクリプトをテストするため、MAXScript エディタのメニューから[ツール](Tools) > [評価](Evaluate)を選択するか、Ctrl+Eを押します。次にツールバーをカスタマイズし、スクリプトを[HowTo]カテゴリからドラッグします。ボタンを押して、シーンからジオメトリ オブジェクトを選択します。Patch、NURBS、手続き型オブジェクトなど、任意のジオメトリ オブジェクトを選択することができます。
ここで拡張された出力を入手したので、対応する入力スクリプトに進んでそれを拡張して、新しいデータ フォーマットを読み戻し、すべての面プロパティを持つ新しいシーン オブジェクトを作成します。
後で、たとえばテクスチャ座標のサポートなどを追加して、自分でこのスクリプトを拡張することができます。
チュートリアル - ジオメトリ データのテキスト ファイルからの読み取り - 第 1 部