2012年4月22日日曜日

TPパーティクルカラーメモ

ざっと、TPでのカラー周りのまとめです。
早く次いきたい^^

以前記事で紹介してしまいましたが、VertexColorMapを使用しての、パーティクルのカラー調整は極力避けるようにしたいと思います。
なぜなら、TP Variation Texmapが使えなくなるためです。
使えなくなる理由としては、仕様によりTP Variation TexmapはparticleからInputにvertexColorを接続しなくてはならないからです。
というのは、既にカラー調整をVertexColorでやっていた場合,Inputがすでに埋まってしまっている状態となりますので、どちらかを選択するしかなくなるのです。
色のバリエーションを出すTP Variation Texmapが使えなくなるのは惜しいです。
ここは、もう特別の理由がない限り、VertexColorMapを使用しての、パーティクルのカラー調整は避けます。


そこで、VertexColorMapを使用しない二つの方法を考えました。
※これらはパーティクルのある変化(age等)による色、透明度の変化を合わせて考えたものです。


シェイプの形がStdShapeのものでよい場合。(Facing除く)
結論から言うと、色、透明度の変化を合わせて表現できるのですが、シェイプの形を変更することはできません。工夫次第かもですが。。
例えば、色と透明度(白黒)のグラデーションマップを2つ用意し、diffuseとopacityに割り当てます。
TP内の設定で、uvwの0~1のアニメーションをINputします。
これで、 色、透明度の変化を合わせて表現できます。
ですが、こちら のようにアルファを使ってシェイプの形をとることはできません。
なぜなら上記で、uvw値が決められているためです。
シェイプの形が、デフォルトで問題ないのであればこちらの手法で行くとよいと思います。


※注意点として、上記の方法だとfacingタイプは使えません。

又、この方法はStdShapeにしかできないようです。
Geom InstanceだとuvwのInputがないからです(泣)

シェイプの形を自由に表現したい場合
こちらは好きなシェイプでも良いし、上のことは全てできると思います。
こちらの考え方としては、のuvwを変化させるのと比べて、マテリアルのカラー自体を変化させ、それをパーティクルに割り当てるという考え方です。
ただ今のところ面倒くさい感があります。カラーアニメを用意しなくちゃならんのです。
完全なプロシージャルな手法ではなくなります。詳細はこちらをご覧ください。
これは良い手法があれば確立すれば、あまり問題ないでしょう。(例えば、下に書いてある問題など。。)

後、新しい発見としてmaterialTimeを使用した場合、トラックビュー(カーブエディタ)を開いてレンダリングするとmaxが落ちるというのを発見しました。

問題
3dsMaxのマップで三色カラーをフェードしながら変化させる良い方法ないですかね?
二色ならmixマップでよい感じにできるのですが。。
僕としては、カラーにキーを打つのが感覚的にわかりづらいので。。




2012年4月19日木曜日

TPでビューポート上のパーティクル表示量を制限する。 #TPJP

これで、ビューポート表示に関しては解決ですかな?
--追記 2012/04/19
グループの構造が逆でした。
渡されたグループが子になる設定です。



画像



ビューポート表示↓↓

画像



レンダリング表示↓↓


画像



元ネタはCGTalkより

Make your group not display anything in the viewport. Then make a child group that does display something, and make a dynamic set that sends a percentage of the original group to the visualization group. Since the child group gets all the behaviors of the parent group, this would work if the viewports are the only problem. If the calculation of the system is what's really the problem - try partitioning it.


2012年4月16日月曜日

TPでO Material Timeを使いカラー&透明度を変化させる

この前、Std ShapeのFacingによるカラー、オパシティの変化をVertexColorで表現しました。
ですがVertexColorでは、カラー、オパシティの変化を組み合わせて表現することが難しいです。
ですので、他の手法はないかと考察しました。

そこで、O Material Timeというものを発見しました。

--リファレンス意訳
パーティクルと組み合わせてのアニメートされたマテリアル、テクスチャは、
標準の3ds Maxのツールでセットアップするのに、どうもやりにくく手間のかかるものです。
そういうわけで、このNodeは何かと便利である。
具体的には、個々の粒子のアニメーション素材を制御することができるということです。。

3ds Maxのパーティクルシステムでは、複数のパーティクル上に、異なるアニメーション時間に異なるマテリアルを視覚化することはできません。
よって、ビューポートの表示は、レンダリング結果とは異なります
。あなたの意図に合った、結果を確認するにはレンダリングする必要があります。

----


ふむふむ。どうりで、てこずったわけだ。
フォーラムでも、「頭を悩ます表現です!」っぽいこと書いてあったし。
PFやAEのPerticularを知っていたら、簡単にできそうなものなのですがね。


何はともあれ、これでパーティクルエージによるカラー、オパシティの変化を組み合わせて表現することができそうです。

まず、こういうテクスチャアニメを用意しました↓




これを元に組み合わせたダイナミクスセットです↓
※リニアでテクスチャアニメを用意したので、TP内でアニメのグラフ操作が行えるようにしています。


画像


Material Timeの各パラメータメモ
こちら


最終結果↓

2012年4月15日日曜日

TP Variation Texmap リファレンス意訳

TP Variation Texmap

TPは maxで組み立てられた、群集、重いオブジェクトを助けるために多くのツールを提供します。
加えて、一組のマテリアルを定めることができるTP Multi/Sub-Objectマテリアルの他に、
TP Variation Texmapは、そのマテリアルの中により多くのバリエーションをもったテクスチャーと色を加えることができます。

TP Variation Texmapによって、シーンの一つ一つのオブジェクトは異なった色でレンダリングをすることができるでしょう!
このテクスチャマップの効果は、レンダリング時にしか見ることができず、ビューポートでは見ることができません。

このテクスチャマップはmaxの標準マップのようにアサインすることができ、選ぶことができます。
いくつか存在するマテリアルスロットの中からTP Variation Texmapを選び追加します。


このマップのコントロールは理解しやすいです。そしてテクスチャマップと組み合わせ、お目当ての効果にすぐに達成することができます。
説明されたようにTP Variation Texmapを動作させるには、パーティクルIDを提供させることが必要です。
これは、頂点カラーチャンネルを介して行われます。
パーティクル ID をTP Variation Texmap に提供するには、Geometry インスタンスの IDS-Vertex Color入力を使用します。
このカラーチャンネル情報がないとTP Variation Texmapは動作しません!


TPでParticleAgeを使いVertexColorMapからOpacityを変化させる

前回はパーティクルエイジに基づいてパーティクルカラーを変化させた。
今回は、パーティクルオパシティを変化させる。

大きな違いは、VertexColorMapをDiffuseにアサインしてたのを、Opasityの方にアサインしなおしただけである。


画像






2012年4月11日水曜日

TPでParticleAgeを使いVertexColorMapからColorを変化させる

以前、Twitterで質問しましたFacingにカラーが上手くのっからない件についてです。

--------------------------------------------------------

TPでこのようなことがやりたいのですがShapeをFacingにすると上手くいかないです。どなたかわかる方いますか?ん~cubeだと上手くいくのですが。。 #TPJP

--------------------------------------------------------

---追記2012/04/14---
上のリンク動画を観るとわかるのですが、はじめはStd Shape内のOverLifeをチェックすることで、エイジによるカラー変化は上手くいくと思いました。現にCubeやSphereなどでは上手くいきます。
どういう問題かというのは、一度、Facingにマップを張ってみると良いと思います。
意図しない右斜めグラデーションになるでしょう。

※ついでにいうと、ShaderBasicPramatersのFaceMapをチェックすると綺麗に面に張ってくれます。
しかし、これはUVWを使用して張っているのではありません。ですので今回の表現には適当ではありません。
FaceMapの詳細はヘルプを。

---以上---



一応、別の方法で、カラーをエイジによって変換させることはできました。
パーティクルエイジによるカラー変化ならPFだと簡単にできるんですがね。
とはいっても、PFではパーティクルのサイズやスピードによるカラー変化は、さくっとはできないでしょう。
TPなら、下記をちょこっといじるだけでできます。
今回はやりませんが。。
後、valueToTimeとか前にやってるので適当に説明してます。すんません。



画像


次回は、エージによるオパシティについて考察してみたいと思います。
超簡単そうだけど、パっとできなかったので次回にしました。。。

--



2012年4月8日日曜日

TPで、グループに分けられてからのエージを取得する方法

今回は、プーさんのブログを参考にしています。
そこで、問題になっていたのが、パーティクルを徐々に小さくさせる方法です。
この問題をTwitter上で拝見し、プーさんのブログにあがるまでは、パーティクルを徐々に小さくするのは簡単では?と思いました。いつものようにパーティクルエイジを絡めればと。その詳細は米岡さんブログにて→こちら


ですが、今回はそのままエイジを使えない二つの問題があります。

①ObjParticlでパーティクル化されているので全ての破片が同じエイジを持つということ。
これでは、時間が進むにつれパーティクルを小さくすることができても、全ての破片が均等に小さくなります。

②パーティクルの発生から、スケールをかけるのではなく、ある条件を元にスケールが開始されるということ。
条件を得るまでエイジは増え続けています。
これでは、条件を得たころにはエイジは未知数になっているため扱いづらいです。


まず、この二つの問題をクリアするため、エイジを一旦リセットし、条件を得たものからのエイジを開始するようにしました。
これで扱いやすくなります。エイジの正規化みたいなものですかね。

エイジを設定しなおしたことにより、いつものようにパーティクルが徐々に小さくなるような設定が可能となりました。










画像



















TPのNodeメモ

3dsMaxのプラグイン、ThinkingParticlesのノードのメモになります。随時更新しながら纏めていければなと。。。
全体を見やすくしたいのですが、ブログの仕様上編集しにくくなるので、ご理解ください。

※プログラム等、ペーペーな僕の解釈ですので間違っているところなどあればコメントください{%ピクトハカセhdeco%}

��------------------------------------------------
■Conditions(条件)


・C Distance:○○と○○の距離の範囲を条件とする。

例)position1にパーティクルの位置をつなぎ、position2にオブジェクトの位置をつなぐ。
C Distanceプロパティのradiusの値により、パーティクル、オブジェクトからの範囲を設定する。
二つの距離がradius1からradius2までの範囲に達したときに真を返す
又、 Distanceはposition1からposition2の方向を得ることも出来る。※向きはposition2からposition1の向きになるので注意
距離も得ることが出来る。(距離をスピードにつなぐことにより1秒で目的地に到着する。スピードの式として距離/秒なので。)

・Particle Age:パーティクルの期間を条件とする。

注意)RelativeのTime1,2の値は、lifeSpanで決定する相対値で0~100の範囲になる。
だがTime1,2の値にInputで値を入れると0-1の範囲で相対値が決定される。

・Threshold:○○と○○の値の範囲を条件とする。insideをcheckすることでThreshold1,2の範囲内か外かを決める。

・InMesh:メッシュ内部のものを条件とする

・Light:ライトのフォールオフ内を条件とする

��------------------------------------------------

■Operators

□Standard

・Alignment:パーティクルの向きを設定する
プロパティ)
Direction of Travel:移動ベクトルに沿って、オブジェクトを向かせたい場合
User Defined:特定の方向ベクトルを決めたいとき、あるいは、あなたがInputデータストリームTo Position入力を使いたいとき、このオプションは選ばれなければなりません。

・Velocity:向きとスピードを持ったノード

・Particle Die:寿命を設定

・ParamBlock:オブジェクトが持っている値にアクセスできるノード。
例)ピックしたオブジェクトのトランスフォームの各値や割り当てられているモディファイヤの各値にアクセスできる。
  ワイヤパラメーターのような感じ。

・Memory:様々な値を保管し、別のダイナミクスでその値を利用できる。

□Dynamics

○follow系ノード
 ・BringTo:パーティクルを引き寄せるときに使う。InFrameで何フレームで引き寄せるか
 ・Follow:任意のオブジェクトに動きをあわせたいとき
 ・Orbit:あるモノの周りを旋回する
 ・Position Follow:任意のオブジェクト向かってにパーティクルをついていかせたいとき。
 ・Path Follow:パスに沿って
 ・Surface Follow:サーフェスに沿って
 ・PAttach:パーティクルをあるパーティクルにアタッチさせる
・Force:影響力の強さを設定できるノード。
・StdForce:maxにあるフォースヘルパーを使用できるノード。
注意)スペースワープのバインドをTPヘルパー(シーンにあるxTPの事)に行わなければならない
・Friction:摩擦
・Rep.Bounce:反発


□Generator

・Born:一点からパーティクルを発生させる。パラメータの少なさから、Position Bornを使えばよいと思う。



・Position Born:一点からパーティクルを発生させ、発生位置をコントロールできる。多くのプロパティがあり、これで基本のパーティクルアニメーションがつくれる。PFでいうStandardFlowが一つのノードとしてある感じ。

プロパティ)
Pistol Shot:一回の呼び出しで発生するパーティクル数。
>Per Call:呼び出されるたびに発生する。

mass:質量。例として、衝突するときなどに使われる


・Obj.To Particle:オブジェクトをパーティクル化したいときやその逆

□Shape
・Geom Instance:インスタンスオブジェクトを作成
・Shape Blend:シェイプをスケールでブレンドする。黒がスケールゼロと考える。ダイナミクス内のノードの順番によってBlend In,Outが決まる。

□Material
・Paint:ピックオブジェクトにパーティクルでテクスチャを描く
・Material Time:個々のパーティクルにアサインされたマテリアル(アニメーション素材)を制御することができる。
プロパティ)
User Defined:Material Timeのフレームにある絵を表示する。
OperatorTime:O Material Timeに値が入ってから。TimeBaseオペレーターによりTimeの値を変化させ、時間を伸縮することができる。
Particle Age Absolute:パーティクル発生からアニメート開始となる。
Particle Age Relativ:LifeSpanの相対値として、Material Timeによってアニメテクスチャの寿命が決まる。lifespan>Material Timeなら寿命が延び、逆なら縮む。



□Initiator(値を発する起因的ノード)
・PPass:一つのグループの任意の値を取り出せる
・PPassAB:二つのグループの任意の値を取り出せる
プロパティ)
All:GroupAとB共に全て
Distance:GroupAとBの距離で判断。その中で最も近いやつのみと最も遠いやつのみというのも選べる。

・PSelection:ピックしたパーティクルを取り出せる
・Iterator:繰り返し値を出力
プロパティ)
Count:繰り返す数



□Tools
CollisionMap:コリジョンしたところにマップを作成しマップ出力する

□ShapeCollision
・SC:



□Reference
・Set Ref.:particle Fromeをparticle Toへ参照させる。
・Get Ref.:インプットされたパーティクルの参照先を読み込む
��------------------------------------------------


■Helper


□Standard

・node:シーンにあるオブジェクトをピックできるヘルパー

例)オブジェクトやヘルパーなど指定したものから、パーティクルを発生したい場合はH Nodeを追加しピックする。
 オブジェクトの場合、発生場所をを詳細に設定したい場合(ボリュームからの発生はH Volume Pos)はH Surface Posを追加し、H NodeとNode同士をつなげる。んでH Surface PosとBornオペレータのPositionをつなげる。

・Random:ランダムな値を取り出す。

プロパティ)New Value Per (~あたりの新しい値)
       Call:呼ばれるごとにランダムに値を呼び出す
       Frame/Iteration;フレームごとにランダムに値を呼び出す

       animation:初めにランダムに呼び出された値を一定に与える

・Get Direction:ある方向(alignment)を得て、ある軸の方向をアウトプットする。alignmentとは正規化されたベクトルである。つめり方向のみを持った値ということ。

・Point3:x,y,zの3つの値を持つノード


・Intersect:あるパーティクルから、あるノードオブジェクトにある方向を持たせrayを飛ばす。パーティクルとオブジェクト(ポリゴンレベル)の距離を測りたいときなどに使う。C Distanceに似ているがポリゴンレベルで値を調査できるというところが、このノードの持ち味と思う。

)プロパティ
 speed:Rayの速度
 speed as ray length:ONにすると交差点までの距離を速度とする
 two sided:ONにすると両面が使えるようになる。法線が逆だと交差点を判定できないからこれをチェックするのだと思う。


・timer :パーティクルの時間を計るストップウォッチ的なもの。パーティクルエイジにも使える。
計算されている全てのパーティクルと、その時間を出力することができる。

・value to time:スカラー値を時間値に置き換える。時間地に置き換えることで、キーフレーム調整が可能。


□Position

・Path Position:パスに沿って配置

プロパティ)
units 絶対値単位で配置する。
relative 始点を0、終点を1とし配置する。0.5なら中心。

・Surface Pos:オブジェクトのサーフェイス(頂点、エッジ、面)からパーティクルを発生させたいときなど

注意)inputがnodeのみだと、outputのpositionの値はランダムに1フレづつ別の場所(頂点、エッジ、面)に割り当てられる。inputにparticleがあると、outputのpositionの値は固定される.(つまりパーティクルを受け取り、その一つ一つのパーティクルにポジションを与えている)


・StdEmitter:PFのエミッタータイプが使える






2012年4月6日金曜日

TPのDataChannelでFumeソースのRadiusを操作する

TPのDataChannelはFumeやAfterburn、krakatoaでサイズやカラー等のデータを操作できるようです。

今回は、FumeソースのRadiusを操作してみました。やり方は、あらゆるデータのほとんどに共通すると思います。


画像





画像



以前、こちらでの不具合ですが、DataChannelを使用しても駄目でした。こりゃFume側のバグですかね~


TPのマテリアル基礎01

マテリアル周りの基礎の基礎~
なのに、TP variation texmapで大苦戦。
やっぱ、カラー周り苦手だ。
結局あやふや~で終わりました。
どなたか説明できる方ヘルプです{%トホホwebry%}



↓↓TPをシーンに追加した時点で、マテリアルが割り当てられるらしい。

画像




↓↓↓TPでパーティクルシェイプを作成。そして、TP variation texmapを割り当てたマテリアルをStd Shapeに追加

画像



↓↓↓変な結果に。。なんだこりゃ。三角メッシュでバリエーションが分かれてる。しかもなぜか二色。TP variation texmapがどこでバリエーションを取るのかわからないことからかな。

画像




↓↓↓パーティクルをvertex colorにつなげると思ったとおりの結果に。。一旦カラー情報を与えてやらねばならないということ?

画像



↓↓カラー情報といってもパーティクルから与えられる情報はこれ↓↓パーティクルIDかよ。。

画像




↓↓↓TP variation texmapを使わないで色をランダムに、同じようなことを表現してみた。

画像



↓↓結果。これだと理解できる。。


画像



TPのマテリアル基礎01

マテリアル周りの基礎の基礎~
なのに、TP variation texmapで大苦戦。
やっぱ、カラー周り苦手だ。
結局あやふや~で終わりました。
どなたか説明できる方ヘルプです{%トホホwebry%}



↓↓TPをシーンに追加した時点で、マテリアルが割り当てられるらしい。

画像




↓↓↓TPでパーティクルシェイプを作成。そして、TP variation texmapを割り当てたマテリアルをStd Shapeに追加

画像



↓↓↓変な結果に。。なんだこりゃ。三角メッシュでバリエーションが分かれてる。しかもなぜか二色。TP variation texmapがどこでバリエーションを取るのかわからないことからかな。

画像




↓↓↓パーティクルをvertex colorにつなげると思ったとおりの結果に。。一旦カラー情報を与えてやらねばならないということ?

画像



↓↓カラー情報といってもパーティクルから与えられる情報はこれ↓↓パーティクルIDかよ。。

画像




↓↓↓TP variation texmapを使わないで色をランダムに、同じようなことを表現してみた。

画像



↓↓結果。これだと理解できる。。


画像



2012年4月4日水曜日

Rayfire1.57のメモ #RayF

Rayfire1.57のメモ

破片(fragments)を作るためのアプローチは3通りある模様。
1、rayfireモディファイヤで分割
2、rayfireパネルのFragmentタブから分割
3、破壊シュミレーションで分割、というか破壊






■Draw Fragmentsの使い方
Stepsize低いほどカーブが滑らかになる。低くしないと曲がれなくなるので注意。反応しないと勘違いしてしまう。
segmentはstepsize毎の分割数?

■Fragmentation by Shapesの使い方

型をとりたい黒と白のテクスチャ画像を用意する。500*500を超えないように。

addでテクスチャを読み込むと、rfsファイルというのがMax Root \ RfShapes folderにつくられる。

んでシェイプを作成できる。


シェイプが用意できたら、Cut Impact Objectsをおすだけ。型となるシェイプを選択しなければならない!
シェイプのローカル軸に向かって切り取る



■シュミレーションでぶっ壊すときの設定
Demolition geometry シュミレーションでオブジェクトを破壊する設定

depth level 何回衝突の計算を行うか。
depth ratio 割合
time delay 衝突してからどれくらいの時間で割れるか
probability 破壊される確率
material solidity 硬さ。これによって割れ方の大きさが変わる
minimum size limit どれくらい小さい破片を作るのを許すか。数値が低いほど細かな破片が作られる。


■maxが固まったり、落ちたり、maxscriptエラーが発生するとき
・FragmentaitionのIterationsを下げて、Chaos,Detaization,NoiseStrengthを調整してみる。
・rayfireのモディファイヤを何層も重ねて、デタッチしようとすると、エラーもしくは落ちる模様だった。
こういうときは、モディファイヤの下からデタッチしていけば大丈夫だった。つまり一気にデタッチしないということ。


パラメータ参照サイト



TPでテクスチャカラーを頂点カラーとしてパーティクルに焼きこむ方法

パーティクルにマップやカラーを割り当てる方法を勉強中~
なんかパーティクルとuvwが絡むと、よくわからなくなるのは僕だけでしょうか^^
その辺、まだスッキリしてないですが突き進みます。

添付動画は、もっと良いアイデアを盛り込んだり格好良くしたかったのですが、挫折。
手抜き過ぎて申し訳ないです


とりあえず、H texmapColorを使いたかっただけです。

画像



ちなみに逆再生させています。ここもサボりました(汗)