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軸の正方向に出るので、動く乗り物でも、問題なく使えます。(常に変化している現在の向きと大きさをかけるとかすればできるのかもしれないですが。)
2014年06月01日
メモリー機能実装w

なんかね、どうでもいいような気もするけど><
メモリー機能実装してみましたw
なんか電卓並みになってきたぉw
しかも、ボタン増やしたので、100個のボタンのスクリプト総入れ替え^^
だらだらと、なんとなく全部入れました。
左の一番上のボタンがメモリーになっています。そのときのボタンの状態を記憶します。というよりも、実際は、パネル上のボタンを押して、その状態を本体に送るときにこのボタンにも同じデータを送っています。
そして、この左上のボタンを押すと、そのすぐ下のボタンにその状態が記録されます。
そしてその左の真ん中のボタンが押すことで、メモリー実行になります。また、ボタンの色つけないとなんないからめんどいんだよねw
思い付きが思い付きを呼んで、メモリまでつけちゃいました。ま、実質的には、そのときのボタンの状態を知りたいので、メモリー実行のボタンに、オーナーセイでそのときの状態をリストからストリングにキャストして、しゃべらせるかな。
左の一番下のボタンがメモリクリアです。
リスン使いたくないから、いちいちオブジェクトと再リンクしないとだけど、HUDにするとか、一般的なボタンにするなら、独立させるしかないけどね。とりあえずで、作ってみたら、どんどんめんどくなってきたwww
2014年05月30日
10個のパラメータ変化

m1 パーティクルの加速度 <-m1,0.0,0.0>
m2 噴射するときの最小スピード 0.1+m2
m3 噴射するときの最大スピード 0.1+m3
m4 パーティクル発生の限界の角度 DEG_TO_RAD*(1+m4)
m5 パーティクル開始時のサイズ (0.05+m5*0.05)
m6 パーティクル消滅時のサイズ (0.05+m6*0.05)
m7 1回の噴射あたりのパーティクル生成数 2+(m7*4)
m8 パーティクル開始時の透明度 0.1+(m8*1.1)
m9 パーティクル消滅時の透明度 0.1+(m9*1.1)
m10 1つのパーティクルの寿命 0.1+(m10*0.1)
あとは、少し灰色にしました。これで、少し長い排気筒でもなんとか適当なものを選べそうです。開始時のサイズと消滅時のサイズは同じ方がいいかもね。
あくまでも、ボタンは0~9までの整数を送るだけです。本体側で上のように調節しました。
2014年05月25日
結局100個にしたw

基本的なスタイルが簡潔なので、ボタンを100個に増やしてみました。
大きさも小さくしたら、ちょうどいい感じ。要するに普通に立ってみても視界にちょうど入る感じでグッドです。
ボタン機能は単に、0~9までの整数を送るだけなので、仕様がすごく簡単です。あとは、本体の方で調節すればいいので、やっぱいいわこれwww
まぁ、最初100個のボタンにスクリプト入れるのがめんどいけど、あとは、本体の方で調節するだけなので、すごく楽です。
『パーティクルの加速度』と『噴射するときの最大スピード』は、本質的に違うのが、この実験でよくわかりました。後のほうは平均値という感じで、ばらけて噴射してくれます。
まだ、100に増やしただけなので、おく深いところまでは追求できてませんが、いろいろと楽しめそうです。
ま、自分でスクリプト書く人じゃないとこれあげても役に立たないし、そもそもスクリプト書ける人ならここに書いた仕様ですぐ作れるしww といういつものジレンマww
ま、開発用機材ということですな。
2014年05月25日
パーティクルボタン^^

別にパーティクルだけに限らなくて使えるのですが、ふと思いつき、同時にいくつかのパラメータ変化させたのが見たいなと思って作ってみました。
今までは、ひとつのパラメータ、たとえば『パーティクルの加速度』だけを変化させたものを幾つか並べてその中で、最適なものを探すという感じだったのですが、同時に、『噴射するときの最小スピード』と『噴射するときの最大スピード』を変化させた場合どうなるかとか、同時進行的にいくつかのものを変化させたものが見たいなと思って作りました。横一列10個のボタンで、左から0~9まで変化させられるものを、5種類とりあえず並べてみました。最初はなんとなく、いちばん左のボタンに右側50個のボタンに送るものを指示したものを入れ、一発で変化させようかと思っていたのですが、右側のボタンは単純に、0~9までとして、本体の方で、それに0.5をかけるとか対応させた方がわかりやすいなと思って、現在は、いちばん左のボタンは使っていません。
上から、パーティクルの加速度、噴射するときの最小スピード、噴射するときの最大スピード、パーティクル発生の限界の角度、パーティクルサイズの5種類の変化を見ています。
今回はエンジンの排気のテストなので、パーティクル発生の限界の角度もちいさいものに絞って、変化させています。それに対応させる為に、本体のスクリプトの方をいじらないとならないのですが、現在のところ、これがいちばんわかりやすいかなと思っています。
慣れれば10種類ぐらいを同時に変化させて見れるのがいいのかもしれません。画面にいっぺんに入ったほうが作業しやすいので、ボタンももう少しちいさくなるかもしれません。まぁ、単純にボタンの役目しかしていないので、大きさは関係ありません。
仕組みとしては、5列のうちのどれかのボタンを押すと、その列の他のボタンが白くなり、押されたものに色がつきます。本体の方はデフォルトで基準値を決めていれています。それぞれの列のボタンを押すことで、そのパラメータの値が変わり、同時にパーティクルが発生するように作っています。
まだ、今日作り始めたばっかなので、どれくらい役に立つか分らないのですが、同時にいくつかのパラメータを変化させたものを見るのには最適だと思います。

本体タッチで、ボタンは全部白になり、パラメータも初期値にもどり、パーティクルが止まります。
2014年05月17日
少し光明><

普通に TargetOmega の回転がよく分らなかったのですが、やっぱ、単にベクトル軸を考えればいいだけの話でした><
llGetRot() 考えたりとか、余計なこと考えなくて、原則に戻って、三角関数でベクトル軸を出すだけでいいのでした>< やっとわかったよ>< 遅すぎだぁね>< 図はZ軸に沿って-120度回転させたものの、X軸(赤軸)に沿って回転させる場合、単に <-1,-llSqrt(3.0),0.0> これだけで、赤軸に沿って回転できます。きょうイライラしながら半日かかってやっと実験終ったよ>< 回転の強さは、この軸自体と、次の値どちらでも変えられます。(30度の直角三角形なら2、1、ルート3が使えます。それと世界角度で見てます。)
2014年05月14日
3部作の最後完成でつ><

ここんとこ、集中してまとめました^^
この3つで、現在のわたくしの飛行機スクリプトのまとめでし^^
どれも、乗りやすさ第一に作っています。是非とも遊んでみてくだされ。
ねこねこ屋 Healy(140,191,158)
2014年05月13日
バードプレーン動画アップ
久しぶりの動画だぉ。
なんか苦労した。1時間以上かかったかにゃ><
今、飛行機で標準装備できるものとしては、
①カメラ変更
②色その他の変更
③操縦のゲストモード
④場合によっては車などの他のモード搭載
なのですが、バードプレーンでは、垂直上昇、垂直下降モードがあるため、カメラとその他のモード搭載はしておりません。色もかなり難しいので、やめましたw ってことはゲストモードだけかにゃ。
あ、キャノピーは飛行中でも開閉できます。車輪の有無は自動にしました。
水平を出すのは、上昇か下降のときに水平が最大になります。そのまま、飛べば水平になります。細かく言うと、垂直の始まりと終わりのときでも、水平化の度合いを変えています。ともかく、かなり細かいところまで調整しました。
飛行機は以上の3部作で一応キリがいいかな。バードプレーンはもう少ししたら、売りに出します。ここのところのわたしの飛行機についてのスクリプトのすべてはこれぐらいでつ。是非とも3機そろえて味わってくだしぇませませ。
2014年05月13日
鳥型垂直上昇(下降)機

例年の製作ペースでいくと、今ぐらいの時期にひとつかふたつぐらいしか作んないんだけど、ま、大分前から手着けたままのがいくつかあるからね><
ということで、鳥型の垂直離陸機でつ。

ホバリング中も羽ばたきます。
似たような、飛行機のパラメータの設定でも、プリムの大きさとか、種類によっても挙動が変わってくるのがおもしろいね。
この鳥さんはおおまかな設計は2~3年前に考えてたんだけど、なかなか手がつけられなかったです。
鳥っぽくて、垂直上昇・下降ができます。
飛行機のパラメータの設定もかなりこまかくやりました。飛行機中は、ほぼ落下なしで、エンジン切るとすごくゆっくり落下します。ヘリみたく、空中に止まれます。その間は、羽ばたきますw
2014年05月10日
car モードの使い方^^

スーパーカードコガと違って、モード切替でエンジンを切ってしまうのですが(くまちゃん仕様)、それでも、car モードで助走してから、テイクオフするとかっこええよww

この翼がバサッと広がる感じがいいのよね^^

ランディングのときも、同じように着陸地点に近付いたら、

一気にcar モードでランディング。ピタット止まれます><

あと、ゲスト用のセカンドシートタッチも、立ったら消えるモードの仕様を使って、運転中でもタッチして

あとは立ち上がると、消えるので、消す手間がはぶけます^^ 以上、こんな使い方もできるでした。このトライアングルジェット、ほんと乗りごこち快適です。自分が今まで作った乗り物の中でも、一番です^^ もち、人によってあの、エクセリオン(古いビデオゲーム)的な流れる感じが嫌いな人もいるかもしれませんが、自分は大好きですww