チュートリアル > ジオメトリ データのテキスト ファイルからの読み取り > ジオメトリ データのテキスト ファイルからの読み取り - 第 2 部 |
これは、「ジオメトリの読み込み」チュートリアルの第 2 部です。チュートリアル - ジオメトリ データのテキスト ファイルへの出力 - 第 2 部 で開発した出力スクリプトによって書かれた拡張データを、このスクリプトで読み込むことができます。
ImportMesh という名前の macroScript を定義します。スクリプトを使用する場合は、[カスタマイズ](Customize)に移動してスクリプトを[HowTo]カテゴリからツールバー、メニュー、またはクアッド メニューにドラッグするか、キーボード ショートカットを割り当てることができます。
第 1 部の場合と同様に、頂点と面を保持する配列を定義します。
ただし、スムージング グループ、マテリアル ID、およびエッジの可視性を格納するための 3 つの配列も定義します。
固定された名前を読む代わりに、ユーザがファイル名を選択できるようにします。
選択されたファイル名が undefined でないかぎり、つまりユーザが[キャンセル](Cancel)を押さないかぎり、続行できます。
in_file = openFile in_name if in_file != undefined then ( num_verts = readValue in_file num_faces = readValue in_file for v = 1 to num_verts do append vert_array (readValue in_file) for f = 1 to num_faces do ( append face_array (readValue in_file)
読み取り用のコードのこの部分は第 1 部と同じですが、追加のデータを読む必要があります。
ファイルからスムージング グループの値とマテリアル ID の値を読み、配列に付加します。
Editable_Mesh : GeometryClass および TriMesh : 値
後のアプリケーション用にエッジ可視性の値を格納するために、新しい配列を作成して値を付加します。
この時点で、第 1 部と同様のメッシュを取得しました。ここで、結果のメッシュに追加データを適用する必要があります。
次に、new_mesh オブジェクトの f 番目のスムージング グループを、sgroup_array 内の f 番目の位置に格納された値に設定します。
new_mesh オブジェクトの f 番目の面のマテリアル IDを、matid_array 内の f 番目の位置に格納された値に設定します。
setEdgeVis new_mesh f 1 edge_array[f][1] setEdgeVis new_mesh f 2 edge_array[f][2] setEdgeVis new_mesh f 3 edge_array[f][3]
さらに、new_mesh オブジェクトの f 番目の 3 つのエッジのそれぞれのエッジ可視性を、edge_array 内の f 番目の位置にある下位の配列に格納された値に設定します。
最後に、内部のメッシュ キャッシュを更新して、シーン内に変更が反映されるようにします。これは、非常に重要なステップです。
スクリプトをテストするために、Output スクリプトを使用して最初にファイルを作成します。次に、MAXScript エディタのメニューからこのスクリプトを開き、[ツール](Tools) > [評価](Evaluate)を選択するか、Ctrl+Eを押します。他のスクリプトでファイルにエクスポートされたオブジェクトがシーンに表示されます。ローカル座標とオブジェクト変換を書き出さなかったため、そのオブジェクトの位置を訂正する必要がありますが、基点はワールド座標にあることに注意してください。
第 2 部のチュートリアルで提案されたとおりにジオメトリ出力のスクリプト内でテクスチャ座標の書き込みを実装した場合は、さらにこのスクリプトを変更して、追加のデータを読むことができます。
チュートリアル - ジオメトリ データのテキスト ファイルへの出力 - 第 2 部