チュートリアル > カスタム メッシュ オブジェクトの作成 |
MAXScript で、mesh コンストラクタに頂点と面のリストを指定し、編集可能なメッシュ オブジェクトを作成することができます。
ここでは、太陽の記号に似た円の 2D メッシュ オブジェクトを作成する単純なメッシュ生成のスクリプトを作成する方法について説明します。
全体の流れ: |
メッシュ オブジェクトの基本パラメータを定義します。 |
メッシュのすべての頂点を作成し、配列内に格納します。 |
頂点にインデックスを指定してすべての面を作成し、別の配列内に格納します。 |
パラメータとして 2 つの配列を指定して、メッシュのコンストラクタを呼び出します。 |
最初に、ジオメトリを定義するための変数がいくつか必要です。この円形のオブジェクトには、内側と外側の半径、および外側の光線のサイズを定義する幅の値が必要です。
ユーザ変数の vert_count が 0 に設定され、メッシュの面を作成する間に増えていきます。
ステップの数が作成する面の数に関連付けられます。これは、次のループ内でステップとして使用されます。
for a ループは、 num_faces 変数で指定されたユーザ定義のステップを使用して、0 から 360 (度)までカウントし、オーバーラップを避けるために 1 ステップ マイナスします。この変数で、メッシュ内の「光線」の数を定義します。たとえば、10 本の光線が必要な場合は、360/10 = 36、つまり光線当たり 36 度ということがわかります。 a の値は、36 ずつ 9 回増えて、円を一周します。
v1 = [radius1*cos(a+width),radius1*sin(a+width),0] v2 = [radius1*cos(a-width),radius1*sin(a-width),0] v3 = [radius2*cos(a),radius2*sin(a),0]
頂点の v3 は、円の中心に近くなっています (距離は radius2)。
radius3 が 0 の場合は、すべての面のすべての v3 が中心に集中します。
X = CenterX + Radius * Cos(A); Y = CenterY + Radius * Sin(A); Z = 0.0
A は、0 から 2*Pi までの範囲で変化する角度です。この例では、CenterX と CenterY は 0.0 です。
角度 a との間で幅の値を加算および減算して、3 番目の頂点に使用される実際の角度から 2 つの外側の頂点のオフセットを取得します。3 番目の座標 Z は、この例では常に 0 です。 メッシュは XY 平面にあります。
これで、3 つの新しい頂点すべてが頂点の配列に追加されます。
ここで、face 配列に平面を格納することができます。 反時計回りに 3 つの頂点のインデックスを Point3 の値として格納します。これで、通常の位置指定の平面が作成されます。 vert_count は依然として vert_array 内の頂点の数より 3 少ないため、現在の値に 3 を加えて、面定義に必要な正しいインデックスを取得します。
これで、頂点のカウンタを 3 増やします。 次の平面定義で、この正しいインデックスを再度使います。同じことが、 vert_count = vert_count + 3 の式で表現できます。
次に、 mesh コンストラクタを呼び出して頂点と面の配列を指定することで、新しい編集可能メッシュを作成することができます。
このスクリプトは、メッシュ作成スクリプトの概略にすぎません。2 番目の段階として、このコードを発展させて、[作成](Create)パネル内でインタラクティブに操作するリアルなジオメトリ プラグイン スクリプトを生成します。
チュートリアル - スクリプト Geometry プラグインの作成
別の平面に異なるマテリアル ID を割り当てて、UVW 座標をメッシュに割り当てる方法や、その他の方法を試してみることができます。