2013年5月5日日曜日

TPで電撃ビリビリに挑戦2


TP_LightningBeam_v001 from notchmen on Vimeo.


TP_ThunderObject test from notchmen on Vimeo.


TPで電撃ビリビリ系、大体ものにしたかな~。 とりあえず、この辺にしといて後は実践にしよう。
一つ一つ組み方、解説していきたいところだけど、 長くなりそうだし、粗でてきそうだしパス。
vimeoにもリンク張っていますが、igouさんのplasmaToolを参考にし自分なりにあれこれ組みました。
こちらにも→https://vimeo.com/65464758参考になるデータ上がってそうなのでリンク張っておきます。

▼久々のTPで、今回学んだことを順にメモ

1、Iteratorの使い方
 いつもIterator使うとき、ダイナミクスの中で完結していたが今回メモリでNumberを保存し別ダイナミクスで調整していった。これで、1つのダイナミクスをシンプルに組む事ができた。


2、パーティクルラインををベジェカーブで制御
 こちらは、ポイント数に合わせたベジェカーブ式を入れるだけ。→こちら









 二項係数はこちらより










5つのポイントの場合→(1-t)^4*V1 + 4*t*(1-t)^3*V2 + 6*t^2*(1-t)^2*V3 + 4*t^3*(1-t)*V4 + t^4*V5
とTPのエクスプレッションノードに入れる。
こんな感じに制御できる↓↓

















 現在LightningBeam_v001のベジェ ポイントはパーティクルで置いて制御しているのだが、現状プロシージャルでベジェ ポイントを減らしたり増やしたりできていない。
二項係数の関数があればと思ったが存在しないしつくれない。


3、maxのノイズコントローラーを使う

TPでは、noise系のノードがないため、稲妻のようなものは高度なエクスプレッションでの表現が必要と思っていたが、 ノイズコントローラーを使うことで表現できる。これは、思いつかなかった。
いや~igouさん感謝。おかげで、time to Valueノードの表現が膨らんだ。



2013年4月21日日曜日

TPで電撃ビリビリに挑戦



iGouさんが、すごい良い感じの電撃ビリビリ作っていたので,久々のTPを復習しつつ挑戦してみた。


やっぱ、むずいっす。。。
駄目だ、どうしよう。。iGouさんの記事を待つことにするか^^やり方全く違うと思うけど。
一応、どなたか突っ込んでくれることを期待しつつデータ添付!!


max2012 TP5
データはこちら

2013年4月14日日曜日

AEエクスプレッションメモ


▼渦巻きながら上昇
h=thisComp.height/2;
w=thisComp.width/2;
b=50; //浮力初期値
r=time*100; //渦の半径
x=Math.cos(time*360)*r+h;
y=Math.sin(time*360)*r+w;
z=time*b;
[x,y,z]

2013年3月20日水曜日

プログラミングを勉強しようと思ったときの俺へ

まず、結論から。
「具体的に、何か作るものはあるのかい?」と自分に問い、パッと答えられないなら今やるときではない。
やることは、いっぱいあるのでプログラミングの勉強は優先順位を下げる。
ちなみに、プログラミングの大まかな基礎や流れを知り、時間かかってもある程度書けるのが大事。
そうしないと、いざ必要になったとき全く対処できないと思うからね。

なぜ、こういうことを記事にしようかと思ったのは、またプログラミング熱が出てきたからだ。c++ガンバろとか考えている。
後、pythonも。。ただでさえ覚え悪いのに、好奇心だけは、一丁前。どうせ、闇雲に勉強したってグダグダになる。
ここ三年くらい、勉強しては挫折して、、の繰り返しだ。まあ、おかげで簡単なものなら書けるようになったが。
だけど、書き続けないとほとんど忘れるんですな。なので、必要になったら大まかな基礎や流れを知ることで、後は辞書片手に書いていけばよいではないか。仕事でバリバリ書くわけでもないし。

そのプログラミング熱が冷めたのは、これを読んでからかな。今まで、プログラムはどういう仕組みかと中の中まで気になって調べようとしてたのに対して、一線を引く事ができた。なかでも、その記述がこれ。 

「そのオブジェクトがどう動いているかという情報は必要ありませ ん。あなたが何も知らなくても、ライブラリが勝手にいいように動作してくれ ます。あなたが知らなくてはならないのは、そのライブラリの使い方だけです。」

と、プログラマーでない限りオブジェクトの中まで調べる必要ないよ俺。まあ調べてないけど。そういう意気込みではあった。
とにかく、今は自身もオブジェクト指向的な思考でがんばろう。リンクにある発明者ではなく、発見者という考え。そして、発見したもの混ぜて発明者となろう。

てな感じで、久々更新。って今年一発目かい。こんな下らんことをづらづらと。。
去年はTPバリバリだったな~。
プログラミングよりTPやら使って、画作ってけ俺!

2012年12月29日土曜日

「TPで障害物を避ける」シリーズpart3(最終回)


今回は、障害物に奥行きを与え、Objパーティクルが障害物を避けるためのターゲットポイントの位置を調整しました。

ターゲットポイントの位置はClosest Point等のちょっとした数学、算数を使いながら求めていきます。Closest Pointについては、以前の記事で触れました。

こういった内容で進めていきますが、ノードの組み方を説明していくと時間がかかってしょうがないので考え方だけを記事にしていけたらと思います。

はじめに、完成動画をご覧ください。


完璧です。と言いたい所なのですが、障害物が複雑に複数配置されていると破綻してしまいますorz
今回はそうならないように、障害物を配置していますw


下図が今回調整した大まかな点になります。

















前回から障害物を変更し浮き上がった問題を調整するといった感じです。


では、どのようにターゲットポイントの位置を調整していくかを簡単に図にしました。
アプローチは、色々あると思われますがチュートリアル通りに行いました。











このような感じでターゲットポイントを設定しています。

③の式は自身手こずったので取り上げます。
式だけ見ると算数なんですよね。これ見てパッと理解できず算数力のなさにへこみました。
基礎筋トレしていかないと、筋力が全く足りないです。












最後に、今回はノードの構成というより何をやっているのかに焦点を当てていきました。
こういう何をやっているのかがある程度わかるとすんなり進むと思います。

これでようやく、Joe Scarr氏のDVDSquirlArt CROWD SETUPSをほぼ終えました。
最初このチュートリアルに入ったとき、ノードの構成&エクスプレッションをみて絶望的でしたが、時間かけて少しづつ進めるうちに理解できるようになりました。そして、多くを学ぶことができました。
これまでを見るとわかるとおり数学が多く使われています。
ツールはどんどん新しく変化していきますが数学は変わりません。
と、どこかの本に書いてありましたw
なのでこのチュートリアルは数学を学べるという意味で強く、おススメしますw 

もう一つの感想として、このシステムを完璧にしようとすると、キリがないですw
これは、どのシステムにもいえることかもしれませんね。
自身が大きなシステムとかプログラムとか組んだことないからわからないですが見極めも肝心だと思いました。やっていると、どんどんアイデアが浮かぶものです^^あーしたい、こーしたいと。

このチュートリアルでも完璧なシステムに達していないと思います。実際、障害物の配置によって破綻してます。

そこで、SquirlArt CROWD SETUPS最後のflowField 2Dの項目があります。
これはスプラインでパーティクルを誘導するといったアーティストよりな方法をとっています。

なので、全てをプロシージャルにするのは気持ちよいのと思いますが、見極めが肝心ということも勉強になりました。




 

2012年12月11日火曜日

TPで2直線の交点を求める

前回に続き、数学ネタです。
前々から紹介している、こちらをTPでやってみるって感じで進めます。
もう、リンク先見たほうが早いと思いますが。。


図①




















はじめに、線分AB上の点を求める式です。
前回の式と同じです。


TP式①-- Apos+(unit(AB)*length(AP))

今回もベクトルAPを求めていきます。
図①を見るとわかるように、ベクトルAPは、点Aから直線CDの最短距離ではありません。
前回は外積で最短距離求めていきました。
今回も、前回とちょっと使い方は異なりますが、外積を使い求めていきます。

図②


















ざざっと図にしてみた。
直線CDに対し、直線ACとABの外積を求めると青線、赤線が求まる。
この青線と赤線、二つの比率がベクトルAPの大きさとなる。
つまりTP式①のlength(AP)となる。






























いつものように後半、内容スカスカ!?
いつか自分で記事見直したときに調整します。
さらば。サササ、、、--

2012年12月8日土曜日

TPで、任意の座標からもっとも近い線分上の点を求める

ちょっとタイトルが長くなってしまいました(汗)数学での良い言い回しとかありそうですが。。。
英語では、Closest Pointと言うのですかね?
ここで、躓いてたらいかんので画像でどういった事か説明します。

図①



















といった感じです。
点A,B,Cのベクトル値は確定してるものとして進めていきます。
今回は点Pを求めるにあたって、外積を使い求めていきます。
内積でも、求められますが 外積で求めていきたいと思います。
理由は、外積だと上で求めたものをちょっと応用すれば直線同士の交差点も求められます。
こんな感じです。 すばらしい!
内積だと、これは無理かな~と。すみません、憶測です^^

では、早速やっていきます。※関数とかTP用の表現を使っています。


はじめに、線分AB上の点を求める式です。こちらにも書きましたが復習です。

図②



















TP式①-- Apos+(unit(AB)*length(AP))

ベクトルAとABは、わかっていますので、ベクトルAPの大きさがわかれば、ベクトルPが求まります。



では、ベクトルAPの大きさを求めていきます。
わかりやすいように、辺d,e,fを割り当ててみました。
ベクトルAPの大きさがfということですね。

図③




















ピタゴラスの定理から、fを求めるにはeとdが解ければ求まりますね。


TP式②-- f = sqrt(d*d-e*e)


これで、ベクトルAPの大きさは求まります。
後はeとdを埋めていくだけです。

dの方はベクトルACの大きさを求めればよいので、求まります。
さてeですが、ここで外積を使います。

TP式③-- e = length(AB x AC)/length(AB)
※TP式③のベクトルABの大きさは、1でもなんでも揃っていれば良いらしい。

式の参考

こちら2Dでのある点から直線までの距離より

全ての値の準備ができたので、TPに組み込んでいきます。
上記の三つのTP式を組み込みました。
































さてさて、これの使いどころはいつになるのやら。。
近々公開かな。