MaxScriptTip: skinOpsをUndoに記録する

2月 07, 2016
MaxScriptを使っていると、たまにUndoに記録されないコマンドがある事に気づくと思います。
例えばタイトルにあるようにskinOps。(3dsMax2014及び2015で確認)

某所ではskinOpsはAutodeskがインターンに作らせた欠陥コマンドなんて言われてたりしますが(実際問題多い)、今回はそのコマンドをUndoに記録する方法について紹介します。

結論から言うとUndoに記録されるコマンドと一緒に使って、undo on ()で括ってしまえば記録されるようになります。

undo "SetWeight" on
(
    theSkin = $.modifiers[#skin]
    skinOps.ReplaceVertexWeights theSkin 1 #(1) #(1.0)
)
記録されない。

undo "SetWeight" on 
(
    theSkin = $.modifiers[#skin]
    skinOps.bakeSelectedVerts theSkin  -- Undo記録用
    skinOps.ReplaceVertexWeights theSkin 1 #(1) #(1.0)
)
記録される。

う~ん、この欠陥っぷり・・・。

ちなみに今回はUndo記録用にbakeSelectedVertsを使っていますが、これはUndoに記録されるskinOps内のコマンドで最も高速に動作するからだそうです。

今回はbakeSelectedVertsを使いましたが、他にUndoに記録されるコマンドを既に使っているのであれば、わざわざ使う必要はありません。

自分もこの問題でかなり悩まされたので、誰かの参考になればいいなと。


Related Articles