2019年1月28日月曜日

Houdiniのメリット・デメリット

毎年ワークショップ1週目に力説しているところなんですが、他のことに時間を使いたいのでまとめてみました。

2025年3月アップデート。

メリット

・ソフトウェア設計・UIの一貫性
何を作るにしても似た方法で行えます。スキルの応用が容易で、新機能への対応も素早く行える。記憶に頼らずに済みます。

・ファイル内容・作業工程の可読性の高さ、パラメーターの変更箇所など明確。
・データの透明性、どんなデータがどこに入っているか明確、ビジュアライズ機能の搭載。
・学習がし易い。
プロシージャル、ノードベースのソフトなので他の人のファイルから作業順、作業内容が明確に分かります。

・柔軟性が高く、そしてデータが扱いやすい。
他のジオメトリからデータ転送、ジオメトリ・ボリューム・パーティクル区別なく扱えます。
アニメーションの伸縮、反転、他のフレームの値、形状の取得なども容易です。

・最新テクノロジーの導入が早く、毎年着実に大幅なバージョンアップが行われている。

・ファイルシェア、再利用のしやすい。ファイル間でのコピペ、ユーザー間でのシェアも非常にシンプル。
別ユーザー間でコピペ出来るツールなども用意してある会社あります。

・ファイルサイズが小さい。
通常の3Dソフトと違い、ノードの情報のみ保存しているので10MB以上になるのはほとんどありません。普段の仕事でも2ー3MB がほとんどです。
堅牢なパイプライン構築・バックアップ・トラフィック負荷軽減への恩恵があります。

・CG文法の理解が深まる。
Houdiniで使われる用語の多くは、ハリウッドのCG制作のスタンダードな用語です。
シーグラフや海外でのセミナーで話していることの理解度が高まります。

・使用用途、ユーザー層の拡大中 。
エフェクト、背景モデリングだけでなくモーショングラフィックス、CFX、ライティング・LookDev・レンダーマネージメントでも普及しつつある。(ライティング・レンダーマネージメントではHoudini CoreでSolaris運用が安定性・シンプルさ・コストパフォーマンスが良いと思います。)

・システム面でも環境構築しやすい設計。
豊富に用意された環境変数、HDAなどの仕組みのお陰でパイプライン構築コストが低いです。
他の多くソフトは、プラグイン同士の連携のリサーチ、導入手続き、ライセンス管理等のコストが非常に大きい。(HoudiniでもArnoldもしくはRedshiftはおすすめです。標準レンダラーのMantraは柔軟性は高く、何ライセンスでもフリーで使えるので巨大なレンダーファームがある会社にはメリットがありますが速度は遅いですが、新しいレンダラーKarmaが解決しつつあります。Houdini用のプラグインはノードで用意されるのでシームレスに移行できます。)


デメリット

・他の3D総合ソフトウエアよりも値段が高い。(とよく言われますが、上記のメリットを考えるとコストパフォーマンスは群を抜いて高いと思います。)

・キャラクターアニメーションの機能に関してはまだ発展途上。(20.5のApexで大きく進化しました。)
(MIGSでこの会社http://shedmtl.com/en/のセミナーを見て、大分良い所まで来ていると思いました。リグ・アニメーションもHoudiniに移行しています。)

・1 点物の手動モデリング等には向いていない。(ポリゴン編集はここ数年進化してきてはいます。)

・マテリアル周りが弱い。(シェーダーは柔軟で中へ潜ればカスタムできますが、表のUIはオプションが足りない気がします。プロシージャルシェーダーの種類が少ない。)

・ビューポートがMayaよりもレスポンスが悪い部分がある。(大量のポイントやポリゴン表示などはHoudiniは高速です。)

その他のデメリットと回避方法はワークショップで解説しようと思います。

2018年12月10日月曜日

失われたTransformを取り戻す。

こちらはHoudini Advent Calender 2018 10日目の記事です。
https://qiita.com/advent-calendar/2018/houdini

ジオメトリの形状からTransform(位置、回転、スケール)を取得(作成)し、別ジオメトリを追従させる方法です。
この間同僚にやり方を聞かれ、これまで何人かに同じ事聞かれたので記事にする事にしました。
本当はこのような場面(Transformデータが無い)は出くわすのを避けるべきですが、
データが連番ジオメトリしか残っていないっ!なんて場合に使えます。
(基本AlembicやFBXでTransformデータが残っている場合はパラメーターをchで繋げるのみです。)

以下は結果です。
ドーナツ(Torus)ジオメトリのアニメーションに、ぬいぐるみ(rubbertoy)が付いて行っています。



Transformをつくる全体を簡単に説明すると、

ポジションは全体の中心座標、回転とスケールは任意のポリゴン一枚からN、up、 pscaleを計算し、copy to points sopで流し込むという流れです。

(このサンプルではTorusを適当にアニメーションしたものをObject引っ張り、Transformのデータは無いと仮定して進めています。)
まずはグリーンの部分、
位置(中心座標)の取得ですが、ジオメトリをpack化する事で1point のみになり自動でpointの位置も中心にくるので楽で良いです。
add sopで1pointつくり でHscriptのcentroidを使用しても良いと思います。

次に回転、スケールを計算するオレンジの部分の説明です。

Torusから任意のポリゴンを一枚選び残します。
(今回は解説の為見やすいようビューポートで一枚選択してキーボードのdeleteキーを押し作成されたblast sopのオプションをDelete Non Selectedにしていますが、  blastのGroupに0とすればインプットのジオメトリを変えてもそのままの仕組みが流用しやすくなります。)


次にNormal SopでPrimitiveにNを作ります。

ここでpointタイプに作成してしまうと、次につくるupと直交した物にならないので要注意です。
直交したNとupがあれば最後のcopy to points sopで回転として上手く作用します。

次にUpとpscaleの作成です。
vector dir = point(0,'P',0)-point(0,'P',1); //ポイント番号0のポジションから番号1番のポジションを引き算しベクトルを作ります。
v@up = normalize(dir);  //ノーマライズして長さが1のupというベクトルにします。
@pscale = length(dir)*3.5;  //エッジの長さの変化をスケールとして扱うので、ノーマライズ前のベクトルdirのlengthをとりpscaleとします。
この手法の欠点は、ぬいぐるみジオメトリの初期状態をキープは出来ないので大きさや
向きを調整してあげる必要があります。pscaleに3.5をかけているのはその為です。

これでNとUp、pscaleができましたがNがprimitiveアトリビュートのままでは次のattribute copyでpack化した中心のpointに移せないので、attribute promoteでpointアトリビュートに変換します。

このNとUp、pscaleを左側のpack化したpointにattribute copyで渡します。

このポイントにcopy to points sopでぬいぐるみジオメトリを配置すると
ドーナツ(Torus)と同じように移動、回転、スケールが反映されます。

今回の様にポリゴンが斜めを向いている場合は、あらぬ方向を向いてしまうので、ぬいぐるみの初期の向きをTransform sopで調整しています。

今回はオブジェクトの中心にN , up , pscaleを持たせましたが任意のポイントもしくは、プリミティブをpackにすれば、ポイントコンストレインやポリゴンコンストレインにも置き換えられます。

以上です。

Houdiniアドベントカレンダーは2016年から続いています。Houdiniのほとんどのテクニックは古くならずいつまでも使えるものが多いので是非読んでみて下さい。




2018年12月3日月曜日

分布の種類をコントロールする。

こちらはHoudini Advent Calender 2018 3日目の記事です。
https://qiita.com/advent-calendar/2018/houdini


スキャッターされる複数ジオメトリを配置具合に重みをつける方法を紹介します。

ちなみにH17のHeight field scatterでは配置するオブジェクトにweightアトリビュートをを持たせる事で似たようなことができますが、
こちらの方法はscatterポイントのアトリビュートをコントロールする事でより柔軟な表現が可能になります。


全体のネットワークです。3種類のジオメトリをpointに配置しています。
半径10のcircleにscatterし、そのpointにweight アトリビュートを持たせていきます。
今回は原点からの距離をweightにしています。weightのコントロールをrampで行いやすいよう、0-1の間に収めるよう10で割っておきます。
確認の為、Cdにweightコピーしてビューポートで見えるようにしています。
(今回は半径10のcircleに配置したので10で割るという簡単な方法をとりましたが、最大値、最小値を自動で求めて0-1にfitしたい場合はattribute promoteで出来ます。)

次にweightのコントロールし、そこからidアトリビュートを作ります。

float weight = chramp('weight',@weight); //下のランプで重みをコントロールしています。
@Cd = weight; // ビューポートで確認。
i@id = rint(fit01(weight,0,npoints(1)-1)); // weightからid アトリビュートを作ります。
0-1 のweightアトリビュートfitでを0-N のidアトリビュートを作ります。
Nは今回は3種類のジオメトリを配置しているので、3種類をそれぞれpacked化しmergeしたものを2番目のインプットにさしnpointsを使用する事でNを求めています。
今回は3つのジオメトリがあるのでそれぞれのptnum(ポイントナンバーは)は0, 1 , 2 となり最大値は2。
npointsは何個ポイントあるかが返ってくるので3となるので1を引いています。
最後にrintで四捨五入し整数値にしています。
上記の様にカーブで小さい値が多くなる様に制御した状態。これでidが小さいほうのジオメトリが多く配置されます。

最後にcopy sopでstampを使用可能にし、blast でポイントナンバーがidにマッチしないジオメトリを消すことで
スキャターされたpointが持つidにマッチしたジオメトリが配置されます。

以上です。

Houdiniアドベントカレンダーは2016年から続いています。
Houdiniのほとんどのテクニックは古くならず、いつまでも使えるものが多いので是非読んでみて下さい。


2018年11月13日火曜日

新しいScene Viewを作って古いViewを消けします。

old_view = hou.ui.curDesktop().panes()[1].tabOfType(hou.paneTabType.SceneViewer)
new_view = hou.ui.curDesktop().panes()[1].createTab(hou.paneTabType.SceneViewer)
new_view.setIsCurrentTab()
old_view.close()

シェルフを右クリックでNew Tool..で登録しておくとワンクリックで出来て便利です。

2018年11月9日金曜日

Twitter Houdini関連まとめ2018


2018年7月18日水曜日

CGワールド 2018年8月号


(クリック拡大)

CGワールドにHoudiniの記事を書きました。
Twitterでも書きましたが、アートディレクタブルかつディティールの自動生成に重きを置いています。
モニュメントバレーはワークショップで解説した内容とほぼ同じです。
バリエーションの自動生成は一番最初のシンプルなジオメトリの形状を変えるだけなので触れてはいませんでした。Solver sopやHeight Field Erodeなどシムがある場合のやり方は、ワークショップの時は少しトリッキーなやり方を解説しましたが、一番簡単に行うにはobjレベルでノード全体をコピーしてしまうのが一番簡単です。takeでもいいですが個人的に好きではありません。

ボロノイを活用した岩作成では、フラクチャーしたジオメトリの中にあるピースだけを取り出す方法と、VDBとBooleanを利用したエッジに浸食されたディティールを追加する手法の紹介です。マテリアルはMaterial Palletにあるのをそのまま使っています。
締め切りとページの都合上一番大きい広い面で立たせる方法を書き切れなかったので今度ブログで補足出来たらと思います。



2018年1月15日月曜日

ワークショップ第2弾開催

ワークショップ第2回目を開催する事になりました。
詳細はこちら
http://sugi-iggy.blogspot.ca/p/blog-page.html

導入編+(プラス)として新しくアドバンスな内容のもの3つ追加してあります。
前回のサンプルもHoudini16以降の大幅なアップデートに合わせた内容に変更してあります。
前回個人で参加して下さった方は80%オフになります。
アドバンスな内容には、お問い合わせが多い以下の2つを含みます。

MonumentValleyのデータはご依頼者から配布許可がでていませんので、解説のみとなりますのでご注意下さい。





テクスチャは自分が描いたので下手ですみません。UVはvimeoで使用されている方法よりもハンドリングし易い形状になっています。

完璧ではないですがある程度複雑な形状でも使用可能です。

お申込みはこちらのフォームからお願いいたします。


ワークショップのページに載せきれていないものを、こちらに貼っていこう思います。

2018/1/18 作例を追加いたしました。


R&D 忘備録