meshOp Structにより公開されている次のメソッドは、メッシュ頂点に対する高度なアクセスを提供します。
メソッド:
meshop.getNumVerts <Mesh mesh>
メッシュの頂点の数を返します。
meshop.setNumVerts <Mesh mesh> <int>
メッシュの頂点の数を設定します。新しい頂点は、メッシュのローカル座標系の[0,0,0]に作成されます。
meshop.getVert <Mesh mesh> <int vertIndex> node:<node=unsupplied>
指定された頂点の位置を返します。<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、返される位置は現在の座標系コンテキストにあります。<mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、戻り値はメッシュのローカル座標系にあります。
<point3_array> meshop.getVerts <Mesh mesh> <vertlist> node:<node=unsupplied>
3ds Max 2018.2 以降で使用可能: 指定した頂点の位置の配列を返します。<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、返される位置は現在の座標系コンテキストにあります。 <mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、戻り値はメッシュのローカル座標系にあります。
meshop.setVert <Mesh mesh> <vertlist> {<point3 pos> | <point3 pos_array>} node:<node=unsupplied>
指定された頂点を指定された位置に移動します。<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、位置は現在の座標系コンテキストにあります。<mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、位置はメッシュのローカル座標系にあります。
オプションで位置を配列として指定できます。この場合、pos_array の値の数が vertlist で指定された頂点の数と一致している必要があります。
アニメーションのコンテキストがオン、または[オート キー] (AutoKey)ボタンにチェックが付いた状態で実行された場合、編集可能メッシュの頂点にアニメーション キーが作成されます。これは、3ds Max 2 から使用できるオリジナルの setVert()
頂点メソッドには当てはまりません。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
<vertlist>
引数は、配列ではなく bitArray 値として渡す必要があります。引数を配列として渡すと、パフォーマンスに非常に重大な影響が発生します。
これは、サブオブジェクト リストを操作するすべてのメソッドに該当します。
meshop.getVertexAngles <Mesh mesh> <vertlist>
このメソッドは、頂点が存在する各面におけるこの頂点のコーナーの角度の合計を、頂点ごとに計算します。
たとえば、グリッドの中心に配置されているポイントは、常に 2*Pi (6.28319 ラディアン = 360 度)の頂点角度になりますが、ボックスのコーナーは 3.0/2*Pi (4.71239 ラディアン = 270 度)になります。
size=(mesh
内の #vertices)の配列を返します。vertlist
で指定されていない頂点の配列要素には、値 0 が含まれます。
meshop.getVertsByColor <Mesh mesh> <color color> <float red_thresh> <float green_thresh> <float blue_thresh> channel:<int=0>
頂点カラーがカラー範囲内にある頂点を <bitarray>
として返します。値の範囲は 0 から 255 です。
meshop.getVertsByColor <Mesh mesh> <point3 uvw> <Float u_thresh> <Float v_thresh> <Float w_thresh> channel: <int=0>
頂点 UVW が UVW 範囲内にある頂点を <bitarray>
として返します。値の範囲は 0 から 1 です。
meshop.setVertColor <Mesh mesh> <int mapChannel> <vertlist> <Color color>
指定された <mapChannel>
の指定された頂点に頂点カラーを設定します。
meshop.breakVerts <Mesh mesh> <vertlist>
<vertlist>
内の各頂点に対して、N-1 個の新しい頂点が同じ位置に作成されます。N はその頂点を使用する面の数です。
meshop.chamferVerts <Mesh mesh> <vertlist> <float amount>
各面はこれらのいずれかの頂点を使用します。
例:
obj = plane() convertToMesh obj max modify mode select obj subObjectLevel = 1 meshop.chamferVerts obj #{13} 3.5
![]()
meshop.cloneVerts <Mesh mesh> <vertlist>
指定された頂点のクローンを作成します。
meshop.detachVerts <Mesh mesh> <vertlist> delete:<boolean=true> asMesh:<boolean=false>
指定された頂点で使用される面をデタッチします。
delete:
が true
の場合、面はデタッチ後に削除されます。
delete:
が false
の場合、面は削除されません。
asMesh:
が true
の場合、面はデタッチされ、メッシュ値として返されます。
asMesh:
が false
の場合、面はメッシュの要素としてデタッチされ、OK
が返されます。
meshop.deleteIsoVerts <Mesh mesh>
面で使用されないすべての頂点を削除します。
meshop.deleteVerts <Mesh mesh> <vertlist>
指定された頂点を削除します。
meshop.getHiddenVerts <Mesh mesh>
非表示のすべての頂点に設定されているビットで、size=(mesh 内の #vertices)の BitArray を返します。
meshop.setHiddenVerts <Mesh mesh> <vertlist>
指定された頂点を非表示にして、指定されていない頂点を表示するように設定します。
例:
obj = plane() --create a plane convertToMesh obj --convert to Editable_Mesh --Hide half the vertices meshop.setHiddenVerts obj #{1..(obj.numverts/2)} update obj --update the mesh max modify mode --change to modify mode select obj --select the plane subObjectLevel = 1 --switch to vertex level to see the result
meshop.getIsoVerts <Mesh mesh>
面で使用されないすべての頂点に設定されているビットで、size=(mesh
内の #vertices)の BitArray を返します。
例:
obj = plane() --create a plane --> $Plane:Plane001 @ [0.000000,0.000000,0.000000] convertToMesh obj --collapse to Editable_Mesh --> $Editable_Mesh:Plane001 @ [0.000000,0.000000,0.000000] meshop.getIsoVerts obj --Get isolated vertices - none! --> #{} --Delete the 8 faces in the middle of the plane, --leaving the middle isolated vertex undeleted meshop.deleteFaces obj #{11..14,19..22} delIsoVerts:false --> OK update obj --update the mesh --> OK meshop.getIsoVerts obj --check the isolated vertices - #13! --> #{13}
meshop.minVertexDistanceFrom <Mesh mesh> <int vertIndex> <vertlist>
<vertIndex>
から <vertlist>
で指定された頂点までの最小距離を返します。
meshop.minVertexDistancesFrom <Mesh mesh> <vertlist> <int iterations>
この関数は、選択された頂点(<vertlist>
で指定された頂点)から選択されていない頂点までの距離をエッジ パスに沿って計算します。size=(mesh
内の #vertices)の配列を返します。選択がない場合、この配列の各要素は -1 に設定されます。選択がある場合、配列要素値は 0 に設定されます。選択されていない頂点が <iterations>
の場合、または選択された頂点から離れた少数のエッジの場合は、選択された頂点への最短のエッジ パス距離が割り当てられます。選択されていない頂点が <iterations>
エッジよりも離れている場合は、-1 に設定されます。<iterations>
が 0 の場合、トポロジに関係なく、各頂点から最も近くで選択されている頂点までの距離が計算されます。この計算は負荷が大きいアルゴリズムです。この計算では、処理する頂点の数が 2 倍になると 4 倍の時間がかかります。<iterations>
が 0 以外の場合、最も近くの選択頂点を見つけるために通過しなければならないエッジの数を表します。つまり、2 倍の頂点数を処理するのに 2 倍の時間で済みます。これは、[ソフト選択](Soft Selection)ダイアログ ボックスの[エッジの距離](Edge Distance)パラメータに似ています。
meshop.moveVert <Mesh mesh> <vertlist> {<point3 offset> | <point3 offset_array>} node:<node=unsupplied> useSoftSel:<boolean>
<offset>
で指定された頂点を移動します。
<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、オフセットは現在の座標系コンテキストにあります。
<mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、オフセットはメッシュのローカル座標系にあります。
3ds Max 2008 以降では、このメソッドに配列として位置を指定できるようになりました。この場合、pos_array の値の数が vertlist で指定された頂点の数と一致している必要があります。この機能は、従来、Avguard 機能拡張の一部でした。
useSoftSel:
が true であり、かつメッシュのソフト選択データ チャネルが存在する場合は、指定されたオフセットに頂点のソフト選択値が乗算されます。
<vertlist>
引数は、配列ではなく bitArray 値として渡す必要があります。引数を配列として渡すと、パフォーマンスに非常に重大な影響が発生します。
これは、サブオブジェクト リストを操作するすべてのメソッドに該当します。
meshop.moveVertsToPlane <Mesh mesh> <vertlist> <point3 normal> <float offset> node:<node=unsupplied>
指定された頂点を指定された平面に移動します。ターゲット平面とは、DotProd'd に N を使用する場合に、指定オフセットを返すすべてのポイントのことです。
すべての頂点は、法線ベクトル N に沿って移動されます。
<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、法線は現在の座標系コンテキストにあります。
<mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、法線はメッシュのローカル座標系にあります。
例:
obj = sphere()--create a sphere convertToMesh obj--convert to Editable_mesh normal = getNormal obj 10--get the normal of vertex 10 --move all vertices of the mesh to the plane defined by the normal --vector with an offset of 0.0 (don't offset): meshop.moveVertsToPlane obj #{1..obj.numverts} normal 0.0 update obj--update the mesh
![]()
meshop.makeVertsPlanar <Mesh mesh> <vertlist>
指定された頂点が平面になるように移動します。
meshop.weldVertsByThreshold <Mesh mesh> <vertlist> <float threshold>
しきい値距離内の指定された頂点を連結します。
meshop.weldVerts
meshOp.weldVertSet
に名前が変更されました。
meshop.weldVertSet <Mesh mesh> <vertlist> weldpoint:<point3=unsupplied> node:<node=unsupplied>
指定された頂点を連結します。
weldpoint:
が指定されている場合、結果として生じる頂点は指定されたポイントに位置付けされます。
weldpoint:
が指定されていない場合、結果として生じる頂点は、指定された頂点の平均位置に位置付けされます。
<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、位置は現在の座標系コンテキストにあります。
<mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、位置はメッシュのローカル座標系にあります。
meshop.getNumVelocity <Mesh mesh>
速度チャネル内の速度データを持つ頂点の数を取得します。この数は頂点の数と等しくなければなりません。
<point3_array>meshop.getVelocity <Mesh mesh> <vertlist>
vertlist
で指定された頂点の速度の配列を取得します。
メッシュに関連するメソッドについては、以下を参照してください。