MODOでプロシージャルモデリングによるブール演算を行うプラグインとして、MOP Booleans Kitが公開されていましたが、最近MOP Booleans Kitの拡張として、MOP Booleans Panel Cuttersが登場しました。
早速、MOP Booleans Panel Cuttersを使ってみたので、インストール方法や使い方、気づいた注意点などについて載せておきます。なお、基本的な操作の流れはMOP Booleans Kitと同じなので、MOP Booleans Kitの操作についても触れています。
Contents
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 11、12
- MOP Booleans Kit($50.0)
- MOP Booleans Panel Cutters($8.0)
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を使う場合は、ビュー上部の端にある「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を選択します。

これで、MOP Booleansに必要な構成が自動で作成されます。(下図の枠で囲った部分)
おそらく、この構成を理解できるかどうかが、MOP Booleansを使いこなせるかどうかの鍵を握っていて、MOP Booleansを使う上での最大のハードルだったりします。逆に、この構造さえ分かってしまえば、MOP Booleansを簡単に利用できるようになります。
MOP Booleansの構造
操作を行う上で重要になるのは、下図の①と②の部分です。
演算に使用する各メッシュは、MOP_Drivers配下にあるいずれかのフォルダ(②の枠で囲ったフォルダ)に格納します。種類が多くて混乱しそうですが、実は簡単です。基本的には次の7種類に分類でき、同じ役割のフォルダには同じ色がつけられています。
- Base
- Union(AltUn、Alt2Unなども同じ)
- Sub(AltSub、Alt2Subなども同じ)
- Intersect(AltInter、Alt2Interなども同じ)
- Panel(AltPanも同じ)
- UnionPanel(AltUnPanも同じ)
- 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_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つの状態になっています。

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

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

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

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

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

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のスペース領域の幅」になるので注意してください。

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に移動させる)
こうすれば、以下のように正しく計算されるようになります。

隙間の幅は設定値通りにはならない
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でレンダリングする場合は、レンダリング前にMOP_Driversを非表示(アイテムツリーで目のアイコンをクリックして非表示)にすれば、V-Rayでも正しくレンダリングできるようになります。

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

MOP Booleans Panel Cuttersを使ったサンプル
MOP Booleans Panel Cuttersを使って、簡単にモデリングしてみました。
このモデルのワイヤフレームは上のキャプチャ画面にも少し載っていますが、基本的なプリミティブにベベルを適用して組み合わせただけの簡単な物です。
MOP Booleans Panel Cuttersを使えば、こんなモデルも20~30分程度で簡単に作れてしまいます。(マテリアルは適当です)
しかも、後から簡単に修正できるので、すごく便利です。
MODOによるレンダリング結果

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