November 18, 2012

マンガ Houdini チュートリアルーーはへんへんーー

fracture01

fracture02











































fracture03












































fracture04












































fracture05











































一番最初にやったチュートリアル
のアップデートで完全な上位互換になります。
以前はCopyに関してもCopy&Deleteのループ技をイチイチ使ってたりとかは
ForEachのほうが楽だし、
PointPositionやらCopySolverだとか使って複雑なことになっていましたが
ポイントからアトリビュートをDOPデータにインポートとかもダイレクトに
出来ます。

コピペurlサンプル
http://fujitarium.syuriken.jp//fractureSetup.hipnc

マンガではポイントから位置回転を読み込んでますが、勿論それだけではなく
friction, glue, glueImpact等状況に応じて変化させていくことも可能ですので
RBDを高度に操る上でこの辺りのテクは個人的に必須です。
glueImpactは確かRBD Stateには無いのでそういったその他の値を
編集するときはModify Dataを使います。
(追記)glueImpactじゃなくてglueinpulseですね。しかも思いっきりRBD Stateという・・・。
ともかくそうじゃないときはModify Dataを使います。自分はglueinpulseのコントロールは
Modify Dataで良くやっていたもので。。。


RBD Stateを使えばポジションの固定に限らず
例えばあるタイミングで速度を半分にしたいだとかでも使えたりして
そういう時はPositionデータからvelの値を持ってくるんですが
そのときは$velxというローカル値があります。SOPと違い何故か$VXではありません。
エクスプレッション的に参照したい場合は
dopoption("..",$OBJID,"Position","velx")
みたいになります。


以下コピペ用エクスプレッション
active value
point("../../OUT_active",dopoption("..",$OBJID,"CopyInfo","copynum"),"active",0)
posiotion とか
point("../../OUT_active",dopoption("..",$OBJID,"CopyInfo","copynum"),"P",0)
point("../../OUT_active",dopoption("..",$OBJID,"CopyInfo","copynum"),"P",1)
point("../../OUT_active",dopoption("..",$OBJID,"CopyInfo","copynum"),"P",2) 


fujitarium at 19:42│Comments(6)TrackBack(0)Houdiniチュートリアル | CG

トラックバックURL

この記事へのコメント

1. Posted by J   January 03, 2013 00:31
2枚目と3枚目のリンク先の画像が同じですよ〜。
2. Posted by fujitaR   January 03, 2013 01:12
ご指摘のほうありがとうございます。
リンクのほう修正しておきました。
3. Posted by K   January 03, 2013 10:54
始めまして、いつも大変参考にさせていただいてます。
質問なのですが、ヴォロノイで破片を作成する際に、クラスタのオプションを使用すると、各破片をセントロイドした各ポイントの位置に戻す際に破片の位置がずれてしまいます。クラスタを使用しなければこのような問題は発生しないのですが....お時間ある時に回答いただければ幸いです。
4. Posted by fujitaR   January 03, 2013 14:13
ちょっと、どのようにずれたかにもよるのでなんとも言えませんが、以下の点確認願えますか?

・破片が明らかに別のポイントを参照している場合
破片のグループ名が0からの通し番号になっているでしょうか?
ヴォロノイは例えクラスタを使っても0から通し番号でグループとnameアトリビュートを作るはずなので、どこかで破片を消すもしくはポイントを消すなどの工程が入ってないでしょうか?

・それぞれの破片間に隙間が出来てたりして中心点に戻ってない。
破片からセントロイドでポイントを作る =>破片をセントロイドの数値を基に原点へオフセット =>破片をポイントの中心へ移動。
で戻るはずなんですが、

クラスタを使ったときだけずれるのは謎ですね。
一応僕の添付したサンプルファイルでpolyExtrudeのノードをvoronoiの手前に付け替えてクラスタを有効にしても問題ないはずです。

どうしても解決しなければ僕のメールへ直接スクリーンショットかファイルを送ってみてください。
fujitariumあっとhotmail.co.jp
5. Posted by k   January 05, 2013 07:02
回答ありがとうございます。
シーンを見直してみたところ、ヴォロノイSOPのClusterタブにあるDelete Exterior Cluster Edgesのオプションをonにしていたために、消されてしまっているサーフェースがありました。
オプションをoffにしたところ、きちんと各破片をが元のポイントの位置に戻りました。
もう一つ質問なのですが、foreachのループ用にヴォロノイでグループを使っているのは理由がありますか?ループ自体はアトリビュートを使った方が早いような気がしたので試してみたのですが、アトリビュートだとこれまた破片がずれてきてしまいます。
6. Posted by fujitaR   January 05, 2013 14:59
Delete Exterior Cluster Edgesで番号が変わりましたか?うーん、形状によってはそういうこともあるって事でしょうか?知りませんでした。

グループをループにしているのはヴォロノイのグループが0からの通し番号を生成してくれるのと、渡されたモデルを使うケースとしても自分の場合グループを扱う場合が多いからです。アトリビュートに関してはどんなアトリビュートを使うかによりますが可能だと思うのですがずれますか?例えばnameとかだとグループと同じ事だと思うのですが。

僕の説明ではオブジェクトを消さずに通し番号を維持したほうが良いみたいになってますが、消さなければいけないケースとかもあると思うのでそういう場合はEach Numberにして、開始を0、最終をargc(primgroupmask(opinputpath(".",0),"piece*"))-1にして内部でDeleteを加えてGroupを`arg(primgroupmask(opinputpath(".",0),"piece*"),stamp("..", "FORVALUE",0))にしてDelete non selectedにして抽出すればstamp("..", "FORVALUE",0)の値は0からの通し番号になるのでそれをpieceIdとして扱えばずれる事は無いと思います。
もしくはその中で新たな通し番号のグループを生成しても良いです。

それと確認の仕方としてForEach後に抽出したポイントのスプレッドシートを開いてpointNumberとpieceIdの数値が同じであれば大丈夫なはずです。

コメントする

名前
URL
 
  絵文字