チュートリアル / 宋さんの3ds Max キッチンスタジアム
第21回:Max Creation Graphを使おう!(その4)
- 3ds Max
- Max Creation Graph
- コラム
- チュートリアル
MCGモディファイヤを作ろう
なんだかんだで、4回目ですね、
さー、具体的なカスタムツールをいろいろ作っていきましょう!
前々回まではジオメトリ作成ツール(ツールと言えるほどのものではないでが・・)を作りましたが、同じ様なノードの組み方でモディファイヤツールを作ります。
ではMCGエディタを開きましょう。
まずは[output:XXX]から[output: modifier]を選択し、エディタ上に配置します。


さて、どういったモディファイヤを作りましょうかね?最初ですから簡単なものから始めましょう。
先ずは、シンプルなポリゴンリダクション機能を作りましょう。
簡単にポリゴンを削減させるためには、「となり合わさる頂点をくっ付けていけばいいじゃないか!」と、なんとまあ~単純というか脳タリンのツールです(笑)
頂点どうしをくっ付けるのですから、編集可能ポリゴンのコマンドある[連結(Weld]を使えばいいですね、
じゃあ、ノードを探してみましょう!検索で「weld」と入力してみると、ありました!ありました![WeldMesh]!
さっそくエディタ上に配置します。


配置したら、さっそく[output: modifier]と接続です。
さあ、ここからが未体験ゾーンですね(笑)
[WeldMesh]ノードの入力ソケットをよく見てみると、「threshold (Single)」と「Mesh (TriMesh)」とあります。
上段の「threshold (Single)」には頂点どうしのスレッショルド(しきい値)をパラメータで制御させます。なので、以前も使った[Parameter: Signle]を接続しましょう。

さて問題は、下段にある[mesh (TriMesh)]です。ううーん、ここには何をつなげばいいんでしょうか?
基本的にMCGの様なノードエディターはデータの流れを接続して新しい処理を行わせるのが目的ですよね。モディファイヤツールに持ち込むデータって一体何でしょう?
答えは下図です。

そう、モディファイヤスタック!つまり各モディファイヤの下にあるメッシュデータです。[output: modifier]は次のモディファイヤへデータを受け渡すもの ということです。
なので、モディファイヤに関するメッシュデータに関するノードを探してみましょう。
検索で「modifier」と入力してみると

またまた、ズバリ [Modifier: TriMesh]というノードがあります。ではこのノードをエディターに配置して接続してみます。こんな感じです。

さて、一応これでツールはひとまず完成です。
ではmaxtoolsファイルを保存して、評価を実行してみましょう。Maxtoolsの保存名は「Area_weld」にしてくださいね。
簡単な球体を作成して、このモディファイヤを割り当ててみましょう。


[threshold]パラメータを変化させると、しきい値内の頂点が連結していくのがわかりますね。
では、次に この連結効果をツール内でオン/オフさせるトグルをこのモディファイヤの中に組み込んでみたいと思います。
機能の挙動としては「もしチェックが入った場合は、頂点の連結機能が働くようにしてください。そしてチェックが切れた場合にはモディファイヤのデータはそのままスルーして次のモディファイヤに行ってください。」という内容です。重要なのはこの内容分の「もし」です。いわゆるプログラムの世界では当たり前の「IF」という言葉がキーワードになります。検索で「if」を入力してみましょう。

ははは!ありましたね! ではこの[If]ノードをエディタに配置します。Ifオペレータの各スロットの意味は下図のような感じです。

[condition]スロットにはオンオフのパラメータを接続します。ちゃんと「Boolean」と書かれてますね。
その下のtrue(any)とfalse(any)にはそれぞれスイッチがオンだった場合の状態とそうでないかった場合の状態のデータを接続します。右側のvalue(any)に関しては、[output: Modifier]につなげるといった感じですね。
でこういった状態になるわけです。

[condition (Boolean)]スロットには、[Parameter: Boolean]を接続し、表記を「Weld」にしておきましょう。オンだった場合、すなわち[true (any)]には頂点が連結した状態を接続。[felse (any)]には[Modifier: TriMesh]からのデータの何も加工せずに接続します。つまりデータはそのまま通り過ぎていく~ といった状態です。
ちょっと複雑になってきましたね、ではこの状態で上書き保存して評価してみましょう。


どうですか?「Weld」のチェックを入れたときに動作がオンになり、チェックを外すと効果がなくなりますね、
このモディファイヤの構造は様々な場面で利用できると思いますので、是非自分のものにしてください。
今回はこのへんでお終いです。
次回は、MCGを使ってコンストレイントの効果をモディファイヤで再現する方法にトライしてみましょう。
ではでは、