Meshop 頂点メソッド

 

   

編集可能メッシュ - クイック ナビゲーション

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: が指定されていない場合、戻り値はメッシュのローカル座標系にあります。

   

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:<bool>

<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: が指定されていない場合、位置はメッシュのローカル座標系にあります。

   

メッシュに関連するメソッドについては、以下を参照してください。

編集可能メッシュ - トピック インデックス

Editable_Mesh : GeometryClass および TriMesh : 値

関連事項