去年に引き続き、今年も「セカンドライフ技術系 Advent Calendar」に参加させていただきました。
去年は、“これぞ技術系!”という感じのディープな内容をご紹介していたんですけれど、今年はその逆で、
シンプル!
カンタン!
ベンリ!
という内容をご紹介しようと思います^^
みなさんは、
パーティクル ってご存知ですか?
パーティクルはコンピュータグラフィックスの技法の一つで、たくさんの粒子に意図した動きをさせることで、シンプルな一枚絵のアニメーションでは表現出来ない、複雑な動きをもった表現を行なうことが出来るようにするものです。
パーティクル・システム - Wikipedia
炎や爆発、煙、火花、雲、霧、水の流れなどの、ゲームのエフェクトでよく使われている技法です。
セカンドライフでも、同様の場面で使用されています。
パーティクルで表現された、雲やハートマーク
パーティクルは見た目が派手なことが多いですので、一度は
わたしも作ってみたい!
と思われたことがあるかもしれません。
でも、実際に作ろうとするとそこには、
スクリプト
という大きな大きな壁が立ちはだかります。
LlParticleSystem/ja - Second Life Wiki
そう、セカンドライフのパーティクルは、スクリプトで作る必要があるのです><
スクリプトはちょっと…
という方にとっては、ここで
終了!
となってしまいます。
でも、魅力的な機能であるパーティクルが、スクリプトが出来ないと全く作れないというのは、悲しいですよね。
そういう風に思われた方はビュアーを作られている方の中にもいらっしゃったみたいで、そんな方々が、ビュアーに素敵な機能を用意してくれました。
それが、
パーティクルエディタ
です!
2016 年 12 月 24 日現在、パーティクルエディタは下記のビュアーにあります。
Firestorm では、2012 年 2 月に公開されたバージョン 3.3.0 でパーティクルエディタが導入されました。
firestorm_maintenance_release_3.3.0_change_log [Phoenix Firestorm Project - Wiki]
Firestorm では、実は 4 年以上前からある機能です。
Alchemy にも、2015 年 6 月に公開されたバージョン 3.8.0 で導入されました。
Alchemy Beta 3.8.0.35816 - Alchemy Viewer - Wiki
Alchemy に付属のスクリプトエディタも、機能は Firestorm の物と同等です。
ただ Alchemy の方は、ユーザーインターフェースがキレイに整理されていて洗練されていますので、分かりやすさという意味ではこちらの方がお勧めです^^
パーティクルエディタは、残念ながら公式ビュアーではサポートされていません。
パーティクルエディタを使ってみたいと思われた方は、サードパーティー製ビュアーの Firestorm または Alchemy を使用してみてください。
(Alchemy のパーティクルエディタのソースコードを公式ビュアーに寄贈するという話はありますので、将来的には公式ビュアーでもサポートされる可能性はあります)
今回は、利用者が多い Firestorm のパーティクルエディタの使い方を紹介します^^
particle_editor [Phoenix Firestorm Project - Wiki]
Firestorm のパーティクルエディタは、下記の手順で開くことが出来ます。
プリムを新規作成する。既存のプリムにパーティクルを追加したい場合は、そのプリムを Rez する。
プリムを編集状態にする。
制作メニューの「オブジェクト」から、「パーティクルを編集」を選択する。
パーティクルエディタでは、パーティクル用に用意された様々なパラメータを変更することで、自分好みのパーティクルを作成することが出来ます。
パーティクルエディタが開くと、プリムからパーティクルが発生します。
これは、パーティクルエディタの設定内容が、リアルタイムに反映している状態です。
この状態でパーティクルエディタの内容を変更すると、その設定がリアルタイムに表示されます。
スクリプトを記述して、スクリプトファイルに保存して…という手順は、一切不用です。
スクリプトを書かなくても、パーティクルが作成出来ちゃいます!
ただしこの状態は、パーティクルエディタが動いているビュアー上だけの疑似的なものです。
他の人からは、そのパーティクルは見ることは出来ません。
実際のインワールドのオブジェクトに反映させるためには、エディタで作成した内容を“スクリプトファイル”の形でプリムの中に入れてあげる必要があります。
パーティクルエディタで作成した内容は、エディタ内の「Inject」ボタンを押すと、編集中のオブジェクトの中にパーティクルの仕組みが記述されたスクリプトファイルの形で直接出力されます。
たったこれだけで、インワールドで動くパーティクルが作成出来ます!
「スクリプトは全く分からない」という方も安心の、カンタン操作です。
これなら、誰でも出来ますよね^^
またパーティクルエディタでは、「Copy」ボタンを押すと、スクリプトファイルに書き出される内容を OS のクリップボードにコピーすることが出来ます。
こちらの方法を使うと、パーティクルエディタで作成した内容を、自分のスクリプトに組み込んで使うということも出来ます。
スクリプトだけでパーティクルを試行錯誤して作るのは大変ですので、スクリプトが分かる方も、パーティクルエディタを活用されると手間が省けていいと思います^^
パーティクルエディタを使った大まかなパーティクルの作り方は、分かりました。
では次に、パーティクルエディタで出来ることを見ていきましょう。
パーティクルは、「エミッター」と呼ばれる“発生源”から発生します。
セカンドライフでのパーティクルのエミッターは、パーティクルのスクリプトが入ったプリムにあります。
エミッターは、スクリプトにあるパーティクルシステムで設定された内容に基づいて、パーティクルを発生させます。
放出されたパーティクルがどんな状態なのか、それがどう変化していくのかを、パーティクルシステムの各パラメータで設定していきます。
セカンドライフでは、パーティクルシステムの設定はスクリプトでのみ行なうことが出来ますが、パーティクルエディタを使うことでその設定を GUI の形式で行なうことが出来ます。
各パラメータは、下記の通りです。
パーティクルの放出パターン(Pattern)
Explode 球状
Angle 球状、半球状、円錐状、またはリング状
Angle Cone 円状、半円状、弧または放射状
Angle Cone Empty (未実装)
Drop 初速なし
パーティクルの見た目や動きの設定
Burst Rate パーティクルの放出間隔
Burst Count 一回の放出で発生するパーティクルの数
Angle Begin パーティクルが発生しない範囲(開始)
Angle End パーティクルが発生しない範囲(終了)
Source Max Age 放出持続時間
Particle Max Age 表示持続時間
Start Glow 出現時のグローの値
End Glow 消滅時のグローの値
Scale Start 出現時のサイズ
Scale End 消滅時のサイズ
Target Key 移動目標(オブジェクト、プリム、アバター)
Acceleration 放出時の加速度
Omega エミッタの回転速度
Texture テクスチャー
Burst Radius パーティクルの発生範囲
Burst Speed Min 出現時の初速の最小値
Burst Speed Max 出現時の初速の最大値
Start Alpha 出現時の透明度
End Alpha 消滅時の透明度
Start Color 出現時の色
End Color 消滅する際の色
パーティクルの合成方法(ブレンドモード)
ソース 1
(デフォルトは Blend Src Alpha)
Blend One
Blend Zero
Blend Dest Color
Blend Src Color
Blend 1 - Dest Color
Blend 1 - Sec Color
Blend Src Alpha
ソース 2
(デフォルトは Blend 1 - Src Alpha)
Blend One
Blend Zero
Blend Dest Color
Blend Src Color
Blend 1 - Dest Color
Blend 1 - Sec Color
Blend Src Alpha
Blend 1 - Src Alpha
ブレンドモードは、OpenGLに直接作用します。
パーティクルの振る舞いを設定するフラグ
Bounce SIMのZ座標平面で跳ね返る
Emissive 明るさ全開
Follow Source エミッターに連動して移動する
Follow Velocity 放出方向に合わせてパーティクルを回転させる
Interpolate Color Start ColorからEnd Colorへ変化する
Interpolate Scale Scale StartからScale Endへ変化する
Target Position 移動目標となるTarget Keyへ向かうようになる
Target Linear 移動目標となるTarget Keyへ直線的に向かうようになる
Wind 風の影響を受ける
Ribbon リボンのように繋がった状態のパーティクルを描画します
パーティクルの出力
Copy クリップボードにスクリプトをコピー
Inject スクリプトをプリムに埋め込み(スクリプトファイル作成)
パラメータは、LSL の llParticleSystem で設定出来る内容と同じです。
これらを駆使することで、様々なパーティクルを作ることが出来ます。
VIDEO
炎のようなパーティクルも、たったこれだけの手順で出来ちゃいます。
VIDEO
他のオブジェクトに飛んでいくパーティクルも、簡単に出来ます^^
スクリプトで書かないと実現出来なかった内容が、パーティクルエディタを使うことで、スクリプトを書かないで実現することが出来ます。
いかがですか?
パーティクルエディタ、すごくいいですよね。
パーティクルを作ってみたい方は、ぜひ活用してみてください^^