Houdiniの音に合わせた演出をAeで作ろう
#Houdini #tips
Houdiniのビューポートでは確認が難しく、また制御もグラフによって行うため、音に合わせたライティングの制御がとても難しい別口で、CHOPを使った音の波形を使った制御の方法もあるが、やはり、ライトの強さ、色、露出を一気にプレビューしながら制御したいときがある。AOVをライトごとに出すなどの方法もあるにはあるが、これは煩雑になること、ライトを複数使う大規模なシーンでは制御量が膨大になること、絵のイメージを持ちにくいこと等の理由からあまり採用したくない。
インタラクティブでないビューポート内で音に合わせた演出を繰り返す場合にはキーフレームを打つのが煩わしくなることもある。
以上のような理由でタイミングを正確に合わせながらも、インタラクティブな制御を行う方法を模索していた。
結果、Aeで各制御ようのパラメーターを準備して、そのシーケンスを参照する方法が一番視覚的に判りやすく且つインタラクティブな制御ができるのではないか...?となった
https://www.youtube.com/watch?v=DSgxi06vZI0&t=913s
この動画の一部で紹介されていた方法をより使いやすく発展させたものになっている。
・やり方
https://scrapbox.io/files/6834340893ecf3dc266fe6df.png
Ae内でパラメーターの数を十分に満たすだけの大きさのコンポジションを作り、1ピクセルごとにシェイプを配置していく。
このときシェイプレイヤーの色にはルックトランスフォームがかからないようにしておく。ルックトランスフォームがかかっているときだと、正確なパラメーターの変化をさせにくい。
シェイプレイヤーのアンチエイリアスをオフにしておかないと、上手く色を作り出せないので注意。
書き出しの際もexrシーケンス、ルックトランスフォームをリニアの状態で書き出す。
また、Aeの書き出しではデフォルトだとアンチエイリアスがオンになってしまう設定なので、書き出しの設定の中の「最良設定」を「現在の設定」に変えておく。これで、小さなピクセルのシーケンスでもピクセルがつぶれずに制御ができる。
https://scrapbox.io/files/683437140fe9e32dd9b230df.png
HoudiniのCopernicusで読み込む。attribute VOPでtextureとして読み込むとき、time dependentなシーケンスとして読み込んでくれないので、Copernicusを噛ませる。(この際タイムコードとの同期をしっかりと確認しておく)
ColorSpaceはOCIOに(パラメーターとして使うためにリニアで読みたい)
uv展開したgridを配置、この際rowとcolはシーケンスの大きさと同じにしておく。
https://scrapbox.io/files/6834378924482edfe0829bc5.png
attributeVOP内で先のCopernicusをOP参照し、color spaceをリニア、filter typeをVEX:pointに、Cdとしてgridに渡す。
これはpoint attributeになっているのでpromoteしてあげると
https://scrapbox.io/files/6834381a7e73a59c7a9a59e6.png
こういうグリッドがつくれる。
primitive attributeとして各プリミティブにパラメーターの値が保存されている形だ。
そして、必要なプリミティブのみをsplitし
https://scrapbox.io/files/683439149b270d22418e4af3.png
各セクションごとに名前を付けてあげる。(参照を楽にするため)
これによってAeで作ったシーケンスを参照したパラメーターの制御が可能だ。
______________________________________________________________________________________________________________________________
https://scrapbox.io/files/6834394caaa7f4ff68f83397.png
obj/コンテキストのlightからパラメーターで参照してみる。
prim("../グリッドがあるジオメトリ/splitしたSOP/",制御される元のパラメーターを持ったprimnum,"Cd",0(0~2のどれかrgbに対応するもの))で参照
https://scrapbox.io/files/68343a4239712fe636a09a3b.png
正確に読めていれば完成!