2014年06月02日
そろそろ完成かにゃ?ww

今回の排気筒は外側に少し傾いています。
ということで、三角関数の出番にゃのよww
全体を理解することは出来ないんだけど、少なくとも、2次元的な理解ならできるので、それで、考えていきます。
画面右側がX軸に対して、平行にしたものです。そして左側が実際の車に装備されているものです。3度傾いています。

実際の土地では、X軸の正の方向が東で、Y軸の正の方向が北になります。セカンドライフでものづくりをはじめたときから、いつも、北向きでものを作っています。特に、乗り物の場合は、X軸の正の方向に向かって進むので、乗り物のルートプリムをローカル軸と世界軸を合わせて、東に向くように作るのがその後のスクリプトを扱う上でも、簡単になります。
で、本題に入ります。m6ベクトルという煙の噴射を考えています。これは、単純に m6_1 と m6_2 の合成になることは分かると思います。パーティクルの加速度はx軸、y軸、z軸の強さで表されます。今回は、x軸とy軸だけを考えます。
Sin 3度=m6_1 / m6 なので、m6_1 = m6 × Sin 3度
Cos 3度=m6_2 / m6 なので、m6_2 = m6 × Cos 3度 これはx軸の負の方向なのでマイナスがつきます。

ということで、実際のスクリプトの中を見てみます。三角関数はラジアンで扱うので、DEG_TO_RAD をかけています。
他にも、いくつか前のブログから変更しています。また、間違ってたとこもあったので訂正しましたw
m1 パーティクル開始時の透明度 1.0-(m1*0.1)
m2 パーティクル消滅時の透明度 1.0-(m2*0.1)
m3 パーティクル開始時のサイズ (0.05+m3*0.05)
m4 パーティクル消滅時のサイズ (0.05+m4*0.05)
m5 1つのパーティクルの寿命 0.1+(m5*0.1)
m6 パーティクルの加速度 <-m6,0.0,0.0> (軸が曲がる場合は上のように訂正する。)
m7 パーティクル発生の限界の角度 DEG_TO_RAD*(0.3+m7*0.1)
m8 1回の噴射あたりのパーティクル生成数 2+(m8*4)
m9 噴射するときの最小スピード 0.3+m9
m10 噴射するときの最大スピード 0.3+m10

m1からm10までの値をしゃべるようにしました。これで、最適な値がすぐわかるようになりました。
右側がまっすぐな場合。左側が軸がずれてる場合。いずれも、うまくいきました。
TargetOmega の場合もそうだったけど、回転でも、進行方向でも、ベクトル軸を考えるので、最低限 Sin Cos は使えたほうが楽になります^^
<追記(6月2日)>
そもそも、パーティクルの噴出方向というのは、ローカルZ軸の正の方向に出ます。なので、パーティクルの加速度を使わなければ、3度ずれようが、何度ずれても、正しく、ローカルZ軸の正の方向に出ます。なんか、書いてておかしいなと思ったのですが、重力の影響などの変化のために加速度があるので、無理に使わなくても、大丈夫です><
さらに追記w(6月2日)
そもそも、長いパーティクルだとうまく追尾してくれないので、排気煙としては不可でしたww 長い排気筒のさきに丸い球でも仕込んで、そこから出るようにするしかないみたい>< それか土煙みたいに全体にもくもくと舞い上がるとかね。
<更にまとめw(6月5日)>
パーティクルの加速度というのは、世界軸で計算されているので、動く乗り物とかには使えません。噴射するときの最小・最大スピードは、ローカルZ軸の正方向に出るので、動く乗り物でも、問題なく使えます。(常に変化している現在の向きと大きさをかけるとかすればできるのかもしれないですが。)
Posted by neconeco at 00:27│Comments(0)
│ものづくり