SimpleMeshMod プラグインは、取り込みメッシュのトポロジを変更し、修正結果を出力できるジオメトリ モディファイヤです。3ds Max 2016 以降で使用可能です。
類似したモディファイヤの例として、ミラーおよびシンメトリがあります。
これらの種類のモディファイヤには modifyMesh
ハンドラが必要になります。内部の mesh
値には、モディファイヤの TriMesh が含まれています。取り込み TriMesh 値に設定されているため、修正結果を生成するために新しい TriMesh 値に設定できます。
内部の owningNode
値には、モディファイヤを適用するノードが含まれています。モディファイヤが複数のノードに渡ってインスタンス化されている場合は、それらの 1 つのみにアクセスできます。
SimpleMeshMod プラグインは、スクリプト化された Geometry プラグインと同様に動作しますが、新しい Geometry オブジェクトを作成する代わりに、モディファイヤ スタック から取り込む TriMesh 上で動作します。
スクリプト化された単純なメッシュ モディファイヤ プラグインを宣言するには、<superclass>
を simpleMeshMod
として指定します。
スクリプト
plugin simpleMeshMod TestCloneModifier
name:"TestCloneMod"
classID:#(0x3a4087e9, 0x2c2fdff7)
category:"MXS Help"
(
parameters main rollout:params
(
nCopies ui:spn_nCopies default:2 type:#integer animatable:true
X_Offset ui:spn_X_Offset default:10 type:#float animatable:true
Y_Offset ui:spn_Y_Offset default:10 type:#float animatable:true
Z_Offset ui:spn_Z_Offset default:10 type:#float animatable:true
)
rollout params "Parameters"
(
spinner spn_nCopies "# Copies:" range:[1, 1000, 1] type:#integer
spinner spn_X_Offset "X Offset:" range:[-1000, 1000, 1] type:#float
spinner spn_Y_Offset "Y Offset:" range:[-1000, 1000, 1] type:#float
spinner spn_Z_Offset "Z Offset:" range:[-1000, 1000, 1] type:#float
)
on modifyMesh do
(
local workingMesh = copy mesh --make a copy of the incoming mesh
local offsetValue = [X_Offset,Y_Offset,Z_Offset]
-- First copy is the incoming mesh. We attach additional transformed meshes to that.
for n = 2 to nCopies do --repeat N-1 times
(
meshop.moveVert workingMesh #all offsetValue -- repeatedly move the copy
meshop.attach mesh workingMesh --accummulate the moved mesh into the output mesh
)
free workingMesh -- Free data associated with mesh. Reduces memory consumption
)
)
上の例では、単純な線形クローン モディファイヤを実装します。これには、作成するコピーの数と 3 軸それぞれに沿ったオフセットの 4 つのパラメータが含まれます。
on modifyMesh do
ハンドラは、モディファイヤ出力を更新する必要がある場合に呼び出されます。内部 mesh
値は、スタックから取り込む TriMesh に設定されます。スクリプトはこの TriMesh のローカル コピーを作成します。次に、N-1 回ループしてコピーされた TriMesh をコピーし、コピー数から 1 を引いた数で乗算されたオフセット値に応じて、すべての頂点を移動します。最後に、取り込みメッシュの結果として生じるオフセット コピーは、内部メッシュ値に追加されます。ハンドラの最後では、元の TriMesh と 1 つにまとめられたすべてのコピーがメッシュ値に含まれます。
modifyMesh
ハンドラでアクセスできる定義済みのローカルがあります。
transform
: 所有ノードのトランスフォーム(owningNode
パラメータ)inverseTransform
: 変換の反転 boundingBox
: モディファイヤ コンテキストのバウンディング ボックス さらに、simpleMod プラグイン タイプは、親クラスから継承された次のローカルを公開します。
extent
min
max
center
this
version
loading
delegate
(simpleMeshMod の場合は常に undefined
)