この記事は、「セカンドライフ技術系 Advent Calendar 2016」の記事です。 |
去年に引き続き、今年も「セカンドライフ技術系 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) |
|
---|
ソース 2 (デフォルトは 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 で設定出来る内容と同じです。
これらを駆使することで、様々なパーティクルを作ることが出来ます。
炎のようなパーティクルも、たったこれだけの手順で出来ちゃいます。
他のオブジェクトに飛んでいくパーティクルも、簡単に出来ます^^
スクリプトで書かないと実現出来なかった内容が、パーティクルエディタを使うことで、スクリプトを書かないで実現することが出来ます。
いかがですか?
パーティクルエディタ、すごくいいですよね。
パーティクルを作ってみたい方は、ぜひ活用してみてください^^
ツイート |
0 件のコメント:
コメントを投稿