こういうのは、なるべく多く引き出しがあると良いですね。
とりあえず、考えるより引き出しを多くしていきたいです!
後、関数が使えるとこは関数使っています。関数ヘルプ←式の使い方で検索
※スカラー値の変換であれば、Value To Timeノード+Floatノードを使えば、グラフで変換できるので便利!!←詳細は米岡さんのブログに記されています。
今後ノードのパラメータ上でグラフが扱えることに期待。
はじめに、、
ベクトルについて
①ベクトルは方向と大きさのみを持った値
②空間での、あるポイントのワールド位置座標は原点からのベクトル値である
■スカラー演算
●値の範囲を「0~1」に変換。値を正規化する。
---------------------------
Input値
lifespan = 200
age = 0,1,2,・・・・,200
---------------------------
式
age/lifespan
---------------------------
Output値
0,0.1,0.2,・・・・,1
---------------------------
※正規化とは、値を利用しやすくすること。
例えば、範囲が「23~343」のような任意の値を「0~1」の範囲に値を変換し利用しやすくしたりすること。
●値の「0~1」を「1~0」に反転する
---------------------------
Input値
a = 0,0.1,0.2,・・・・,1
---------------------------
式
1-a
---------------------------
Output値
1.0,0.9,0.8,・・・・,0
---------------------------
●任意の数の比率をフロート値で求める
---------------------------
Input値
a = 30
b = 70
---------------------------
式
a/a+b =x
b/a+b =y
---------------------------
Output値
x=0.3
y=0.7
---------------------------
●値の「0~1」を0.5を最大値とし、0.5以上は0に減っていくようにする
---------------------------
Input値
a = 0,0.1,0.2,・・・・,1
---------------------------
式
0.5-(abs(a-0.5)) //absは絶対値
---------------------------
Output値
0,0.1,0.2,・・・,0.5,0.4,0.3,0.2,0.1,0
---------------------------
●三角関数で曲線を表現する
上手く説明できないのでメモです。
sin(a*b)*c+d
a:位相
a=0,1,2,・・・∞
b:周期
c:振幅
d:初期位置
xにcos、yにsinで円を表現することができる。
さらにzに位相(時間など)を加えることにより、上方に向かう螺旋を表現できる。
a,b,c,dにそれぞれ任意の値を入れ、(x、y、z)に上記の式を入れることにより、様々な曲線を表現できる。
もちろんcosでも良い。
パーティクルを動かすというより、パーティクルの配置に使うほうが良いか。。
動かす場合は、Positionオペレータでフレームごとに位置を与えていく感じ。
よってベロシティが簡単にとれないので、パーティクルを動かすには不向き?
ということは、ベクトルで動かすほうが良い?
すみません、すげー基本的なことかもですが混乱気味なのでダラダラと、とりあえずメモしました。
●オブジェクトを地面に転がせる際に回転を同期させる
1軸 degreerad((X_Position)/(Radius*pi))*360
3軸 quaternionを使用
https://vimeo.com/album/2630843/video/80532054
●剰余を使ってエクスプレッションの値を繰り返す
http://sidefx.jp/doc/ref/expression_cookbook.html
■ベクトル演算
●単位ベクトルを求める
---------------------------
Input値
v1(任意の名前) //ベクトル値
---------------------------
式
unit(v1)
---------------------------
Output値
v3(任意の名前) //v1,v2に対する直角のベクトル
---------------------------
●二つのベクトルに対する直角のベクトルを求める。これを外積という。
---------------------------
Input値
v1(任意の名前) //ベクトル値
v2(任意の名前) //ベクトル値
---------------------------
式
v1xv2
---------------------------
Output値
v3(任意の名前) //v1,v2に対する直角のベクトル
---------------------------
●二つのベクトルのなす角を求める。これを内積という。値はスカラー値になるので注意。
---------------------------
Input値
v1(任意の名前) //ベクトル値
v2(任意の名前) //ベクトル値
---------------------------
式
acos(v1*v2)
---------------------------
Output値
v3(任意の名前) //v1,v2のベクトルのなす角(スカラー値)
---------------------------
●ベクトルの加算を用いて、ある二点(A,B)を結ぶ線上に位置するポイントのワールド位置座標を取得する。
ベクトルを加算する前に、v2の値を決める。
①線分ABの単位ベクトル(方向)を取得する。(TPでいうと、点A,Bをポジションとする、DistanceノードのDirection値)
②ベクトルの大きさを用意する。(スカラー値)
③①と②を乗算することで、大きさと方向を持ったベクトルv2ができあがる。
---------------------------
Input値
v1(任意の名前) //ベクトル値
v2(任意の名前) //ベクトル値
---------------------------
式
v1+v2
---------------------------
Output値
v3(任意の名前) //原点から線分AB上を終点とするベクトル
---------------------------
●ベクトルの減算を用いて、ある二点(A,B)のベクトルを作成する。distanceノードがあるのであまり使い道ないかもだが。。。
●反射ベクトル
Input値
v1(入射ベクトル) //ベクトル値
v2(衝突サーフェスの法線) //ベクトル値
---------------------------
式
(2*(v2*v1)*v1-v2)
---------------------------
Output値
v3(反射ベクトル)
---------------------------
■条件式
if(式,真,偽)
例:if(pos.z>50,1,0)→Zポジが50以上なら、真、以外は偽
0 件のコメント:
コメントを投稿