MODO

MOP Booleans Panel Cuttersの使い方

MODOでプロシージャルモデリングによるブール演算を行うプラグインとして、MOP Booleans Kitが公開されていましたが、最近MOP Booleans Kitの拡張として、MOP Booleans Panel Cuttersが登場しました。

早速、MOP Booleans Panel Cuttersを使ってみたので、インストール方法や使い方、気づいた注意点などについて載せておきます。なお、基本的な操作の流れはMOP Booleans Kitと同じなので、MOP Booleans Kitの操作についても触れています。

MOP Booleans Panel Cuttersでできる事

MOP Booleans Panel Cuttersは全てプロシージャルモデリングによる非破壊系の演算が利用されているため、演算に利用したメッシュなどを後から自由に修正できます。この、プロシージャルモデリングによる演算を手軽に行える事が、MOP Booleansを使う主な目的になると思います。

MOP Booleans Panel Cuttersは、次のようなブール演算やメッシュのカットが行えます。(Union、Sub、IntersectはMOP Booleans Kitの時から使えた基本的なブール演算で、Panel、Union Panel、Wide Union PanelがMOP Booleans Panel Cuttersで追加された演算になります)

  • Union…和演算
  • Sub…差演算
  • Intersect…積演算
  • Panel…隣接している部分に隙間を作る
  • Union Panel…和演算+隣接している部分に隙間を作る
  • Wide Union Panel…Union Panelの動作+隙間までの間にスペースを作る

Panel系は説明文だけではイメージできないと思うので、実際にどのような結果になるか、以降で説明します。

MOP Booleans Panel Cuttersの動作環境

MOP Booleans Panel Cuttersを利用するためには、次の環境が必要になります。

MODOは大前提なので問題無いと思いますが、MOP Booleans Panel Cuttersは「MOP Booleans Kitの拡張キット」という位置づけなので、利用するためには「MOP Booleans Kit」が必須になります。

これらのプラグインは、いずれも上記のリンク先(Gumroadのサイト)から購入できます

MOP Booleans Panel Cuttersの導入方法

MOP Booleans Panel Cuttersは、Content\Kitsフォルダ配下に手動で導入します。
MODOを起動して、System> Open Content Folderを選択して、Contentフォルダを開いてください。Contentフォルダを開いたらMODOは終了してかまいません。

コンテンツフォルダを開く

MOP Booleans Panel Cuttersを購入すると「PP_MOP_Booleans_Panel_Cutters_ADD_v1.lxp」というファイルがダウンロードできるようになるので、このファイルをMOP Booleans KitのAssembliesフォルダ(Content\Kits\pp_MOP_Booleans\Assemblies)にコピーして、ファイル名を「PP_MOP_Booleans.lxp」に変更します。(元々入っていたファイルは適当な名前に変更してバックアップとして残しておきます)

これで、MOP Booleans Panel Cuttersの導入は完了です。

MOP Booleans Kitを導入していない場合は、先にContent\Kitsフォルダに、MOP Booleans Kitのzipファイルを展開してください。そうすると、以下のようなフォルダ構成になります。

またMOP Booleansが読み込むファイル名は「PP_MOP_Booleans.lxp」だけなので、これ以外のファイル(古いバックアップ)などは、適当に名前を変えておけば問題ありません。(MOP Booleans Kitに最初から入っている、PP_MOP_Booleans_v1.lxpも単なるバックアップで、実は全く利用されないファイルだったりします)

MOP Booleans Panel Cuttersのファイルをコピー

MOP Booleans Panel Cuttersの使い方

必須ではありませんが、MOP Booleansを使う場合は、ビュー上部の端にある「Make Inactive Same as Active Draw ~」にチェックを入れておくことをおすすめします。こうしておくと、ブール演算の結果を確認しやすくなります。

使いやすくするための準備

まずは、演算を行うメッシュを作成します。今回は、以下のように「白と赤のボックス」を重なるように作成しました。
この時点で、この2つのメッシュは「Mesh」フォルダに入った状態になっています。

普通にメッシュを作成

MOP Booleansの使用準備

MOP Booleansを使用するために、以下の手順でMOP Booleansの準備を行います。

ポリゴン選択モード(ショートカットキー=3)で演算元になるメッシュのポリゴンを1つ選択し、選択したポリゴンの上にマウスカーソルがある状態でCtrl+Shift+Xキーを押します。

そうすると、MOP Booleans KitのPieメニューが開くので、Create MOP Booleanを選択します。

ポリゴンを選択してCtrl+Shift+XでMOP Booleans Kitの準備

これで、MOP Booleansに必要な構成が自動で作成されます。(下図の枠で囲った部分)

おそらく、この構成を理解できるかどうかが、MOP Booleansを使いこなせるかどうかの鍵を握っていて、MOP Booleansを使う上での最大のハードルだったりします。逆に、この構造さえ分かってしまえば、MOP Booleansを簡単に利用できるようになります。

MOP Booleansの構造

操作を行う上で重要になるのは、下図の①と②の部分です。

演算に使用する各メッシュは、MOP_Drivers配下にあるいずれかのフォルダ(②の枠で囲ったフォルダ)に格納します。種類が多くて混乱しそうですが、実は簡単です。基本的には次の7種類に分類でき、同じ役割のフォルダには同じ色がつけられています。

  1. Base
  2. Union(AltUn、Alt2Unなども同じ)
  3. Sub(AltSub、Alt2Subなども同じ)
  4. Intersect(AltInter、Alt2Interなども同じ)
  5. Panel(AltPanも同じ)
  6. UnionPanel(AltUnPanも同じ)
  7. WideUnPan(AltWideUnPanも同じ)

②~⑦はMOP Booleansが対応している演算の種類と同じになっています。そして①のBaseは、演算の大元になるメッシュを格納するフォルダになります。
MOP Booleansの内部では、MOP_Drivers配下にあるフォルダの上から順番に、以下のような処理が行われています。

  • MOP_Baseに入っているメッシュ(処理の大元になるメッシュ)に対して
  • MOP_Unionに入っているメッシュで「和演算」を行い、
  • その結果に対して、MOP_Subに入っているメッシュで「差演算」を行い、
  • その結果に対して、MOP_Intersectに入っているメッシュで「積演算」を行い、
  • その結果に対して、MOP_Panelに入っているメッシュで「隙間を作成」し、
  • その結果に対して、MOP_AltUnに入っているメッシュで「和演算」を行い、
  • その結果に対して、MOP_AltSubに入っているメッシュで「差演算」を行い、
  • …(同じような感じで続く)…
  • その結果に対して、MOP_Alt4Interに入っているメッシュで「積演算」を行い、
  • 全ての結果はMOP_Buildに格納する。

実は、Ctrl+Shift+XでCreate MOP Booleanを選択する時に選択していた「白いボックスのメッシュ」は自動で「MOP_Base」フォルダに移動されています。(選択していなかった「赤いボックスのメッシュ」はMeshフォルダに残ったまま

MOP Booleansの構成

後は演算に利用したいメッシュを、行いたい演算の種類のフォルダ(MOP_Unionなど)に作成、もしくは移動すれば、MOP Booleans側で演算が行われ、結果がMOP_Buildに格納されます。

これが、MOP Booleansの基本的な仕組みと、使い方になります。

簡単な操作の流れ

MOP_Drivers配下の各フォルダ(MOP_Baseなど)は、MODOに最初から作成されているMeshフォルダと同じなので、フォルダを選んでメッシュの作成や編集、選択したメッシュをCtrl+Xで切り取って別のフォルダにCtrl+Vで移動させる…などの操作が可能です。

フォルダの文字の色を見れば、フォルダにメッシュが入っているかどうかがすぐに分かります。メッシュが入っているフォルダの文字は黒になり、メッシュが入っていない空フォルダは灰色の文字色になります。

名前にAltが付いているフォルダって何?…と思うかもしれませんが、このフォルダは同じ演算に利用するメッシュ同士が重なってしまうような場合に利用する、予備のフォルダです。(そのため、例えばMOP_Union、MOP_AltUn、MOP_Alt2Un、MOP_Alt3Un、MOP_Alt4Unで行われる演算に違いはありません

以降でAltを使う例も紹介していますが、同じ演算をしたいメッシュが重なってしまう場合は、メッシュ同士が重ならないように、どちらかのメッシュをAltのフォルダに移動します。Altを使っても重なる場合はAlt2、それでも重なる場合はAlt3、それでも重なる場合はAlt4…というような感じで使います。

Alt4まで使っても足らない…というケースは少ないと思いますが、もしそういうケースが出てきた場合は、対象のメッシュをもう少しパーツ単位に分解して、それぞれ別のPP_MOP_BoolBuildとして管理するようにすれば良いと思います。(1つのシーンの中に複数のPP_MOP_BoolBuildを作成する事が可能です)

MOP Booleans Panel Cuttersの演算結果

MOP Booleans Kitから存在する演算

Unionは和演算でメッシュ同士を合成します。
見た目だけでは演算前との違いが分かりづらいかもしれませんが、和演算を行ったメッシュ同士は結合されて1つの状態になっています。

Union

Subは差演算で、メッシュを切り取る(引き算)処理になります。
メッシュに穴を空けたり削ったり…と、使用頻度の高い演算になります。

Sub

Intersectは積演算で、メッシュが重なっている部分のみが残るような演算になります。

Intersect

MOP Booleans Panel Cuttersで追加された演算

Panelは、境界部分に隙間を入れる演算を行います。
なお、この隙間の幅や色はMOP Booleanの設定で後から自由に変更できます。

Panel

Union Panelは、和演算+Panelの隙間を入れる演算になります。
Unionとの違いとして、演算に使用したメッシュは、そのまま和演算されて残るようになります。

Union Panel

Wide Union Panelは、Union Panelの動作に似ていますが、演算に利用したメッシュと、隙間の間に余白が追加されます。
この余白の幅は、MOP Booleansの設定で後から自由に変更できます。

Wide Union Panel

MOP Booleans Panel Cuttersのパラメーター

MOP Booleans Panel Cuttersでは、隙間やスペースの幅、マテリアルの設定をパラメーターで指定可能です。これらのパラメーターは、アイテムツリーからMOP Buildを選択し、PropertiesのUser Channelsから設定できます。

Panel Gap Widthで、隙間の幅を指定できます。

幅の調整

Union Panel Widthは、Wide Union Panelのスペース部分の幅を指定します。
設定項目のラベル名は「Union Panel~」となっていますが「Union Panelを利用したときの隙間の幅では無く、Wide Union Panelのスペース領域の幅」になるので注意してください。

Union Panelの幅調整

Panel Gap Material、Panel Material 1~5では、隙間などのマテリアル名を設定可能です。ただし、利用する演算(Panel、Union Panel、Wide Union Panel)やAltなどとの組み合わせによって、同じ設定項目でも、実際に適用されるマテリアルの挙動が違ってきたので、この設定は実際に利用する時点で、結果を確認しながら値を設定するようにすれば良いと思います。

色の設定

MOP Booleans Panel Cuttersを使う上での注意点

同じ演算フォルダのメッシュを重ねない

これは、MOP Booleans Kitの時からある注意点なのですが、同じ演算フォルダ(例えば、MOP_Panelなど)内にあるメッシュ同士が重なると、重なった部分の演算が正しく行われません

演算するオブジェクトが重なると正しく動かない

このような場合は、同じフォルダで重なっている片方のメッシュを、Alt系の同じ役割を持ったフォルダに移動させます。(例えば、MOP_Panelフォルダ内でメッシュが重なるようであれば、片方をMOP_AltPanelに移動させる)

こうすれば、以下のように正しく計算されるようになります。

重なったオブジェクトをAltに移動

隙間の幅は設定値通りにはならない

MOP_Buildの設定で隙間の幅を指定できますが、実際に生成される隙間の幅は、設定値と一致するとは限りません。(少なくとも、MOP Booleans Panel Cutters v1では)

下のように、円柱や、ベベルを適用したメッシュの場合は隙間の幅が広く、ボックスの場合は幅が狭くなるようです。

溝の幅が図形によって異なる

隙間が直線にならない

これは仕様上仕方ないことだと思いますが、片方だけにベベルを適用したようなメッシュを利用すると、作成される隙間が直線になりません。(斜めになる)

この問題は、反対側にも同じベベルを適用することで回避できます

片方だけにベベルを適用すると斜めの線になる

MODOのパフォーマンスが悪くなった場合の対応

常にプロシージャルモデリングによる演算が行われているため、MOP_Drivers配下のフォルダでメッシュを操作した場合、演算に利用するポリゴンが多くなるほどMODOの反応速度が悪くなってきます。(演算するポリゴンが増えると、移動ツールでメッシュを移動させるだけでも大変なくらいにパフォーマンスが落ちます)

この場合、アイテムツリーで一時的に「MOP_Build」を非表示(MOP_Buildの左側にある目のアイコンをクリックして非表示)にすれば、快適に操作できるようになります。演算結果を確認したくなったときは、再度「MOP_Build」を表示するようにしてください。

V-Ray for MODOのレンダリング結果が崩れる

これも、MOP Booleans Kitの時からの内容になりますが、V-Ray for MODOでレンダリングすると、以下のように正しくレンダリングされない事象が発生します。

V-Rayでレンダリング結果が崩れる場合

V-Rayでレンダリングする場合は、レンダリング前にMOP_Driversを非表示(アイテムツリーで目のアイコンをクリックして非表示)にすれば、V-Rayでも正しくレンダリングできるようになります。

MOP_Driverを非表示にすればV-Rayでも正しくレンダリングできる

ちなみに、V-Ray for MODOのGPUを使ったV-Ray RTも問題無く動作します。

GPUを使ったV-Ray RTの動作も問題なし

MOP Booleans Panel Cuttersを使ったサンプル

MOP Booleans Panel Cuttersを使って、簡単にモデリングしてみました。
このモデルのワイヤフレームは上のキャプチャ画面にも少し載っていますが、基本的なプリミティブにベベルを適用して組み合わせただけの簡単な物です。

MOP Booleans Panel Cuttersを使えば、こんなモデルも20~30分程度で簡単に作れてしまいます。(マテリアルは適当です)
しかも、後から簡単に修正できるので、すごく便利です。

MODOによるレンダリング結果

MODOのレンダリング結果

V-Ray for MODOによるレンダリング結果。
MODOのプロシージャルテクスチャを含んだマテリアルを使っているので、MODOとV-Rayのレンダリング結果が同じになることはありません。(MODOのプロシージャルテクスチャは、V-Rayでは正しく認識できないため)

V-Rayのレンダリング結果