バーチャル思考実験室

基本的にTwitterに書き捨てたものを拾い上げて整理してます。

書いてある通りにやればパーティクルライブが作れる記事

※ここは読まなくてもいい※
これは「パーティクルライブはこういう構造でできてるよ!」という記事【パーティクルライブ・パリピ砲 作成の基礎知識について - バーチャル思考実験室】や同じように構造をまとめたもの(パーティクルライブが作れる! かもしれない技術書 - 夏空の下、ひまわり畑で。 - BOOTH)を読んだ後『なるほど。そんで何からすればいいの?』という部分で止まっている状態の人に『一から十までこの通りにやれば作れるようになる』という触れ込みで『自分が通ってきた道を踏襲させる』という記事です。


~ここから本題~
この通りに実践すればアバターを上げたことがない人が作り方を理解できる程度にはなっているはずです。
目次を読んで自分ができている部分は飛ばしてもいいと思います。
※重要アドバイス
どこかで行き詰まったことがあったら人に聞いたりセクション名で検索をかけたりするとよいでしょう。頼れる人がいなかったら私宛にTwitterでDM飛ばしてきてもいいです。

①VRChatで遊ぶ

まずはVRChatで遊びましょう。
パーティクルライブと呼ばれるものはUnity製ならば複数プラットフォームにまたがって扱えるものだが、それを理解するまでにはVRChatで先人のまとめた導入記事を追っていくのが一番早いのでVRChatで遊びましょう。

アバターをアップロードしよう

VRChatで遊んでいるとアバターをアップロードしたくなっているはずです。
したくなってなかったとしてもアップロードしてください。
アップロードまでの手順は以下の記事を見てください。
astoness.com

③アップロードしたアバターに変化を加えよう

アバターに表情を付けよう

ここはアニメーションオーバーライドとアニメーションウィンドウを理解するセクションです
アバターに表情や手の動きを付けましょう。
基本参照にするのは以下の記事です。
shiasakura.hatenablog.com
3年前の記事ですが基礎的な操作はここにあるので適宜自身の導入したアバターに置き換えて進んでいってください。

アバターに物を持たせよう

ここはアニメーションオーバーライドの応用を含めて理解するセクションです
アバターに武器や物を持たせましょう。
何か出し入れしたいもの(3Dモデル)をBOOTH等でダウンロードして用意してから以下の記事を参考に進めてください。(看板の代わりに用意したモデルを使ってもいいです)
shiasakura.hatenablog.com

アバター持たせたものを出し入れしよう

ここはEmoteSwitch理解するセクションです。(仕組みの理解ではない)
上のセクションで出し入れしたものを使いやすいようにワンボタンでオンオフできるようにしましょう。
以下の記事を見て進めてください。
keiki002.com
※上記事で扱われているEmoteSwitchV3は現在非公開であるため以下のリンクよりDLしてください。(EmoteSwitchV3は作者が再配布可能であることを明示しています。)
https://drive.google.com/file/d/1U5hat3ZRM6P6nISQ9__RBMtorKBOSZ3Q/view?usp=sharing

アバターのマテリアルを弄ろう

ここはマテリアル・テクスチャ・シェーダーを理解するセクションです
導入したアバターのマテリアルを弄りましょう。
以下の記事を参考に色変更を行ってください。
noa-phantom.com
これによってマテリアルとテクスチャ(およびモデルデータ)の関係性がなんとなくわかるはずです。
シェーダーについてはこれという理解への導入記事が見つからなかったので下のような解説を読みつつ触ることでふんわりわかってください。
シェーダー - VRChat 日本wiki

④エフェクトを実装しよう

アバターからパーティクルを出そう

ここはparticle Systemを理解するセクションです
アバターから手軽なエフェクトとしてパーティクルを出しましょう。
以下の記事を元にまずはParticle Systemを触ってください。
keiki002.com
項目が死ぬほどあるので何がどのような効果を持っているのかについては、触って覚えてゆきながら項目解説記事なんかを読みましょう。
Unity_Particleの作り方(初心者用) | ゲームUI演出
Unity_Particle System_メイン機能メモ | ゲームUI演出

アバターに音を入れよう

ここはAudio Sourceを理解するセクションです
アバターから音を出せるようにしましょう。
出したい音(MP3等)を用意して以下の記事に従って進めましょう
keiki002.com

・物に出現エフェクトを付けよう

ここはAnimaterとAnimationを理解するセクションです
まずは以下の記事を参考にログインアニメーションの作成をしてみましょう。
keiki002.com
上の記事によって「アバターが出たときにアニメーションが動く」というのをわかったと思います。
それを手持ちの物に応用していきましょう。
アバターに物を持たせよう』のセクションで使用したオブジェクトに専用のアニメーションを作って付けると物を出したときに出現エフェクトが出るようになります。
(ここの順序を追った解説記事が見つからなかったため見つかったら追記します。)
(そのほか参考にするのなら以下の記事なんかがあります)
【技術書】Boothで買ったAnimation武器を振り回す記事|E3|pixivFANBOX

休憩

ここまでやり切ったら下地は全て整いました。
パーティクルライブの概念は「アバターから出すものに音と合わせたエフェクト(Particle System)をアニメーションで付けたもの」であると認識できるはずです。
以下の記事を読んでみて認識の齟齬を埋めてください。
fley-kousatu.hatenablog.com
ここから完成までやるべきことをまた書いていきます。

⑤演出を考える

音に合わせてどのような絵作りをするのかを考える必要があります。
作りたいビジョンを元にどのように実装していくのかがここからの課題となるため、まずは先立つビジョンを固める必要があります。
ビジョンがない場合はとにかくインプットです。
先人の作品を見たりVRでの展示を見たりYoutubeでかっこいい動画を探したりなど方法は様々です。
あまり推奨するものではないですが、既存動画の再現を行うというのも手です。トレースを行ってやれることが増えるとは思います。

⑥考えた演出の実装を行う

思いついた演出を元にアニメーションを組んだりParticle Systemを触ったりします。
ここが「"所謂"パーティクルライブを作る」という部分です。
ここのノウハウは余りまとまったものがないですが私の書いた以下の記事でTips的にはまとめてあります。
fley-kousatu.hatenablog.com
そのほかはUnityのシステムに対するTips等のブログが豊富にあるので「エフェクトの作り方」や「シェーダーについて」などの記事を探して読みましょう。
(個人的には制作者が増えてここの階層のノウハウ記事を書いてほしい)

⑦制作したものをアップロードする

製作したものをアバターに入れてアップロードしましょう。
ワールド化してあげてもいいです。
制作物を他人に見せるなり自分で見るなりして満足したらこの記事でやるべきことはもうないです。
作り手として新しいものを生み出していってください。

⑧さらなる拡張性について

Timelineを用いた製作法やアバター3.0に対応していく方法など拡張性がある部分はこの記事を全て実践した人なら自分で調べて実行していけると思います。
基礎を理解するための内容なので記事はこれで終わります。ありがとうございました。
Twitter等で制作報告をする際にはこの記事のリンクを貼ってくれたらうれしいです。

自身の作品にVRMVという名称を使用することへの不信感

1分でつくったすぺしゃるかっこいいロゴ

最初に 前回の記事『VRChat文脈におけるパーティクルライブだとかVRMVだとかの名称について(発祥とその背景)』でVRChatのコミュニティにおいてパーティクルライブとVRMVという名称を使用するに至った背景について書きました。よろしくね。

個人的な考え 記事タイトルにもあるように、個人的にはVRChatコミュニティで制作された文脈上にあるものを「VRMV」と呼称するのは、今後のことを考えると迎合できるものではないと思っています。

理由 端的にその理由を言うと、Youtubeに上げられている全天球動画(いわゆる360°動画)と言葉の上での差別化を行えないからです。
現状VRバイス(HMD)よりスマートフォンが圧倒的に普及している中で、全天球に張り付けた360°動画視差を利用した2画面動画の文脈で広く使われている「VRMV」という名称をプラットフォームによる違いだけで6DoFの立体空間における映像作品としてイメージを塗り替えていくのはかなり長期的な分の悪い発信を続けていかないといけません。
スマホVRVRじゃない!」というような主張と似た流れを繰り返していくのはあまりにも無益で手間がかかると思っています。

パーティクルライブという名称 別途、パーティクルライブという名称についてはVRChatで初期から使われていた包括的な意味合いでの使用に対して変遷があり、前回の記事で書いたように「見られ方が変わってきているのに合わせて発信側も呼称を変えている」という状況にあります。
私としては呼称に対するイメージアバターから出して演者(パフォーマー)が何かするやつ(ダンスとか)』の認識に寄ってきていると感じているため、演者不在の制作形式を自分から「パーティクルライブです」というのには微妙な違和感があります。

新規の名称考案 上記の理由を踏まえて、自身の作品に類する包括的な名称として『Solid Space Music Video(SSMV)』という名称を考案しました。
立体空間におけるMusicVideo」を直訳したものです。
この名称の利点としてVRやARといった媒体や使用機器に縛られることなく立体空間における作品全般に使用できる点があります。
動画というコンテンツがテレビでもスマホでもPCでも同一名称で扱うことが可能であるように、立体空間を内包する媒体において作品を同一名称で扱うことができます。

この記事を書くに至った動機 前提として、単語の意味する内容は単語を生み出した人物がジャッジ権限をもつ(バーチャルYoutuberという枠組みはキズナアイの裁量で決まるように)という考えがあり、それとは別に一定ラインを超えると制御の利かない無意識的な合意による形づくりが始まります。
自分の感覚では「VRMV」という単語はすでに無意識的合意よる360°動画等などへのイメージの土壌が固まり今後その認識が加速していくという状態にあり。
「パーティクルライブ」という単語は演者を必要とする形へのイメージの移り変わりを感じています。(これは「VRMV」という呼称の出現による相対的なイメージの乖離という見方もある)
また、どちらの単語も自身にジャッジ権限がないため、それを自分で規定して発信しイメージを塗り替えていくのはあまりにも傲慢かつ無謀だと感じているわけです。
その前提を踏まえたうえで、取り回しの良い名称として考案した「SSMV」にという呼称をごく個人的使用していくという表明の記事です。

VRChat文脈におけるパーティクルライブだとかVRMVだとかの名称について(発祥とその背景)

『パーティクルライブって言うけど最近の奴“パーティクル”でも“ライブ”でもなくない?』ーとあるVRChatterのぼやきよりー

こんな話が体感四周目くらいに突入してきたので、web上の辿れる情報を踏まえて単語の発祥とその背景について足跡を残しておくための記事です。

パーティクルライブという言葉の発祥

twitterにおいてパーティクルライブという言葉が(現在まで繋がる形で)最初に使われたのは2018年の5月6日にされたこのツイート。


この記事を読みに来るような人には説明する必要はほぼないと思うが、一応紹介しておくと2019年頃から現在までVR→xR系のライブ演出にて前線を走っているYORIMIYA氏である。
(※このYORIMIYA氏のツイート以前に1つだけパーティクルライブという単語にヒットする呟きがあるが、そちらはVRChatの文脈に合流するものではないため取り扱わないものとする。)
このYORIMIYA氏の呟きについて少し疑問に思う所を挙げるとすると、この時点で『パーティクルライブ』という言葉がある程度特定の作品群を指すような使われ方をしている点である。
恐らくログに残らない媒体(VRChatや通話アプリ等)によって作品を作るコミュニティ内で名称についての共通の認識合意があったのではないかと考えられる。

パーティクルライブという言葉の認知度の拡大

『パーティクルライブ』という言葉が制作者コミュニティから外へと発信された第一歩が2018年7月に行われたこのイベントであると思っている。


このなみた氏とYORIMIYA氏の作品公開に伴って作品の名称を対外的に『パーティクルライブ』として発信していく形になっていく。
また、この発信形式の原因発案元はこのやり取りからわかるようにYORIMIYA氏でしょう。

本人達に聞いてみた

上記の内容ではログの残らない媒体でのやり取り等について私の想像で補完している部分があるため、どうせならと思い本人たちに連絡をして当時の(検索では出てこない)時系列等について聞いてみました。
※YORIMIYAさんとなみたさんに通話を繋ぎ、そこで伺った当時のコミュニティ内の様子をインタビュー形式で載せようかと思いましたが、その形式で記事を書くノウハウがないので諦めました。

お二人から聞かせていただいた事の起こりの時系列をまとめると以下のようになるそうだ。


時系列まとめ
2018年4月28日

なみた氏がVRChatのコミュニティ内でライブ披露を行う。
そこに居合わせた人たち(YORIMIYA氏含む)で披露後の雑談を行う中、名称の話題が上がりVRライブやパーティクルライブ・VRMVと言ったものが挙げられるが結論は出ず。

同日

上記の直後にYORIMIYA氏が制作を開始する。

2018年5月6日

YORIMIYA氏による初「パーティクルライブ」を含むツイートがなされる

以上の内容を踏まえて本人たちに聞くところによると当初は『ライブ』という漠然とした名称での共通認識になっており、ハッシュタグを作る流れに至るまでの間は28日の雑談で挙げられた『パーティクルライブ』という名称をYORIMIYA氏がとりあえず使っていたということらしい。

VRMVという文脈への派生

上記の『パーティクルライブ』という名称での発信以降、2019年の中旬頃まで同様の作品に感化されて制作した人たちが自身の作品を『パーティクルライブ』として公開・発表する流れが作られてきた。(この記事を書いている私もその頃に流れに合流し『パーティクルライブを作ろう』などと呟いている。)
その中で『パーティクルライブ』という名称で制作を行っていたVRChatコミュニティの中から初めて『VRMV』という名称を用いたのが以下のツイートであると思われる。
※Reimhak氏が当時のツイートを削除していたため、本人に連絡を取ったところスクショの提供をしてもらえた。

f:id:fleycham:20210323205511p:plain
本人提供のスクショ

twitter.com
※VRChatコミュニティの中に限らなければ『VRMV』という名称はそこそこ広く且つ昔から使われているものであるが、それは記事の本旨と逸れるので省いている。

対外的な発信を含めたVRMVという名称の使用

Reimhak氏が自身の作品をVRMVとして対外的に発信し始めたのは、Vケット3に関わる以下のツイートであると本人は言っていた。

f:id:fleycham:20210323014932p:plain
本人提供のスクショ

Reimhak氏が『VRMV』という名称を用いて作品の公開を始め、ここから何人かが自身の作品に『VRMV』という名称を用いることになる。

作品自体の表現方法と認識のされ方の変遷

ここまでは制作側における名称の発生について書いてきたが、その名称の浸透とともに制作側及び作品を見る側がその名称に対してある程度のバイアスがかかった状態で作品が作られ、また認識されるようになってきた。
それに伴い制作物と名称の認識ズレが起きてきた結果が冒頭の『とあるVRChatterのぼやき』なわけである。
制作側が見る側の認識に合わせて呼称を変えていっている気もするし、またその逆で作品が見る側のバイアスをより強めていっているとも思われる。

まとめ

この記事は事実ベースでの時系列まとめをするだけのつもりでした。
しかし、連絡させていただいた全員から「とりあえずの呼称だからそんなにこだわってない、軽い気持ちで使ってるし使ってほしい。」という趣旨の話を伺えたので、そういった空気感がちょっとでも伝わると良いと思い御三方からひと言もらいました。

◆YORIMIYA◆ もともとはハッシュタグ用に提案した言葉なので、ここまで認識が広まると想像しておらず現状の界隈での認識ズレはしかたないと思ってます…(笑

◆なみた◆ 名前なんて飾りよ
◆Reimhak◆ そもそも既存の形態のMVをVRChatで見れるように作ったからVRMVと言っていたので、そこまで名称にこだわってないです。

パーティクルライブ作るときに最近よくやってること

Twitterに流したやつをTips的にまとめておこうかと思ったので書きました。
随時追加するような気がする。

歌詞の動きの余韻を残す方法

良い感じに展開した歌詞がピタッと止まるのがダサいから、動きの余韻を持たせるのに楽な方法。
動画制作とかタイポグラフィにおいては(多分)常識的なイージングを低コストでやるにはどうしたらいいか。
Animationのカーブで座標を全て制御して加減速をかけるのは手間なので、恒常的な移動に加速を加える方式で構想。
歌詞をメッシュパーティクルで出す→余韻分の恒常的な移動をParticle systemで行う→出現(及び消失)の時の早い移動だけアニメーションで制御という形で低コスト実装。



チープな演出を曲のリズムに合わせてマシにする

最近は曲のテンポ(あるいはBPM)に合わせて演出を入れるようにしている。
例えばパーティクルの発生をBurstsで制御している場合、その発生タイミング(Interval)をBPMから逆算した1ビート間の秒数に設定したりします。(BPM120なら0.5秒ごとに発生する)
オーディオビジュアライザーのもっと簡易版みたいな感じ。
どっちかというとメトロノームの方が近いかもしれない。
漠然と出ているより見てて気持ちよくなるような気がする。
あえて発生頻度を2倍(Intervalを半分)にしたり、発生頻度を半分(Intervalを倍)にしたりしてもよさげ。
テンポの速い曲だと入りが少しズレていてもリズムが保たれていればあまり違和感はない。




Bursts制御はLoopさせない

BurstsでリズムをとっているParticleはLoopさせるとそのタイミングで微妙にズレが生じる。
Loopingを切ってメインモジュールのDurationを十分に長くした方がいい。

空間に発生させた粒子を最後まで生かす

Particle Systemのついたオブジェクトを非表示にするとそれまで出ていた粒子が一斉に消える。
高速な場面転換を行わない場合にはEmissionのチェックをAnimationで制御して粒子が個別に息絶えるのを待つべき。
発生を止めてから粒子の最長LifeTime分待ってParticle Systemを非表示にする。

Simulation Speedをアニメーションで弄る

最近は普通にやってるけど、作り始めた当初は思いつかなかったヤツ。
Particle SystemのSimulation Speedをアニメーションで制御することでスピード感を意識した演出ができる。
曲に合わせて徐々にSpeedを大きくさせたり、0に値をとばすことで時間が止まったように見えたりする。
割と海外勢の演出パクリ参考

環境的なパーティクルを特定タイミングでフェードイン(フェードアウト)させる

炎や煙などの出ては消える環境的なパーティクル(中でも粒子の生存時間が長いもの)を特定のタイミングで綺麗に空間に被せたい。
1粒子ずつ発生を待つほど余裕があるわけではないときに使う。
パーティクルのPrewormにチェックを入れ、アニメーションでMaterialのアルファ値を弄りに行く。
パーティクルONと同時に粒子は発生する、アニメーションでアルファ値を0にしておくことで透明な状態から任意のタイミングで出たり消えたりするものをフェードさせられる。

【VRChat】パーティクル(Particle System)とエモートスイッチで発生する問題の解決

最近「エモートスイッチとパーティクルが干渉する」的なツイートを目にすることがあったので、その解決手段と発生原理について記しておきます。

(Twitterで解決まで至った流れ↓)
twitter.com



※この記事はSimulation SpaceWorldになっているParticle SystemをFixed JointVRC_IK Followerを用いてアバターに導入する際に起こる問題点について書きます。
それぞれの導入法なんかは以下の御二方の記事を読んでください。

VRChatでParticleで魔法とか銃とか撃つ方法とそのSimulation Spaceの注意点|さささ|note

【VRChat】超お手軽っ!!IK Followerを使ったワールドパーティクル!! | ケーキのPC情報集会所

また、今回の記事でエモートスイッチとして想定しているものは元怒さんとがとーしょこらさんによるEmoteSwitch V3によって生成されたものとしています。
EmoteSwitch V3 - 元怒の扉 - BOOTH


ザックリ端折って気を付ける点のみを上げるとすれば
・エモートスイッチの下にVRC_IK Followerを入れるな。
・Fixed JointをON/OFFするな。

この二つです。


以下、それぞれの方式で何が起こるのかを記載していきます。

Fixed Joint方式について

Fixed Jointを使った方式についてよく起こる問題が「出すたびに位置がどんどんズレていく」というやつです。
これは「Fixed Joint Componentを付けたオブジェクト(及びその親オブジェクト)をON/OFFしている」ことが原因で。
発生の原理についてはFixed JointがONになっている間は対象のボーンと動きを同期させているが、OFFの状態ではONの時に動いた先の位置に固定され、改めてONになったときにその位置からまた動き出すためです。

これの解決策としては、Fixed Jointを付けるための階層を1つ用意し常にそれがActiveの状態を維持、その下の階層にあるものをアニメーションオーバーライドでON/OFFしたり、エモートスイッチの対象に入れるようにしてください。

VRC_IK Follower方式について。

VRC_IK Followerを使った方式で起こる問題が「エモートスイッチでONにした後OFFにならない」というやつです。(上記のモーメントまとめがそれです。)
これもFixed Jointの時と同じように「VRC_IK Follower Componentを付けたオブジェクト(及びその親オブジェクト)をON/OFFしている」ことが原因なのですが、かなり特殊な挙動なので解説を後述します。

これの解決策としては、Fixed Jointと同じようにVRC_IK Followerを常にONにしていればいいので「『目的のParticleSystemより上の階層』且つ『追従させたいBoneより下の階層』でOFFになっていないGameObjectにVRC_IK Followerを付ける」ことで問題なく動かすことができます。
理想としてはBoneとエモートスイッチ機構の間に適当なGameObjectを作成しそれにつけることですが、自動生成されたJointという名前のGameObjectにつけることでも実装可能です(妥協案)。

f:id:fleycham:20200229024121p:plain
それぞれのHierarchyの違い
f:id:fleycham:20200229163138p:plain
妥協案の構造

解説

このVRC_IK FollowerというComponentはVRCが提供しているComponentなので、公式のドキュメントしか情報がないわけですが。
(公式ドキュメント→)VRC_IKFollower
ここには使い方と浅い実装内容のみで挙動の具体的な内容がほぼ書かれていません。
なので、実験や人伝に得たVRC_IK Followerの情報について箇条書きでまとめます。
・VRC_IK FollowerのついたオブジェクトはPosition及びRotationの値が全て0になり、Scaleの値が1になる。
・VRC_IK Followerのついたオブジェクト(及びその子のオブジェクト)はVRC上ではAvaterのHierarchyの外に持ち出されている。
・VRC_IK FollowerをVRC内でアクティブにした場合、その瞬間にAvaterのHierarchyの外に持ち出される。
・VRC_IK Followerを付けたオブジェクト及びその子のオブジェクトに対するAnimationの挙動は保持されている(AnimationのPassを書き換えている?)
上記の点から実際に何が起こっているのか説明します。

説明

①エモートスイッチ(基本非表示)の下にVRC_IK Followerのついたオブジェクトを入れた状態でアバターをアップロードする。
②VRChat上でエモートを使用しVRC_IK Followerがアクティブになる。
③アクティブになったVRC_IK Followerによってそれ以下の階層がAvaterの外へ持ち出される。
④エモートで親オブジェクトをOFFにしてもすでにAvaterの外に出ているのでVRC_IK Follower以下のオブジェクトは非表示にならない。
これが原因でエモートスイッチによる不可逆的なオブジェクトの出現が起きています。

あとがき

ここら辺の情報(というか気を付ける点)が全然どこにも書かれてなかったので書きました。
仕組みの理解をしたうえで挙動の原因を書かないといけないのでまぁ手間ですが。

追記

エモートスイッチについてツールの使い方はあるものの、どういった仕組みで行われているのかの説明が全くどこにもなかったのが個人的に「マジか」と思ったので、気が向いたら解説記事でも書きます。

パーティクルライブ・パリピ砲 作成の基礎知識について

f:id:fleycham:20200531144520p:plain
優勝したりなどする
この記事ではVRChatにおいて「パーティクルライブ」や「パリピ砲」と呼ばれている、アバターから出せる演出・エフェクトについての基礎的なところを説明します。
順を追った制作過程の解説ではなく「作り方がわからない」という人たちが何を調べて実践するべきなのか、その目安になる程度の情報まとめです。

基礎事項とよく聞かれることへの答え

[2019/10/5追記]
質問を受けたので基礎事項の9と10を追加しました。

1.アバターからどうやって出すの?

これはアニメーションオーバーライドやエモートスイッチといった機構で小物をON/OFFするのと全く同じです。
出したものに演出がついているといったイメージです。
アニメーションオーバーライドやエモートスイッチの実装については以下の記事参照。
アニメーションオーバーライドを入れてみよう!!(物・手編) | ケーキのPC情報集会所
【VRChat】EmoteSwitch V3(エモートスイッチ)使ってみた!! | ケーキのPC情報集会所

2.どうやって演出を付けるの?

これには大きく分けて2通りのやり方があります。
アニメーション(及びアニメーターコントローラー)によって制御する方法と、Particle SystemのStart Delayのみで制御する方法です。
この二つの違いについては後述します。
ぶっちゃけこの「演出を付ける」という工程が全てなので別記事で詳しく書こうかなとは思ってます。

3.どうやってワールドに固定しているの?[追記2020/05/31]

演出をワールドに固定するには2通りの方法があります。
「Fixed Joint」を用いる方法と有料アセットである「Final IK」を用いる方法です。
日本人では「Fixed Joint」を用いる方法が多いように思います。
Fixed Jointを使用したワールド固定については以下の記事参照。
アイテムをアバターから切り離しワールド固定にする方法(パーティクル不使用版)【VRChat技術情報】 - VRChatパブリックログ
[追記事項]
ワールド固定機構をureishiさんがBOOTHで配布されていたので載せておきます。
使い方の説明も内蔵されていたので使いやすいかと思います
https://booth.pm/ja/items/1139667
(BOOTHの方なくなったみたいです。)
[追記事項2]
Unity2018になり「Constraint」を使用した方法が安定するようです。
こちらは向日葵。さんがBOOTHで公開しています。
ConstraintWorldFixed-V1.1 - 夏空の下、ひまわり畑で。 - BOOTH

4.歌詞はどうやってるの?

こちらは素材を用意する時点で2つのものに分かれます。
「平面的な歌詞画像」を作成してそれを出す方法と「立体の歌詞モデル」を作成する方法です。
平面的な画像の作成についてはお絵かきツールの使い方を調べてください。
立体の作成については以下の記事参照(私はペイント3D派です)
【Blender】3Dな文字の作り方【テキスト】
ペイント3Dで立体ロゴを作る(文字編) | Microsoft『ペイント』『ペイント3D』の使い方入門

作成した歌詞をどのようにして出しているのかは主に2種類で、「メッシュオブジェクト」で出す方法と「パーティクル(メッシュパーティクル)」で出す方法です。
どちらが良いかは個人の経験に基づくものが大きいので、後日それぞれの利点や欠点をまとめた記事を出します。

f:id:fleycham:20190909153123p:plain
左:メッシュオブジェクト 右:メッシュパーティクル

5.音はどうやってだしてるの?[追記2019/10/23][追追記2020/9/21]

MP3やWAVといった形式のオーディオファイルをUnityのプロジェクト内に入れ、それをScene上に配置することでAudio Sourceコンポーネントがつくので、そのオブジェクトをアクティブにしたら音が流れます。

f:id:fleycham:20190909160547j:plain
オーディオファイル
f:id:fleycham:20190909160615j:plain
ドラッグ&ドロップでSceneに配置
[追記事項]
(いつ頃のだったか忘れましたが)アップデートによりAudio Sourceコンポーネントと同時に「VRC_Spatial Audio Source」というコンポーネントがつくようになりました。
こちらのコンポーネントによってオーディオの聞こえる範囲を制御することになりますが、挙動があまり安定しなかったり仕様を把握しきれていないところがあるので情報の精査ができたら纏めます。
[追追記事項]
Spatial Audio Source について書くのを完全に忘れていたので簡易的に機能説明をします。
Gain:音の大きさを弄る値
Far:音の届く範囲を弄る値(多分距離はメートル。半径か直径かは試してないです。)
以下Advance Options内に格納
Near:音の減衰が開始する距離
Volumetric Radius:音源を点音源ではなく広範囲の発生源から出力するように見せかけるための値(基本弄らないです)
Enable Spatialization:3D空間における音の減衰を有効化する項目です。これのチェックを外すと範囲内なら全て均一に音が聞こえます。
Use AudioSource Volume Curve:上記のAudio Sourceコンポーネントにて設定した減衰カーブを適応する項目です。
f:id:fleycham:20200921022743p:plain
VRC_Spatial Audio Source

基本的に自分はFarの項目を大きめの値に設定して、Enable Spatializationのチェックを外して運用しています。
音源の位置が明確にある人はチェック外さなくていいかもしれません。

6.アニメーションでどうやって作るの?

2で書いた作り方の詳しい工程です
Unityにはアニメーションクリップとアニメーターコントローラーというものがあります。
それぞれプロジェクトフォルダ上で右クリックから生成できます。

f:id:fleycham:20190909162505p:plain
アニメーションクリップとアニメーターコントローラー
f:id:fleycham:20190909162612j:plain
それぞれの生成方法

本来はアニメーターコントローラー内で様々なアニメーションクリップを遷移させるものですが、VRChatにおいては単一のアニメーションを再生する装置だと思ってください。
例えるならアニメーションクリップがCDでアニメーターコントローラーがCDプレイヤーです。
アニメーターコントローラーを適当なGameObjectにつけることでアニメーションの再生装置にすることができます。

f:id:fleycham:20190909164233p:plain
アニメーターコントローラーによって再生装置になったやつ

アニメーターコントローラーはHierarchyでそれ以下の階層にあるもの対して指示を出すことができます。
時間を指定して挙動を個別に制御することで音に合わせた演出を作ります。
制御の仕方については下の「パーティクルライブの素」の作り方で解説します。

7.パーティクルだけでどうやって作るの?

まずParticle SystemをSceneに作成しましょう。
Hierarchy上で右クリックをしてEffectからParticle Systemを選択します。

f:id:fleycham:20190909171028p:plain
Particleの作り方

Particle SystemにはDelay Timeという項目があり、その項目を設定することでパーティクルのオブジェクトがアクティブになってから粒子が発生するまでの遅延時間を指定できます。

f:id:fleycham:20190909180457j:plain
ParticleのDelay
これを個別に設定することで同時にアクティブになったParticle Systemから順次粒子が発生して音とタイミングを合わせた演出を作ることができます。
※このやり方は個人的には推奨できません(確認がめんどくさいのと相対時間で管理するのが向いてなかったので)

8.パーティクルはどうやって作ってるの?

基本的にパーティクルは触って覚える感じです。
設定できる項目がかなり多いので公式のドキュメントを読んだり、アセットやBOOTHにあるものを触って設定の変更が及ぼす影響を確認して覚えましょう。
パーティクルシステム - Unity マニュアル
最初はこっちのページが見やすいかも。
その1 Unityのパーティクル「Shuriken」


9.背景はどうやって変えてるの?[追加2019/10/05]

球体(Sphere)や箱(Cube)のモデルを用意して、Blender等を使って面の向きを内側に反転させます(「Blender 面 反転」とかで検索したらやり方出てくるはず。)
面反転させたモデルをUnityで大きくしてユーザーを覆うような形にして配置します。
背景にしたい画像やシェーダーを用意してモデルに適用したら、背景書き換えを行っているかのように見えます。
個人的にはCubeMap系の素材を利用できるシェーダーが使いやすいです。

10.視界揺らし(視界ハック、視界ジャック)の演出はどうやってるの?[追加2019/10/05]

9で記載したユーザーを覆うモデルに視界エフェクトがかけられるシェーダーを適用するとできます。
原理については細かいことは省きますが、BOOTHに置いてあるものの例だとこれです。
パリピシェーダーv11【取扱注意】 - Reimhakのアセット置き場 - BOOTH
他にもScreenFX系のシェーダーが海外Discordで配布されていたりします。

11.作ったアニメーションの確認めんどくさくないですか?[追加2019/10/23]

おきゅたんBotさんが、任意のタイミングからオーディオとアニメーションを同期して再生してくれる素晴らしいものを公開してくださってるので使いましょう。
AnimationTimeController 音にあわせてアニメーションを調整 - おきゅまーと - BOOTH
(以下使うときのTips)
Hierarchyの位置に依存しないので、再生するオーディオとアニメーターを適切に指定すれば適当に作ったGame Objectにコンポーネントを付加して使用できます。
Unity上部にある一時停止ボタンを押した状態で再生し、その後一時停止を解除するのが比較的安定して挙動する感じがあります。

「パーティクルライブの素」を作る

上記に書いた基礎的な事項を踏まえたうえでとても簡略化した演出の素となるものを作ります。
Unityのプロジェクト内に
・オーディオファイル
・アニメーションクリップ
・アニメーターコントローラー
を用意します。

1.Hierarchyに演出の親オブジェクトを作成する

Hierarchyで右クリックのCreate SystemからGameObjectを生成します。
f:id:fleycham:20190909184301p:plain
生成したGameObjectに基礎事項の7でやったようにアニメーターコントローラー、アニメーションクリップの順でドラッグ&ドロップします。

f:id:fleycham:20190909185019p:plain
こんな感じ

2.演出用のオブジェクトとパーティクルを生成する

GameObjectの上で右クリックをして、適当なオブジェクト(今回はCube)とParticle Systemを生成してください。
ついでに用意したオーディオファイルもドラッグ&ドロップでGameObjectの下に入れておきましょう。

f:id:fleycham:20190909190730p:plain
Cubeの作成
f:id:fleycham:20190909190956p:plain
Particleの作成

3.アニメーションウィンドウを開く

Unityの上のWindowタブからAnimationを選択することでアニメーションの編集が可能となるウィンドウを開くことができます。

f:id:fleycham:20190909192641p:plain
WindowタブのAnimation
f:id:fleycham:20190909193039p:plain
アニメーションウィンドウ

4.アニメーションの制作をする

アニメーションウィンドウを開いた状態でGameObjectを選択し、ウィンドウ内の赤い丸ボタンを押すことで録画状態になります。
録画状態で下層のオブジェクトのComponentの値を変更することによって、アニメーションが再生されるとそのフレームでそのような値になるようなキーフレームが生成されます。
試しに0フレーム目と10フレーム目にCubeのScaleの値を登録しましょう。
Xの値を0フレーム目に10、10フレーム目に20にしました。

f:id:fleycham:20190909195702p:plain
0フレーム目
f:id:fleycham:20190909195721p:plain
10フレーム目
こうすることで0フレーム目から10フレーム目にかけて徐々にオブジェクトの大きさが変化していきます。
Particle Systemに関しても同様にON/OFFを切り替えたり設定を変更することができます。
基本的にはこれが演出作成の基礎にしてほぼ全てです。
制御するオブジェクトを増やして音に合わせて位置やマテリアルの設定を変更して演出を作ります。

そして、このGameObjectをアバター内に入れてアニメーションオーバーライドやエモートスイッチでアクティブにすることで自動的にアニメーションが流れるという仕組みです。

あとがき

「作り方」についてはまず作ってる人が少ないうえに我流で道がほぼ整備されてないので、正直「作るために知っておくべきこと」をまとめた方が有用かなと思って記事書きました。
僕がパーティクルライブの作り方を書くとしたら
①ハードコアに合わせて半年くらいビームを撃ってVRCで遊ぶ
②パーティクルライブが作れるようになってる
って感じです。

VRChatには2つのコンテンツしか存在しないという話

VRChatのコンテンツ

について話そうと思う。


自分の好きな姿で、自分の好きな世界を作り、他者と共有できる
VRChatという場所は大きな希望と可能性に満ちた場所だと思うだろう。
その実、VRChatのコンテンツとは2つしかないのである。


2018年の6月上旬にVRChatをやるべくゲーミングPCとOculus Riftを購入し、9ヶ月ほど遊んできました。
VRChatを始めた当初から思っていたことをここに書いていきたいと思います。

VRChatにある2つのコンテンツとは

そもそも、私が何をもって「コンテンツ」と言っているのかをはっきりさせておきましょう。
それは、VRChatにログインする目的と言い換えるのが適切かもしれません。
ゲーム的な目的の存在しないVRChatにログインする目的が何であるのか、それがコンテンツであると言えます。
あまり結論を後に回してだらだらと考えを書くのもあれなので、2つのコンテンツとは何であるかを先に書いておきます。
それは「技術」「人間関係」です。

VRChatには様々なワールドがあり、様々なアバターがあり、様々な人がいます。
そこにいる多くの人々が何をしているのかというと、技術の見せあい人間関係の構築です。
ゲーム的なミッションが存在せず、決められた導線のないVRChatの世界では、コミュニケーションと少しのゲームワールドに行くことがユーザーの行動のほぼ全てです。

VRChatにゲーム的なステータス上昇は存在しないし、ガチャやランダムドロップのような運の要素も存在しない。
そこにあるのは自身が身に着けたモデリングテクスチャシェーダーパーティクルといった純粋な技術だけで、ユーザーがやれるのはそういった(かなり限定的な)創作技術の向上しかないのです。

そしてもう一つ、人間関係の形成です。
VRChatは文字通りチャットツールであり、他者とのコミュニケーションをメインとして行うユーザーが多数です。
前述した技術の向上も他者とのコミュニケーションを行っていく上での話題作りという側面を持っています。
VRChatにおける人間関係の形成を非常に良く可視化しているものが「○○force」といったグループの形成です。
VRCグループリスト - VRchat 日本wiki
もう一歩踏み込んだ関係性の可視化に「Twitterでのお付き合い報告」等がありますがとりあえずおいておきます。(別記事書くかも)
これらはユーザー間で形成した人間関係を可視化することによる、一種の「実績」というような位置づけになっているように思います。
多くの人はおそらくそういったことを意識してはいませんが、なんにせよpublicな環境に行き新しい人間関係を構築するか、親しいフレンドと人間関係を深めるかといったことを行っています。




それで?

結局何が言いたくてこの記事を書いたのかという話ですが、ちょっと前に話題になったVR機器買ったけど後悔した」的なnoteを見て『VRChatにあるコンテンツと需要が合致しないとこうなるのか・・・』と思ったので、自分の目的整理もかねて書きました。

特にこの2つのコンテンツは別の娯楽や多くのゲームコンテンツと異なり「全てユーザー側が能動的に動く必要があり消費者的に何かが提供され続けるわけではない」ということもあり、需要と噛み合うのが難しい点になっている感じですかね。

自分的にはUnityでエフェクトとか弄ったり雑談するの楽しいんで、2つのコンテンツで需要と供給が噛み合ってるって感じです。
路傍の1ユーザーがゲーム(というかプラットフォーム)に対して新しいコンテンツを提供しようだとかは思ってないしできる気が全然しないので今のままでいいですね。