リプリケータによる複製を固定するには
https://www.youtube.com/watch?v=Btb2mtxuhLI
今回はリプリケータによる複製を固定する方法をご紹介します。
リプリケータを使うと、メッシュの表面に複製を行う場合など、非常に簡単に処理を行うことができますが、そのメッシュの表面が変化する場合などに複製したリプリケータが定まらない場合があります。例えば、このサンプルシーンには球体に対してソリッドドリルを使用して表面にハートの形状のくりぬきマテリアルを作っています。プロシージャルモデリングでソリッドドリルを行っていますので、ハートの形状を動かすことで、表面のハートも動いていきます。ここで表面のハート部分、そしてそれ以外の部分に対してそれぞれSurface Particle Generatorを作成し、パーティクルを発生させ、リプリケータを使って異なるメッシュを複製してみます。この状態で、ハートの形状を動かしてみると、メッシュ表面のハートの位置が動くにつれ、リプリケータによる複製も変化しますが、パーティクルの発生個所が変動するため、複製箇所がずれてしまい、複製箇所が一定に保たれません。アニメーションを設定する場合など、このパーティクルの発生個所がぶれてしまうのは好ましくない場合もあるかと思いますので、これがぶれない方法をご紹介します。
複製がぶれてしまう原因というのは、Surface Particle Generatorが形状の変化によってその発生が変化してしまうことにあるので、Surface Particle Generatorで発生したパーティクルを固定させる必要があります。そのままでは固定させるのが難しいので、いったん球体全体にSurface Particle Generatorで発生させたパーティクルに対して、非常に小さな面積を持つポリゴンを複製し、それをフリーズしてみることにします。まずは球体全体にパーティクルを発生させるためのSurface Particle Generatorを追加し、複製元となる微小なサイズの板ポリゴンを作ったら、リプリケータでそれらを複製します。なぜこれを板ポリゴンで複製するのかというと、これから先、フリーズしたパーティクルソースをハートの部分とそれ以外とで分けるためにソリッドドリルを使っていきますが、このソリッドドリルは実体を持つジオメトリに対して動作するものですので、単なるパーティクルではなく、ポリゴンを持つジオメトリが必要となります。
リプリケータで板ポリゴンを複製したら、これをいったんフリーズしましょう。アイテムリストからリプリケータを選択し、右クリックでコンテキストメニューからリプリケータ > リプリケータのフリーズを実行してフリーズさせても良いのですが、後からやり直したいといった場合を考え、できるだけプロシージャルに処理できるようにしておきます。ショートカットキーNで空のメッシュレイヤーを作成し、オペレーションリストのオペレータ追加 > 編集 > Merge Meshesを追加し、オペレーションリストからMerge Meshesを展開して、ソース > (ソースを追加)から作成しておいたリプリケータを選択します。これでリプリケータがメッシュとして構成されるようになりました。
これをフリーズしたいので、アイテムリストから右クリックでメッシュオペレーションをフリーズ > 複製とフリーズを実行します。そうすると、リプリケータを読み込んだメッシュはそのままでフリーズした状態のメッシュレイヤーが新たに作成されます。これに対して、ソリッドドリルを用いてハート部分だけのパーティクルを取り出します。オペレーションリストのオペレータ追加 > 編集 > Solid Drillを追加します。駆動サーフェイスにハートの形状を、操作をコアにしておくと、ハートの形状部分だけが残るようになります。あとはこれを使ってリプリケータを作成します。ただしこのとき重要なのが、リプリケータのソースモードがデフォルトではサーフェイスに整列になっていますが、これをポリゴンを使用に変更することです。現在、微小なサイズの板ポリゴンがポイントソースとなっていますが、ソースモードをポリゴンを使用に設定することで、この各板ポリゴンの中心に一つ、複製されることになります。同様に、ハート以外の表面に対してもリプリケータを作成してみます。この状態でハートのメッシュを選択し、ハートの位置を動かしてみると、リプリケータで複製されているメッシュの位置は動くことなく、ハートの位置に従ってその複製が変化するようになります。
このようにSurface Particle Generatorをフリーズすることで、形状の変化による発生するパーティクルの揺らぎというのを抑えることができるようになります。