3DCG初心者がHoudiniでCGを始めて。＋簡単に作れる紙タバコのタイムラプス

はじめまして、まつりといいます。本名です。
タイトルの通り、**ほとんど3DCGを触ってこなかった僕がHoudiniの学習を始めてみた話**とHoudiniらしい機能で基本的なノードだけでできる**紙タバコのタイムラプスアニメーション**について書きます。

##Houdiniを始めた理由
僕がHoudiniをさわり始めたきっかけは超単純で、**なんか、かっこいい**と思ったからです。
漠然と3DCGやってみたいな～と思っていた僕は、ツールのレビューサイトに書かれていた「**粒子や流体、破壊の表現に強い**」の一言に完全につられました。そんなミーハー？な僕がHoudiniを初めて続けられている理由の一部を紹介したいと思います。

##学習の導入～継続
僕がHoudiniを初めてたばかりのとき、なぜHoudiniを触り続けられたのか。その理由について。

・**無期限の体験版がある。**
Houdiniは開発元であるSideFX社が学習を始める人向けにApprentice版を出していて、無料でほぼすべての機能を使うことができます。これがHoudiniを学習する決め手になり、継続しやすさにもつながりました。

・**公式がチュートリアルをまとめてくれている。** - https://www.sidefx.com/tutorials/
自分で一から調べるとなるとなかなか労力を使いますが、SideFX社が公式ページに様々なチュートリアル動画をまとめてくれています。これを片っ端からやるだけでも知識を横断的に得られます。そのままでは作品にはなりませんが、とりあえず形ができるのでモチベーションの維持ができるものもあります。

・**公式ヘルプがわかりやすい。** - https://www.sidefx.com/docs/houdini/ 日本語版 https://www.sidefx.com/ja/docs/houdini16.5/
何事においても、軽く躓いたときに手を伸ばせる距離に助けがあると継続がしやすいと思います。
Houdiniはノードベースという特性上、1つのノード単位でヘルプページが分かれているので非常に参照しやすいです。
関連ノードへのリンクや、Exampleファイルのプレビューもあり親切です。

・**大量にウィンドウを開かなくていい**
Houdiniをある程度学習したとき、ほかの3DCG統合ツールも触ってみました。その時に思ったのが「機能のオプションいじるのに、いちいちウィンドウ開くのが面倒！」
Houdiniはノードベースなのでノードを選択するだけで機能のオプションがすぐに参照できます。Adobe Illustratorのアピアランスパネルみたいで超イイ！！
たぶん自分はHoudini以外の3DCGツールだと、何かの機能を使うたびにその操作が煩わしく思ってしまいます・・・。

・**アトリビュート（属性）とグループの操作が容易で柔軟**
はじめ、「アトリビュートって何・・・。」レベルだった時にはよくわかっていませんでしたが、少し学習するとアトリビュート操作の柔軟性がHoudiniの強味の1つだなと気が付きました。ほかのソフトもある程度触ってみたのですが、この辺の柔軟性・自由度ともにHoudiniが秀でている気がします。
（ アトリビュート とは、頂点、ポイント、プリミティブ、オブジェクト上に記録される名前を付けた値のことです。引用： http://www.sidefx.com/ja/docs/houdini/model/attributes.html ）

ほかにも
・**知見の共有が盛ん** - 人口がほかの3DCG統合ツールに比べると少ないからか、SNSやフォーラムなどでの意見交換が盛んです。敷居が高い感じもなく、初心者でも気軽に混ざることができる雰囲気です。
・**日本語の新しい情報がたくさんある** - 最近は書籍やサイトでHoudiniを日本語で取り扱った文献がたくさんあります。調べればすぐに出てくるのでとてもありがたい。

主にこの辺りが、3DCG初心者である僕がHoudiniを触り続けた理由です。とにかく、公式が優しいです。

「ノードベースは難しい、苦手。」という声を結構聞きますが、おそらくそれはほかのツールを触れてからノードに触れた人の感覚の相違から来る意見だと自分は感じています。初めて3DCGをやる人にはパッとわかりやすい部分だけでなく、3DCGがどうできているか、なにをしたから結果としてこの画が出たのかを感じながら学習を始めてほしいので自分は初めての3DCGにはHoudiniを勧めたいです！

僕がHoudiniの学習を始めてみた話はここでおしまいです。
ここからは初心者でもできる！紙タバコのタイムラプスアニメーションを紹介したいと思います。

##紙タバコの燃焼
友人に作れる？と言われたのでつくってみた。
最終結果はこんな感じ↓
![8oeqp-pszlu.gif](https://qiita-image-store.s3.amazonaws.com/0/318638/72e6646b-59b5-17fb-e0da-4697f4c42e10.gif)
少し詰めが甘い感じはありますが、割とリアル？

まず全体のネットワークです。左のラインは外側の紙。右のラインは内部の草を作っています。今回は外側の紙について書きます。
![313a7a6cf85945510a3d13bf8ae68046.png](https://qiita-image-store.s3.amazonaws.com/0/318638/78151bdb-6212-3d30-a50a-573f13c166e6.png)
複雑なことはしていません。
今回の場合は特にそうですが、ノードベースのいいところはパッと見て何をやっているのか、わかるところですね。

まず、紙タバコのベースになるTubeにScatter SOPでPointをばらまきます。
そのPointにSolver SOPを使って簡単な浸食アニメーションを作ります。この浸食を使って燃焼を表現します。
![eda9605fe47eedb8817eb76fd08b64a6.png](https://qiita-image-store.s3.amazonaws.com/0/318638/0643dcb0-708c-3767-a099-b08460b8e4a8.png)

![57iya-lcngg.gif](https://qiita-image-store.s3.amazonaws.com/0/318638/c2299574-7b63-14b0-cfa9-4d3d2e3eab0c.gif)
（ 参考：https://vimeo.com/188004434 , http://www.sidefx.com/docs/houdini/vex/functions/onoise.html )

できた浸食アニメーションをAttribute Transfer SOPでTubeのポリゴンに移植します。
![n0pqf-ipxh9.gif](https://qiita-image-store.s3.amazonaws.com/0/318638/a5934525-7a36-0702-0edc-74047f544cd0.gif)

移植してきたCdとTubeの持っている法線を使ってポリゴンを凹ませたりします。

```ruby:point
if(@Cd.x > 0){
    @P -= @N*0.00045*@Cd.x;
    @P.z -= @Cd.x*@Frame*0.000004;
    @group_burned = 1;
}
```

![keiz4-9gs48.gif](https://qiita-image-store.s3.amazonaws.com/0/318638/e9173fb8-ea8c-12a1-a029-8790d02e67c1.gif)

そこにMountainなりVOPなりを使ってNoiseをかけてあげて、それっぽくしてあげます。
![cfbd9ab5186329c03a7df24f44e03830.png](https://qiita-image-store.s3.amazonaws.com/0/318638/b5d74593-76a7-1ed5-4688-7436378d50d5.png)

最後に浸食アニメーションでできたCdのアトリビュートを利用してランプパラメーターを作り、燃焼中のグラデーションを作ってあげます。

```ruby:point
float tempc = @Cd.x;
@Cd = set(1-tempc,1-tempc,1-tempc);

@Cd = chramp("ramp",@Cd.x);
```

![4cee83972e6dd5f92913f66a6d192498.png](https://qiita-image-store.s3.amazonaws.com/0/318638/a04c29dd-28bd-c40a-5adc-1d3d3c9f954a.png)
![bcq1n-lvwcs.gif](https://qiita-image-store.s3.amazonaws.com/0/318638/17801858-99b0-46f2-e173-76ba8dcf46fe.gif)
できた！

今回はHoudiniを始めたばかり、もしくはHoudiniをこれから始める人でも理解できるように「Houdiniらしい基本技術とシンプルな代入のVEXだけでできるけど、クオリティもいい感じ」を目指して作ってみました。
参考になればうれしいです。


##最後に
僕は初めてまともに触った3DCGのツールがHoudiniだったおかげで、最初から「3DCGがどうできているか」を意識しながら学習できたと思います。これから来そうなCG業界のノードベース・プロシージャルな考え方の波に乗るためにもまだHoudiniを始めていない人は始めてみてはいかがでしょうか。