カテゴリー別アーカイブ: houdini

Houdini影だけのレンダリング

備忘録:Houdiniで影だけをレンダリングし背景画像と合成するシンプルなやり方。
(他にもやり方はあると思いますが、とりあえず今回試したやり方)

 

/out内で以下の3つのROPを作成。

1.キャラクターのみをレンダリングするROP
2.影が落ちる地面のみをレンダリングするROP(影を落とすキャラクターはファントム(幽霊)設定。direct_shadowとindirect_shadowのプレーンを追加)
3.背景のみをレンダリングするROP

3つのROPは以下に示すようにMergeで結合。
Mergeノードにはrenderボタンがあり、それを押すことで
Mergeに接続されているROPノードが左から右へ順番にレンダリングされる。
その結果、それぞれのレンダリング結果がEXRファイルに保存されていく。

以下、それぞれのROPの設定とそのレンダリング結果。

1.キャラクターのみをレンダリングするROP設定



2.影が落ちる地面のみをレンダリングするROP設定




3.背景のみをレンダリングするROP設定

COP2 Networkを作成し、レンダリングされたキャラクター、影つき地面、背景の各EXRファイルを読み込んで以下のネットワークを作成。これによりdirect_shadowとindirect_shadowチャンネルが
アルファチャンネルにマージされる。

1のChannelCopyノードの設定

2のChannelCopyノードの設定

3のChannelCopyノードの設定

最後に背景の上に影を重ね、さらにその上にキャラクターを重ねて完成。
(影には適度にブラーを適用)

Houdini16.5における書籍p382(手順30)の車輪回転アニメーションに関しまして

拙著「Houdini SOP&VEX編」のp382の手順30において
キャタピラと車輪をパックして1ポイント扱いにしていますが、
Houdini16.5ではAlembicパックジオメトリ(車輪)と
標準パックジオメトリ(キャタピラ)が混在した状態でパックすると
Alembicパックジオメトリ(車輪)に設定していた回転行列が機能しなくなるようです。
その結果、キャタピラが回っていても車輪は停止する状態になります。
(なお、Houdini16ではこの現象は発生しません)

これを避けるために、Houdini 16.5では手順28(p382)において
Solver(solver2)とMerge(merge2)の間にPrimitiveWrangleとPackを挿入し、
以下に示すようにパラメータ設定を行ってください。
これは事前にPackノードによって、車輪の4つのAlembicパックジオメトリを
標準パックジオメトリに変換しておく処理に相当します。


◆PrimitiveWrangleの設定
@name = “piece”+itoa(@primnum);

◆Packの設定


以上、お手数をおかけしますが
よろしくお願いいたします。

Houdiniでポリゴンモデリング part2

先日、ラピュタのロボットをHoudiniでモデリングしてみたが、
(http://www.serenelight3d.com/blog55/?p=3583)
今回は球体を使って様々な野菜やフルーツを作ってみた。

表面の模様や凹凸のディテールは、HoudiniのCOP内で
プロシージャルテクスチャを作成し、
ディスプレイスメントマッピングにより表現した。
今回、手作業によるペイントは行っていない。


今回、一番時間がかかったのはメロンの表面。

HoudiniのCOPは合成機能だけではなく、テクスチャーも作り出すことができるので
いろいろと研究の余地はあると思います。

Houdiniでポリゴンモデリング

今回、Houdiniでキャラクターモデリングを行ってみた。

一昔前だとHoudiniではキャラクターなどのポリゴンモデリングは厳しかったが
現在のHoudiniは必要なツールが一通り揃っているので、ある程度は問題なく行える。
(と、言っても、Houdiniでゼロからキャラクターをモデリングしている人は
そんなにいないとは思いますが…)

ポリゴンモデリングは主にラジアルメニュー(Cキーで表示)を使用して行った。
その場合、ほとんどのオペレーションはシーンビュー内で行うことになり、
ノードは自動的に作成され、自動的に接続されていく。

例えば、ポリゴンの押し出しやスプリットを使ってボックスから手の形を作成していくと
オペレーションのたびに対応するノードが自動的に作成され、
ネットワークに直列に接続されていく。

ロボットのゴーグルの穴はブーリアンを使用せずにモデリングで穴をあけた。
これはブーリアンを使用するとサブディビジョンの際に問題が出るため。

胸の紋章のモデリングは画像ベースで、VEXを使ったポイント移動によって行った。

今回、ラピュタのロボットをモデリングするために作られたノードは以下の通り。

そしてモデリング終了後にUV展開を行って、サブスタンスペインターでテクスチャーを作成した。
以下に示すように、HoudiniのUV圧縮を行うUV Layoutノードは非常に性能がいい。
今回は全てのパーツをまとめてテクスチャー作業を行ったため、テクスチャは4Kで作成した。

今回初めて本格的にサブスタンスペインターを使用したが、
Houdiniと同様に「プロシージャル」なフローでテクスチャー作成が可能になっており
とてもいいツールだと思う。
UIも最新バージョンで刷新されており、使いやすくなった印象を受けた。

最後にサブスタンスペインターからbasecolor,roughness,metal,normalマップを
エクスポートし、マントラでレンダリングを行った。

 

Houdini RBD(リジッドボディ)

新年あけましておめでとうございます。
本年もよろしくお願いいたします。

冬休みにまとまった時間が取れたので
再学習も兼ねてHoudiniのRBD(リジッドボディ)アニメーションを作ってみた。

Houdini RBD personal study 03 from shuichi sakuma on Vimeo.

今回のシーンは通常のセッティングでは重すぎて最初計算が回らなかったが、
VEXを使うことでなんとか計算を回すことができた。

VEXは窓ガラス一枚ごとの粉砕・非粉砕状態のスイッチング、
建物のコンストレイン、RBDのアクティベーション、ガラス破片の初速度設定、
デブリ発生のタイミング制御など、様々な場面で使用している。

Houdini RBD personal work 03 wire view from shuichi sakuma on Vimeo.

一般に「ダイナミクス」というと、ツール側でほとんどやってくれそうなイメージがあるが
計算をうまく回すためのお膳立ての部分は、ハンドメイドで作成していくことになる。

Houdiniはポイント制御に始まりポイント制御に終わるツールなんだということを
今回改めて実感した。

8章のチュートリアル15(p372)に関しまして

現在刊行中の「Houdini SOP&VEX編」ですが
8章チュートリアル15の手順6(p372)を実行すると
Houdiniがクラッシュするケースがあります。

この現象はHoudini16のビルド600付近のバージョンで発生するようです。
お手数ですが以下のサイトから最新のビルド671以降を
ダウンロードして実行していただくと、クラッシュを回避することができます。
https://www.sidefx.com/download/

以上、お手数おかけしますがよろしくお願いいたします。

書籍「Houdini SOP&VEX編」に関しまして

お待たせしておりました拙著「Houdini SOP&VEX編」ですが
近日中に書店に並ぶ予定になっております。

 

お手数ですが書籍を購入された方は
ボーンデジタル社のサイトから以下のデータのダウンロードをお願いいたします。
(www.borndigital.co.jp/book/)

・書籍内チュートリアルで使用するモデルファイル、テクスチャーファイル
・書籍内チュートリアルの完成版hipファイル
・書籍内チュートリアルのVEXコードが記載されたテキストファイル

 

また、本書「Houdini SOP&VEX編」はSOP内で使用するVEXにフォーカスした
内容になっておりますので、DOPに関してはカバーしておりません。
その点ご承知おきください。

 

以下に書籍の正誤表を記載させていただきます。
こちらの正誤表は上記のボーンデジタル社書籍サポートページにも記載されております。
以上、ご迷惑おかけしますが、よろしくお願いいたします。

 

<8-4-13> (8章 p234)
————————————————————————————————

(誤)


// インスタンンス番号の決定
if(vmag > 3.5) {inst = 6+int(3*rand(@ptnum))};// 移動速度が速い猫
else if(vmag > 2.75) {inst = 3+int(3*rand(@ptnum))};// 移動速度が標準の猫
else {inst = 0+int(3*rand(@ptnum))};// 移動速度が遅い猫

(正)


// インスタンンス番号の決定
if(vmag > 3.5) {inst = 6+int(3*rand(@ptnum));}// 移動速度が速い猫
else if(vmag > 2.75) {inst = 3+int(3*rand(@ptnum));}// 移動速度が標準の猫
else {inst = 0+int(3*rand(@ptnum));}// 移動速度が遅い猫

 

<8-12-2-3> (8章 p342)
————————————————————————————————
書籍内VEXの”{0,0,3}”の部分を”{0,0,0.7+0.3*rand(@ptnum)}”に修正してください。

(誤) @v = {0,0,3};
(正) @v = {0,0,0.7+0.3*rand(@ptnum)};

 

<9-3-5> (9章 p544)
————————————————————————————————
手順5を終えたら、最後に【「Apply」ボタンを押す】操作を行って下さい。

 

<9-3-31> (9章 p557)
————————————————————————————————
書籍内エクスプレッションの”OUT_GLASS_PT”の箇所を”fuse2″に修正してください。

(誤) npoints(“../OUT_GLASS_PT/”)
(正) npoints(“../fuse2/”)

 

<9-3-40> (9章 p560)
————————————————————————————————
書籍内VEXの”OUT_GLASS_PT”の箇所を”fuse2″に修正してください。

(誤) int skip = npoints(“op:../OUT_GLASS_PT/”);
(正) int skip = npoints(“op:../fuse2/”);

 

<9-3-54> (9章 p567)
————————————————————————————————
書籍内VEXのchi(“../floorNum”)の後の”-1″を削除してください。

(誤) if(i@floor == chi(“../floorNum”)-1){
(正) if(i@floor == chi(“../floorNum”)){

Houdini書籍刊行に関しまして

20年間の歳月をかけてCGパッケージツールは進化を続けており、
現在は数回のボタンクリックだけで、煙を作成したり海面を作成したり、
爆発アニメーションを作成したり複雑な地形が生成できるようになりました。

その一方で、コンピューター・グラフィックスの低レベルな部分が
徐々に学習しづらくなっている印象を受けています。
ここで言う「低レベル」とは、コンピューター・グラフィックスの基本原理を意味しており、
どうやって画面内のモノが動いており、一枚の絵が作成されているのかという問題です。

この本ではそのような状況を考慮し、Houdiniの革新的な機能を利用しつつも
それと同時に基本原理も習得できるような構成にしました。

結果、一般的なパッケージツールの解説書とはかなり趣向が異なる本になりましたが
この本で得られる知識は今後も役に立ってくれるはずです。

内容はHoudiniの基本であるSOPとVEXに絞り、
DOPに関しては一切触れておりません。

よって、エフェクトを作成するための本と言うよりは、
ポイントの制御の仕方を800ページかけて解説している本と
理解していただければよろしいかと思います。

現在、原稿の修正作業の方を行っておりますので、
作業が終わり次第詳細をお知らせいたします。

原稿完成

今年刊行予定の書籍「Houdini SOP&VEX編」の原稿が完成。

今回、新規に書いた原稿の総ページ数は793になった。
赤本並のページ数の本を一人で書くことになるとは
夢にも思わなかったが、なんとか完成した。

全ページHoudini16に対応しております。

書店に並ぶまでには今しばらく時間がかかると思いますので
どうぞお待ち下さい。

内容の詳細に関しましては
今後このブログでお知らせいたします。