2016年 1月 の記事

Houdini 血管アニメーション ver2

以前作った血管アニメーションのバージョン2。

今回は全てをSOPのWrangleで実装しておりDOPは使用していない。
通常POPを使うような部分もSolver SOPで代用している。

Wrangleにおけるポイントクラウドの扱いや、
動的なグループの組み換えがわかるようになれば
SOPでできることが格段に増えると実感した。

 

Houdini Vein Test ver02 from shuichi sakuma on Vimeo.

 

血管が広がる開始点は自由に設定でき、かなりのパラメータをUI上に公開してるので
パラメータからWangleのVEXが制御できるようになっている。

Houdini AttributeWrangleについて

Houdini備忘録

AttributeWrangleについて

2016-01-24_213346

 

AttributeWrangleをダブルクリックして中に入るとAttributeVopがある。

2016-01-24_213358

 

さらにAttributeVopをダブルクリックして中に入るとSnippetがあるが、
AttributeWrangleに書いたコードは実際にはこのSnippetに記述されるように
なっている。

2016-01-24_213437

2016-01-24_213500

肝要なのはこのSnippetがCVEXコンテキストで実行され
特定のコンテキスト内で実行されるわけではないこと。
よって、以下のグループ系関数を
AttributeWrangleに記述するとエラーとなる。

// pop,sopコンテキストのみで有効な関数
void addgroup(string group_name, int point_number)
int ingroup(string group_name, int point_number)
void newgroup(string group_name)
void removegroup(string group_name, int point_number)

 

 

ついでにCVEXコンテキストで有効なグループ系の関数をまとめてみた。

// stringには0-10や@Cd.x>0.5のような一時的なグループを使用することができる
// 空の文字列の場合すべてのポイント(プリミティブ)に相当する
int [] expandpointgroup(string filename, string groupname)
int [] expandpointgroup(int input, string groupname)
int [] expandprimgroup(string filename, string groupname)
int [] expandprimgroup(int input, string groupname)

// ポイント番号で指定したポイントが指定したグループ内にあれば1を返す
int inpointgroup(string filename, string groupname, int pointnum)
int inpointgroup(int input, string groupname, int pointnum)
int inprimgroup(string filename, string groupname, int primnum)
int inprimgroup(int input, string groupname, int primnum)

// ジオメトリの指定したグループ内のポイントの数を返す
int npointsgroup(string filename, string groupname)
int npointsgroup(int input, string groupname)

// ジオメトリの指定したグループ内のプリミティブの数を返す
int nprimitives(string filename, string groupname)
int nprimitives(int input, string groupname)

// 指定グループにポイント(プリミティブ)を含める
// その際valueには0以外の値を設定する
// 0を設定した場合にはグループからの除外を意味する
// グループが存在しなかった場合は【グループが作成される】
int setpointgroup(int geohandle, string name, int pt, int value, string mode=”set”)
int setprimgroup(int geohandle, string name, int prim, int value, string mode=”set”)

// 現在のポイント/エッジ/プリミティブ/パーティクルが指定グループ内にあるかは以下のやり方で判定可能
if(@group_グループ名 == 1)

// グループへの追加、グループからの解除
@group_グループ名 = 1;// グループへエレメントを追加
@group_グループ名 = 0;// グループからエレメントを削除

 

Deep Compositeのやり方

【備忘録】

Non Commercial版のHoudiniではDeep Composite(DSM Merge ROP)が
無効にされているため、Houdini内でのディープコンポジットができない。

代わりに今回Non Commercial版のNukeでやってみた。

 

まずHoudiniでDeepデータをEXR形式で吐き出す。

2016-01-12_053117

 

次にNukeで以下の以下のネットワークを組んでディープコンポジットを行う。
使用するのはDeepRead、DeepMerge、DeepToImage、Writeノード。

2016-01-12_053257

 

Houdini 竜巻シミュレーション

Houdiniを使って竜巻を作ってみた。
冬休みの自由になる時間をほぼ全部つぎこんだ。
結果、時間はかかったが今回色々と勉強になった。

 

Houdini tornade test ver01 from shuichi sakuma on Vimeo.

 

シミュレーションの規模が大きくなると
8コアでもCPUパワーが全然足りなくなる。
作業中のメモリ使用量は30GB近く。
これはネットワークのポイントポイントで
メモリキャッシュをとっているため。

2015-12-28_174627

 

ただ、8コアのPCの場合はレンダリングを回しながら
wordで教科書の原稿も書けるので色々助かる。

調べると個人ではXeonを2個積んだ36コアのマシンまでは購入できるみたいだが
価格帯が昔のシリコングラフィックスのレベルなので購入はとても無理(笑)

宝くじが当たればな~

巣の箱

久しぶりにキャットタワーの巣の中へ入ったエル。
小さい頃はよくここに入っていた。

2016-01-04_202053

 

「何よ。カメラ近いよ」

2016-01-04_202015

あけましておめでとうございます

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

最近だっこが好きになってきたエルと新年の一枚。

2016-01-01_084758

TOP