山里ぽん太Zigsaw Puzzle14 April 2019 |
山里ぽん太はジグソーパズルを組み立てました。 |
![]() ![]() |
Chapter 1 ジグソーパズル |
というわけで、僕はジグソーパズルが好きです。 ときどき組み上げて、家の中やなんかに飾っています。 というわけで、Houdini でジグソーパズルを作ってみようと思いました。 マジっすか?。 Houdini に AI 機能なんて搭載されていましたっけ?。 Crowds のシミュレーションは、なんとなく AI って感じですけど。 でも、Crowds をジグソーパズルに応用できるのでしょうか?。 大丈夫です!。 Houdini は魔術師です!。 不可能はありません!(おおー)。 だがしかし、ぽん太さんは凡人です。 無理です(笑)。 |
Chapter 2 アニメーション |
というわけで、ジグソーパズルの解法を Houdini の AI で計算するのではなくて、単純なアニメーションにします。 絵は、テキトーな絵を使います。 毎度おなじみのこの絵です(笑)。 ![]() |
Chapter 3 ピースを作る |
というわけで、ジグソーパズルのピースを作ります。 都合、4種類作ればいいはずです。 ほんとうでしょうか?。 ジグソーパズルのピースの形は、いろいろあって、しかも、同じ形のピースはありません。 実は、大きな板を、ジグソーの切れ目みたいに切り抜く方法がないかと、少し考えました。 たぶん、方法はあると思います。 でも、難しくなりすぎるので、今回はパスします(笑)。 というわけで、次の4種類のピースを用意しました。 ![]() ![]() ![]() ![]() |
Chapter 4 とりあえず組み上げる |
というわけで、とりあえず、ジグソーパズルを組み上げてみました。 こんな感じです。 最初は、ダイナミクスを適用することだけを考えて、transform と merge で作っていましたが、途中でやめて(笑)、Copy to Points で作り直しました。 ![]() ネットワークはこんなことになっています。 ![]() |
Chapter 5 絵を投影する |
というわけで、組み上げたジグソーパズルに、絵を投影してみました。 絵を投影する方法にもいろいろありますが、とりあえず、2通り試しました。 まずは、uv quick shade です。 こんなんなりました。 ![]() 次は、uv texture と attrib from map を使って、色データをアトリビュートに格納する方法です。 こんなんなりました。 色味が違います。 ![]() |
Chapter 6 壊す |
というわけで、組み上がったジグソーパズルを壊しましょう(え)。 もう壊すんですか?(悲)。 いいんです。 Houdini は魔術師です!。 元に戻すことなんて簡単にできます!(おおっ)。 壊すことはさらにずっと簡単です(笑)。 シェルフツールで、組み上がったジグソーパズルに RBD を適用して、テーブルに static object を適用すればいいのです。 というわけで、壊れてゆく途中の1枚は、こんなんです。 ![]() ところで、RBD を適用すると、uv quick shade で投影した絵は、消えてしまいます。 なので、ここでは、 attrib from map を使っています。 |
Chapter 7 組み上げる |
というわけで、ジグソーパズルを組み上げるアニメーションを作りましょう。 ここは、ポイントの操作なので、attribute wrangle をつないで、VEX でちょちょいのちょい、です(笑)。 もちろん、ベクトルフィールドや、フォースを使ってもできます。 こちらは、uv quick shade を使っています。 もちろん、uv quick shade のほうは、attrib from map よりもずっと負荷は軽いです。 というわけで、組み上げている途中の1枚は、こんなんです。 ![]() |
Chapter 8 レンダリングする |
というわけで、レンダリングして動画にしてみました。 ジグソーパズルが組み上がって、壊れる、という動画です。 組み上がるところと、壊れるところの色味が違っています(笑)。 |
Chapter 9 メモ |
① uv quick shade で絵を投影したデータは、RBD のダイナミクスの中では保持されないのか、表示されなくなってしまいます。やむなく attrib from map を使いましたが、絵の解像度を上げるためには、ピースのジオメトリを細かくしなければならず、負荷が重くて困りました。ジオメトリを細かくしたあとで RBD を適用しようとして、Houdini があちらの世界へ行ってしまったので、ジオメトリが粗いままで RBD を適用して、そのあとで、ジオメトリを細かくしたところ、なんとか処理してくれました。 ② 今回のレンダリングでは、light を配置していません。 ③ uv quick shade 、attrib from map のいずれも、ジオメトリの両面に投影されます。今回は、裏面の投影を隠す等の処理はしていません。 |