_581x100.png CGsyomei_583x102.gif 訪問者 無料カウンター ページビュー 無料カウンター

2012年05月20日

(TP Basic) Iteratorの基本

今回はIteratorオペレーターの使い方について説明します。

Iteratorとは何かというと、一言で言えば、文字通りある操作を「繰り返す」時に使用します。とは言ってもあまりピンと来ないと思うので簡単な例で説明してみます。例えば以下の画像のように、パーティクルシェイプを立方体状に積み上げたい時はどうすればいいか考えてみます。

IteratorXYZ.jpg続きを読む
posted by けゑ at 07:20| Comment(0) | TrackBack(0) | Thinking Particles

2012年01月17日

(TP Basic) Randomオペレーターを使ったビューポートのパーティクルを間引く方法

 今回ツイッターの方で「TPでビューポートとレンダリングでパーティクル数を変える方法」はあるかという質問が出たのでさっくりと説明してみたいと思います。 とは言え、実は自分も以前そういうあって当然そうな機能は無いのかとピクソの元同僚に聞いたんですが、「無い。」とのことでした^^;でも他の方法を使って似たようなことができるというのを教わったのでそれを紹介しておきます。続きを読む
posted by けゑ at 06:18| Comment(0) | TrackBack(0) | Thinking Particles

2012年01月16日

(TP Basic) RefernceとPAttachとSCの基本



今回はそれぞれ異なるグループのパーティクルとパーティクルをくっつける(Attach)する時に必要なReferenceの概念を説明します。これを理解するとパーティクルグループ同士の親子関係が簡単に作れる他、インスタンスジオメトリーのシェイプにもパーティクルをくっつけたりもできるので、最初からある程度の形状を持ったまま発生するFumeのパーティクルソースとしても使えたりします。また今回TPでRDBの計算をするときに非常に重要なSC(Shape Coliisonオペレーターの最新版)の説明も簡単にしておきたいと思います。

続きを読む
posted by けゑ at 04:28| Comment(3) | TrackBack(0) | Thinking Particles

2011年12月18日

(TP Basic) ダイナミックセットツリー内のオペレーターの順序の重要性

 今回はTPのセッティングをする際に非常に重要な、ダイナミックセットツリー内のオペレーターの順序について説明します。これは以前掲載した「(TP Basic) Memory Operatorの基本」の記事で、同じように設定したのにうまくTeapotが発生してくれないという人が何人かいたので恐らくこうであろうという理由とそのロジックを説明しておきたいと思います。

続きを読む
posted by けゑ at 11:42| Comment(0) | TrackBack(0) | Thinking Particles

2011年12月14日

(TP Basic) PPassABの基本



今回はTPの基本的で重要な機能のPPassABの説明をしたいと思います。場所はCreatロールアウト内のオペレーターから入ったInitiatorの中です。TPではnodeヘルパーを使ってシーン内のオブジェクトをピックアップしDistance ノードでパーティクルのDistanceやDirectionを調べたりできますが、PPassABはそのパーティクル同士版といった感じです。2つのパーティクルグループ同士をチェックする機能を持っていて、全てのパーティクルをチェックしたり一つのパーティクルグループから見て特定の範囲内にあるパーティクルのみをチェックできたりします。これだけだといまいち使い道が分からないと思うので早速実際の使用例を見てみましょう。続きを読む
posted by けゑ at 05:05| Comment(2) | TrackBack(0) | Thinking Particles

2011年12月05日

(TP Basic) Memory Operatorの基本

 


今回は今後頻出するであろうMemory Operatorの使い方について説明しておきます。以前"(TP Basic)Debugの基本"のエントリーで少し出てきましたが、今回はDebug用ではなく本来の用途の説明になります。cebasのwikiには"Storing data is one of the most important tasks when doing complex particle system setups. The Memory node is especially made for this kind of task.

One of the biggest features the memory operator offers is the DynamicSet wide parameter access, any value may be accessed in any DynamicSet at any time. Also storing values per particle is also possible"とあります。「データの保存は複雑なパーティクルシステムのセットアップをする時に最も重要なタスクの一つです。Memoryオペレーターが提供する最大の機能の一つは広いダイナミクスセットのパラメーターのアクセスでどのダイナミクスセットにいつでもどんな値でもアクセスできます。またパーティクルごとの値の保存も可能です。」とのことです。まあこれもなんのことかさっぱり分からないと思います。では実際にこれがどういうことなのか作例で見ていきましょう。

続きを読む
posted by けゑ at 06:28| Comment(7) | TrackBack(0) | Thinking Particles

2011年12月04日

TMSさんから自分が作成したThinking Particles4の作例のシーンがDLできます。

http://www.tmsdownload.com/tmsblog/?p=198

以前より自分がR&D用に作成してVimeoに上げているいくつかのシーンをTMSさんから配布しています。いくつかのシーンはブログの記事と連動しているのでぜひ触ってみてください。ただしちょっと今回のものは中級以上のレベルを対象にしています。TPのオペレーションや概念が分かってきてもっと実践的な複雑なことをしたいと思っている方はぜひ中身を覗いてみてください。
posted by けゑ at 19:28| Comment(0) | TrackBack(0) | Thinking Particles

TMSさんの6ヶ月間無料で使える「thinkingParticles体験キャンペーン」

 最近は主にツイッターをメインにやっているのでこっちでは告知してなかったんですが、TMSさんが"6ヶ月間無料で使える「thinkingParticles体験キャンペーン」"というものを実施しています。

https://www.tmsmedia.co.jp/index.php?name=News&file=article&sid=248

続きを読む
posted by けゑ at 19:08| Comment(0) | TrackBack(0) | Thinking Particles

(TP Basic)Value To Timeの応用 light intensity



今回は前回のValue To timeの応用をやってみたいと思います。実はこのValue To timeはパーティクルのパーティクルエイジだけでなくその他色々なデータを元にしてもタイムラインを作ってパーティクルの挙動をコントロールできます。この感覚が理解できればかなりのTPのポテンシャルを引き出すことができるようになります。

今回はこのムービーのようにライトの強度のデータを基にしてValue To Timeのタイムラインを作ります。やり方は殆ど同じです。続きを読む
posted by けゑ at 10:01| Comment(0) | TrackBack(0) | Thinking Particles

2011年11月25日

(TP Basic)Value To Timeの基本

今回はValue To Timeヘルパーオペレーターの説明をします。これはcebasのヘルプによると”The Value To Time Helper gives you the ability to take any scalar value and turn it into a time value. ”とあり、つまり「Value To Timeヘルパーはスカラー値を時間値に置き換えることができる」そうです。なんのことか訳分からないですよね。結論から言うと、このヘルプを読んだだけでは絶対Value To Timeを理解するのは無理です^^;でもこれを理解すればTPがいかに強力かがよく分かるようになります。続きを読む
posted by けゑ at 07:05| Comment(0) | TrackBack(0) | Thinking Particles

2011年11月24日

(TP Basic)Debugの基本

 今回はDebugという、TPのデータをチェックする機能を説明します。TPを触っているとデータのフローが間違っていて思い通りに動作しないことがしばしばありますが、原因がどこにあるのかを特定しやすくするためにこの機能を使うと非常に便利です。

DebugBasicIntro.jpg

続きを読む
posted by けゑ at 07:19| Comment(0) | TrackBack(0) | Thinking Particles

(TP Basic)threshold condition nodeの基礎

今回はTPのオペレーションで必須の機能の説明としてthreshold condition nodeの説明をします。threshold condition nodeはパーティクルがもつパーティクルエイジ、サイズ、ベロシティー等の各種パラメーターをインプットから読み取り一定の範囲の値を認識した時にBool値のtrueをそうではない場合にfalseをアウトプットするものです。これによってある程度のパーティクルエイジに達したらパーティクルを次のグループに送って削除とか、ある一定の速度内に収まっているパーティクルのみシェイプを与える等のコントロールが出来るようになります。以下のムービーは簡単なサンプルシーンのものです。



続きを読む
posted by けゑ at 04:32| Comment(2) | TrackBack(0) | Thinking Particles

2011年08月13日

エクスプレッションを使った波紋の表現(TP rain system)



これは先日アップしたVimeoのHD確認用ムービーと同じなのですが、元々はエクスプレッションの勉強も兼ねて、TPである1点から円状にパーティクルを発生させるにはどうしたらいいか考えて実際にそれを水面の波紋として使ってみようと思い色々実験したものです。感触としては非常にいい感じになったと思います。今回このプロシージャルな雨のシステムをTP rain systemと呼ぶことにしました。

 TP_rain_system_cap.jpg

 今回波紋に関しては波紋用のパーティクルを一旦シーケンステクスチャとして真上からレンダリングし、それを水面のディスプレイスメントマップとして活用することで実現しています。それでは以下このTP rain systemの説明になります。続きを読む
posted by けゑ at 09:00| Comment(0) | TrackBack(0) | Thinking Particles

2011年08月11日

vimeo用ムービー書き出しの設定

 自分もテストムービーなどをアップするのに使っているvimeoですが、とりあえず自分なりの最適なセッティングというものがあるのでそれを紹介したいと思います。以下のムービーは普段自分が使っている設定で書き出したものです。ノイズなど非常に少なく綺麗に再生されていると思います。(HDをONにして再生してみてください。)



続きを読む
posted by けゑ at 06:01| Comment(0) | TrackBack(0) | After Effect

2011年08月02日

position bornでテクスチャのグレースケールを参照してパーティクルの発生場所やスピードをコントロールする方法

 以前「シンキングパーティクル学習 普段パーティクルフローでやっている方法をシンキングパーティクルで再現してみる。その1」というエントリーでグレースケールのテクスチャの輝度情報でパーティクルの発生位置と速度をコントロールする方法を紹介しましたが、今回はObj.To Particleで発生させたパーティクルのシェイプ等から同じようなことをしようとする場合どうすればいいのかを考えてみます。この場合はmatter waveのようなあらかじめ用意されたパラメーターが使えないのでノードの組み合わせでこれを再現する必要があります。



続きを読む
posted by けゑ at 07:07| Comment(0) | TrackBack(0) | Thinking Particles

ノードからの距離によってパーティクルのグループを切り替える方法

 久々のTPメモです。今回はノードからの距離によってパーティクルのグループを切り替える方法です。


続きを読む
posted by けゑ at 00:19| Comment(0) | TrackBack(0) | Thinking Particles

2011年07月25日

選択したポリゴン面の一括デタッチとその注意事項

detach_result.jpg

編集可能ポリゴンの選択したポリゴン面を全て一括でデタッチして別オブジェクトにしようと思い色々調べたところ次のようなスクリプトを見つけました。

poly_count = polyop.getNumFaces $

for i = poly_count to 1 by -1 do

(
   polyOp.detachFaces $ #{i} asNode:true name:"Object01"

)

使い方は、編集可能ポリゴンにしたオブジェクトのポリゴン面を選択し、スクリプトを実行するだけです。各ポリゴンはObject01と名前のついたそれぞれ別オブジェクトになります。


スクリプトのヘルプによれば、polyop.getNumFaces $は選択したポリゴン面の数を返し、 polyop.detachFaces $は選択しているポリゴン面をそれぞれデタッチします。後ろについているasNode:trueはデタッチした後に別ノード、つまり別オブジェクトにするかということで、name:"explodedObject"は別オブジェクトにしたものに名前をつけるためのオプションです。

 このスクリプトを見ててどうも腑に落ちないところがあったのですが、それはなぜfor i = poly_count to 1 by -1 do と、トータルのポリゴン面数から1へと数字を繰り下げながらfor loopを回しているのかということです。ちなみにこのように

poly_count = polyop.getNumFaces $

for i = 1 to poly_count do

(
polyOp.detachFaces $ #{i} asNode:true name:"Object01"

)

1から順に処理していく方法だと以下のようなエラーが出てfor loopの4回目以降が走りません。

-- Frame:
-- i: 4
-- Runtime error: EPoly face index out of range: < 1 or > 3: 4


これに関してツイッターで質問をしたところ、@k240さんと@daiiiさんに非常に分かりやすく説明して頂きました。

続きを読む
posted by けゑ at 07:51| Comment(2) | TrackBack(0) | Max Script

2011年02月04日

今ベルリンに来てます。

 先月末より、ドイツのベルリンに無事到着してPIXOMONDOの仲間入りを果たすことができました!(
 ちょっとまだ時間がないので詳しいことが書けないのでまた後ほどー。)
posted by けゑ at 15:22| Comment(2) | TrackBack(0) | 海外就職

2011年01月09日

英会話についての個人的考察

 今回はCGから少し離れて海外就活をするなら避けては通れない英会話について自分の意見を述べてみたいと思います。これはあくまでも個人的な見解で絶対的なものではないのであしからず^^;続きを読む
posted by けゑ at 07:17| Comment(3) | TrackBack(0) | 英語学習

新年明けましておめでとうございます。

 もうすでに日がかなり経ってますが、明けましておめでとうございます。相変わらず書くペース遅いですが今年もよろしくお願いします。

去年は色々と怒涛の展開があり非常に充実した1年になりました。ヤマトを始めとしたエフェクトヘビーな仕事に多数関われたのもそうですが、長いこと挑戦していた海外就活も結果を出すまであと少しのところまで来たことも自分の中では相当大きな出来事でした。そういった諸々の出来事を振り返りながら今年の抱負も含めて今後の展望を書いてみたいと思います。続きを読む
posted by けゑ at 04:15| Comment(0) | TrackBack(0) | 雑記