パーティクルライブを作ってみる①準備編
※2024/12/20追記
「マテリアルの設定(トレイル)」にて、「OffsetのXの欄に0.5と入力する」設定を忘れていたので書き足しました。
また、「タイムラインの作成」「アニメーションの設定」のやり方が間違っていたので一度ぜんぶ書き直しました。失礼いたしました。
初めまして、VRMV/パーティクルライブなどのワールドを制作しているぐっちうぱるぱと申します。
はじめに
・この記事では、いわゆる「VRMV」や「パーティクルライブ」と言われるものを、わたくしぐっちうぱるぱが普段どのように制作をしているのかを紹介していこうと思います。
・「この通りやればパーティクルライブが作れる!」という記事ではなく、あくまで私なりのやり方をご紹介するだけの記事ですので、ヒントになりそうなところだけ持ち帰っていただいて、参考にならなそうな箇所は読み飛ばしていただく、くらいのゆるさでお付き合い頂ければと思います。
・私の制作スタイルとして、「あまり文字は用いず、パーティクルのみで表現する」「雰囲気やストーリー性ではなく、音の視覚化、音ハメの気持ち良さに重きを置く」などの特徴があります。今回の記事もそういったパーティクルライブの制作方法になりますので、歌詞や雰囲気、ストーリー性などを重視したい方にはあまり参考にならない可能性が高いです。
参考までに、よろしければ一度私のワールドにいらしてください。
https://vrchat.com/home/world/wrld_1eee5892-371d-43b1-b8af-0afaa635b401/info
・なお今回は、アバターパフォーマンスとして披露するパーティクルライブについては書きません、あくまでワールド制作の話になりますので、ご了承ください。
しかしワールドからアバターにそのまま移植することも難しくはないので、ヒントになることはあるかもしれません。
パーティクルライブ制作の流れ
楽曲を決める
①シンプルに好きな曲
②権利的に利用しても問題のなさそうな曲
を主に判断して決めています。
特に権利関係をクリアしておくことはトラブルを避けるために重要だと考えていて、方法としては
・権利者に交渉し許可をもらう
・フリー音源を使う
・自作する
などがあります。
準備をする
みんな大好き初期設定!
・VCCの導入
・プロジェクトファイルの作成
・楽曲の導入
・タイムラインやアニメーションなどの設定
・マテリアルの作成
・ワールド背景(スカイボックス)の変更
などの工程が含まれます。
今回の記事は主にこの準備について書きたいと思います。
演出~パーティクルの実装~アニメーションなど実際の制作に入っていく話は次回以降の記事で書きます。
演出を考える
・ざっくり全体の構成を考える
例:イントロは静かめに、ビルドアップやBメロは徐々に盛り上がる感じで、サビは360度に演出を展開して派手な演出に
・音のイメージを言語化して、演出に落とし込む
例:ドラム
音の長さが短い→パーティクルの表示時間も短い
弾けるような音→花火のように弾けるパーティクル
パーティクルを作る
考えたイメージを元にパーティクルを実装します。
アニメーションの設定
音が鳴ったタイミングと同時にパーティクルを発火させ、映像と音楽を同期させるためにアニメーションを使用します。
さっそく準備する
プロジェクトファイルの準備
・まずVCCを導入(ここは他の方も解説されているので省きます。)
・プロジェクトファイルを作成する
・Manage ProjectでVRWorld Toolkitを導入する
そしてOpen Projectを押してプロジェクトを開きます。
ウィンドウの追加
初期状態ではおそらくHierarchy、Project、Inspector、それからScene、Consoleの各ウィンドウが表示されてると思います。私の場合はそれに加えてAnimationとTimelineのウィンドウを追加しています。
Unity画面上部のWindow→AnimationからAnimationウィンドウを追加
Window→Sequencing→TimelineでTimelineウィンドウを追加
シーンファイルの保存
最初にヒエラルキー上のVRCDefaultWorldSceneと書いてあるところを右クリックして、Save Scene Asを選んで新しい名前をつけてシーンファイルを保存します。今回は「Note」と名付けて「Assets」フォルダ以下に保存しました。
マテリアルの作成と作業フォルダ確保
まず作業しやすいようにProjectのAssetsフォルダ以下に新しいフォルダを作ります。
名前は「Note Workspace」としました。
さらにその中に「Material」というフォルダを作りここにマテリアルを作成していきたいと思います。
作成したマテリアルの名前は「Default Particle」としました。
マテリアルの設定(パーティクル)
マテリアルを作成するとインスペクターにこういう画面が表示されます。
まずはShaderの欄をクリックして、検索欄に「Standard」と入力して、「Standard Unlit」シェーダーを選びます。
Standard Unlitシェーダーを選択したら、
Rendering Mode→Additive
Color Mode → Multiply
Two Sidedに✓
そしてMapsの欄でAlbedoの左にあるちっちゃい丸をクリックしてテクスチャーを選びます。
検索欄に「Particle」と入力して出てきた「Default-Particle」を選択して閉じます
最後にMapsの欄にある、HDRと書いてある白いバーをクリックして、Intensityを4ぐらいに設定します。
マテリアルの設定(トレイル)
先ほどはパーティクル本体の設定でしたが、次はパーティクルが動いたときに追従する軌跡(トレイル)のマテリアルを作成します。
①Materialフォルダの中で右クリ→Create→Materialで新規マテリアルを作成
②作成したマテリアルの名前を「Trails」に変更
③シェーダーの欄をクリックし「Standard Unlit」を選択
④Rendering Mode→Additive
Color Mode→Multiply
に設定
⑤Two Sidedに✓
⑥Maps以下のAlbedoと書いてある左のちっちゃい丸をクリックして検索欄に「Particle」と入力して出てきた「Default Particle」を選択し閉じる
⑦TillingのXの欄に「0.5」と入力する
⑧OffsetのXの欄に「0.5」と入力する
これで軌跡(トレイル)のマテリアルの作成、設定が完了
スカイボックスの設定
ワールドの背景になるスカイボックスの設定ですが
僕の場合はワールドの背景を完全な暗闇にしますのでそのやり方を書きます。
綺麗な青空とか星空の背景にしたい!という方にはあまり参考になりませんので、他の方がスカイボックスについて解説している記事を参照してみてください!
まずはスカイボックスのマテリアルを設定します。
先ほどのようにMaterialフォルダ内でCreate→Materialでマテリアルを作成し、名前を「Skybox」に変更
今回はデフォルトの「Standard」シェーダーを使います。
まずは白いバーをクリックして色を完全に真っ黒にします。
続いて下までスクロールし、「Forward Rendering options」以下のチェックを二つ外します。
次にUnity画面上部のWindow→Rendering→Lightingを開きます。
LightnigウィンドウでEnvironmentタブを開き、「Skybox Material」を先ほど作成したマテリアルに変更します。
これでスカイボックスの設定は完了!
なんですが、シーン画面を見てみると背景が灰色になっているかもしれません。
そんな時はシーンウィンドウ上のキラキラしたホットケーキみたいなボタンの右の▽三角をクリックして、SkyboxをクリックしてONにしてください。
楽曲の導入
パーティクルライブ/VRMVを作る上で曲は欠かせませんね
音声ファイル(mp3、wavなど)を用意して、ProjectsウィンドウのAssets→Note Workspace内にドラッグアンドドロップします。
音源の設定
Unityの中に音声ファイルを導入できたら、音源の設定をします。
Unity内で導入したファイルをクリックして、インスペクター上で設定をします。
Load In Backgroundに✓
Preload Audio Dataに✓(これがめちゃくちゃ重要です)
チェックを付け終わったらインスペクター画面の右にある「Apply」を押して適用して設定完了です。
Preload Audio Dataとは何かというと、音源がはじめて再生される前に事前に読み込みを行う設定です。
これが無効になっていると、パーティクルライブが再生された瞬間に映像が即時スタートし、音声の方はというと0.5秒くらいの読み込みをしてからスタートすることになりますので、映像に対して楽曲が遅れて聞こえる音ズレ状態になります。
私はこの設定に気づかず、この音ズレ現象に5か月くらい悩まされていました。ピヒョー
ワールドの床を透明(非表示)にする
360度どこを観ても真っ暗にしたいので床を非表示にします。
ヒエラルキー上で「Floor」オブジェクトを選択し、インスペクター内の「Mesh Renderer」コンポーネントのチェックを外してオフにします。
これで床が非表示になりました。
床を広~くする
ワールドの端を歩いても落下しないようにしたいので、「Floor」オブジェクトインスペクター内の「Transform」から「Scale」の値をXYZ各10000にします。
これで床がメチャクチャ広くなりました。
ヒエラルキーの階層構造を作る
空っぽのゲームオブジェクトを作り、それぞれ管理しやすくするために名前をつけて整理します。
ヒエラルキー上で右クリックしてCreate Emptyをクリック
これで何の機能もない空っぽの箱が出来ます。
名前は「Note_World」とでもしておきます。
以降は新規のオブジェクトを追加する際、すべてこの「Note_World」以下に入れていくことにします。
そして更にその下に、「Note_VRMV」と「Note_Gimmick」、「Note_Object」
という空のゲームオブジェクトを作ります。
「Note_VRMV」には、パーティクルシステム、アニメーション、音源などのパーティクルライブの本編になる部分を入れます。
「Note_Gimmick」には、「Note_VRMV」を再生するためのオン/オフスイッチなどを入れます。
「Note_Object」にはそれ以外を入れます。私の場合はあまり使うことはないですが、ワールドの地形とか建物とか小物とか、アニメーションさせる必要のないものは全部ここに入れます。
続いて「Note_VRMV」を右クリックして「Audio Source」を入れます
「Audio Source」オブジェクトをクリックして、インスペクター内の「Audio Clip」に音声ファイルをドラッグアンドドロップします。
そしてPlay on Awakeは切っておきます。
続いて「Note_VRMV」の下に、Create Emptyで空のオブジェクトを作り、「Main Animation」と名付けます。
この「Main Animation」オブジェクトの中に、パーティクルライブの根幹となるアニメーションやパーティクルシステムを組み込んで作っていきたいと思います。
ヒエラルキーの整理はいったん完了!
タイムラインの作成
ヒエラルキー上で「Note_VRMV」オブジェクトを選択すると、「Timeline」ウィンドウ上で「Create」というボタンが現れますので、これを押します。
「Timeline」ウィンドウは、Unity画面上部の「Window」を押して、「Sequencing」→「Timeline」で開けます。
保存先はAssets→Note Workspaceの中にしました。
そうしたら、「Note_VRMV」オブジェクトを選択してタイムラインを開いたまま、Projectウィンドウから音声ファイルをタイムラインへドラッグアンドドロップします。
次に「None(Audio Source)」となってる所の右の◎をクリックして
「Audio Source」を選択します。(先ほどヒエラルキー上で作成したAudio Sourceオブジェクトです。)
Unity画面上の再生ボタンを押して、プレイモードに入ってみると、タイムラインが再生されて音楽が流れてくると思います!
アニメーションの設定
タイムライン上で右クリックして「Animation Track」を作成します。
Projectウィンドウを開き、「Note Workspace」フォルダ内で右クリックしてCreate→Animator Controllerを選択してアニメーターコントローラーを作成します。
名前は「Note_VRMV_Animator」としておきましょう。
「Note_VRMV_Animation」とつけておきます。
そしてこれをヒエラルキー上の「Note_VRMV」へドラッグアンドドロップします。
続いてタイムラインウィンドウ内で「None(Animator)」となってるところの◎をクリックして、「Note_VRMV」を選択します
いったんこれでタイムライン、アニメーター周りの設定はひと段落です。
準備完了!そして次回へ
これで準備完了です!次回は実際に演出を考えて、パーティクルを実装するところを紹介したいと思います。
ここまでお付き合いいただきありがとうございました!
ちなみにこんな大変な作業をパーティクルライブを作る度に毎回やっているわけではなく、ここまでの準備をすべて終わらせたプロジェクトファイルをテンプレートとして自分用に用意してあります。
↓完結編はこちら↓