ブログ

こんちゃんの目3.0

※注意!

こちらの記事はVRCがUnity2018ビルドだった時代に書かれた記事です。2019ではステートマシンの中の「Normalized Time」の名称が「Moion Time」に変わっている(名前だけの変更)ため、2019ビルドで参考にする際はそこだけ読み替えて実践してください。

 あけそうなのでおめでとうございます。Najikoです。皆さんはロポリこん、使っていますか? わたくしは使っています。実はこのこんちゃん、標準ではAvatars2.0向けのPrefabのみ同梱されているため、3.0で使うには前回記事に書いたような手順で設定を行う必要があるのですが、それでもなおそのままではわずかながら不具合が発生します。一体何がダメなのか?

 早速ですがこちらをご覧ください。

 みんな大好きこんちゃんことロポリこんです。そして……

 はい、こんちゃんです。上と下の画像の違いがおわかりいただけたでしょうか。上はAvatars2.0、下が3.0です。まあ、静止画ではわかるはずがないので……

 Gifにすればおわかりいただけるでしょう。こんちゃんの目を見て下さい。うるうるしているのが見えるはずです。かわいいね。こちらはAvatars2.0こんちゃんです。表情としては、デフォルトではHand Openに割り当てられているものになります。

 実は、これがAvatars3.0にするとHand Openしていてもうるうるしなくなってしまいます。上の二つの画像のうち、下の方の画像の状態のままになるわけですね。わたくしは数か月、ずっとこの問題に悩みつつ諦めて放っておいていたのですが、先日Discordで、VRCUnity勉強会の管理人であり現在はあまなつちゃんの衣装製作及びあまなつちゃんのアイドルグループ「SummerSweet!」の理事長も行っているIstriaさんからこの修正方法を直接教えていただきました。その方法とは、

 「アニメーションのLoop Timeにチェックを入れて、Normalized Timeのチェックを外せばいい」

ということでした。どういうことか、早速見ていきましょう。

 こちらは前回の記事でも一部設定したこんちゃんのFXレイヤーに設定されているアニメーションコントローラーの中身です。現在選択しているのはRight HandレイヤーのHand Openのステートマシンです。右上のMotionのところに「H_KindSmile.h」というアニメーションファイルが入っているのを見て下さい。まあ、要するに「Hand Openの時はH_KindSmile.hという表情にしますからね」という設定がここに含まれているわけです。

 そして、そのアニメーションファイルをダブルクリックしてInspector欄を見てみると、既にLoop Timeにチェックが入っているのが分かります。これは要するに、このアニメーションは再生後ループする、というただそれだけです。

 ところが、今の設定ではここにチェックが入っているだけでは表情アニメーションはループしません。「Normalized Timeのチェックを外す」までやらなければいけません。では、そちらを見てみましょう。

 先ほどの画像の当該箇所をアップで見てみます。ありましたね、Normalized Time。今はチェックが入っています。そしてParameterとしてGestureRightWeightという変数が入っています。チェックを外す前にこの意味を教えて頂いた通りにざっくり解説します。

 まずNormalized Timeとは、アニメーションの再生時間を特定の位置で固定するものです。そして、この場合右手なので「GestureRightWeightの値に従ってその位置でアニメーションを固定する」ということになっています。GestureRightWerightはFloat変数で、条件によって0から1までの値を浮動小数の範囲で行き来するようになっています。この条件とは、ここではボタンの押し具合……具体的には、オキュラスコンでいうところのトリガーの引き具合で変動するようになっています。つまり……

 「トリガーをどのくらい引いたかに応じて表情が段階的に変化する」

という仕組みが出来上がっているわけです。ところが、これがHand Openにも最初から設定されてしまっています。Hand Openはトリガーを引かないで出す表情ですから、Hand Open状態の時はGestureRightWeightは全く変動しません。0のままです。そしてNormalized Timeの設定に従い、再生個所は0の地点で固定され、変化しません。その結果、

 「うるうるするアニメーションの再生が0の地点で固定される」

という現象が起こるわけです。これではいくらアニメーションそのものはLoop Timeが有効になっていても、そもそも0のところから進んでないわけですから、うるうるするわけないですよね。ということでここのチェックを外します。ついでに、Thumbs upのステートマシンも同様にNormlized Timeのチェックを外しておきましょう。ここにはしいたけ目がキラキラする表情が入っているからです。Left Handのところも忘れずに行いましょう。

 完成!! なんか、デスクトップに表示されてるVRCの画面に劇場版みたいな帯が入ってますけど。画面サイズ変更しても直らなくなってしまいました。ちなみにこんちゃんの表情はNormalized Timeにチェックが入っていてもトリガーの引き具合でほぼ調整できないので、この2つ以外の表情もチェック外しちゃっても別に問題はありません。また、こんちゃん以外にも2.0前提の設定になってるアバターで表情アニメーションがループする仕様になっているアバターはこの方法で修正できるはずです。

 ぶっちゃけこんな簡単な方法でさえ、Unityのアニメーション及びステートマシンの仕組みを理解していないばっかりに、教えていただくまで全く気付くことが出来ませんでした。Istriaさんありがとうございました。

 現状Avatars3.0用のPrefabが用意されていない販売アバターも多くある中、様々なギミックの為に3.0用の設定を行う機会は多くあると思いますので、こうしたちょっとした躓きが少しでも減ればいいな……と思います。怱々。

アバターお手軽メタリック化

 おはこんばんちはっていつから言わなくなったんでしょうね。みんなのアイドル、Najikoです。

黄金アバター・PC編

 さて、今回の記事で紹介するのはこちら。はいドン。

 黄金のアバター!! いいですよねぇ、黄金。いや、黄金ではなくても結構です。金属の質感が出したいわけです。

 オブジェクトを金属のような質感にするにはどうしたらいいのか? 勝手がわからずに適当な設定をしてもなかなかうまくいきません。そんな時はきっと必要なものが足りていないのです。そして、必要なものは以下の通りです。

1.Metalicの設定ができるシェーダー

2.テクスチャのNormal map

3.金属のMatcap

実はStandardで設定ができるのですが、わたくしはSunao shaderを使っています。こちら。

https://booth.pm/ja/items/1723985

 ではまず、アバターの地の色から調整していきます。いわゆる「色改変」となります。各種ペイントツールなどでテクスチャの色を調整してください。具体的には黄金なら黄色いアバターに、銀色なら少しねずみ色に、ブルーメタリックみたくしたければ青に……といった感じです。今回のメネちゃんの場合、メタリック処理を施さなければこのようになります。

 この色だと、光源が白い場合は黄金というよりかは真鍮とか黄銅みたいな色になります。「応募者全員サービスでもらえる限定バーションのやつ」とよく言われます。男の子ってこういうの好きなんでしょ……? で、このベースのテクスチャが完成したら……

 こちらのサイトでNormal map化します。Normal mapって何、というと、表面の凹凸を表現する時に使うテクスチャマップです。このサイトでは凹凸の感じを数値で調整しながらNormal mapを作成することが出来ます。

http://cpetry.github.io/NormalMap-Online/

 一番左の画像のところをクリックすると画像が取り込めます。(Hight mapを選択した状態でOKです。)真ん中上のスライダーで強度をいじれます。完成したら下のDownloadからダウンロードしましょう。

 Normal mapがない状態ではMetalicが有効でもこんな感じです。ここで一番上のMain Color &Texture MapsのNormal mapのところに先ほどのサイトで作成したNormal mapを入れると……

 ジャン。元テクスチャとNormal map化したテクスチャが違ったのでNormal mapを入れた時だけ手描きのポッケが浮き出てしまいましたが、それ以外にも表面がざらざらした感じが出ているのがおわかりいただけるでしょうか。これができたら次は下のEnable Reflectionを設定していきます。

 Enable Reflectionにチェックを入れると、Reflection maskとMaterial Capture(Matcap)にそれぞれ画像が設定できるタブが出て来ます。

 Reflection maskに入れるテクスチャは、テカテカさせたくない箇所を黒く塗りつぶしておいたものを用意して入れましょう。何も入れないと容赦なく面全体がテカテカします。そして、下のReflection Enviromentでテカり具合を調整できます。ここは実際にいじって確認するのが一番いいでしょう。

 問題は下のMatcapです。ここが黄金になるかツヤツヤのプラスチックになるかの瀬戸際、といったところです。Material captureのところに入れるのは質感を上書きするための画像で、例えばここに金属みのあるMatcap用画像を入れればどこにいてもその金属の質感で描写されるようになります。ひとまずはフリーで公開されているMatcapを使うのが手っ取り早いです。

 またこちらの記事に従えばUnityの拡張エディタで、スフィアに描写したテクスチャをキャプチャして自分で作ることもできます。

 実際にMatcapを設定するとこのようになります。

 しっかり黄金の感じが出ています。余談ですが、Reflectionを設定するとワールドの光景をアバターが反射して映し出すようになります。が……どうもワールドのライティングによって反射するワールドとそうでないワールドがあるようで、反射しないワールドに行ったときは上の写真のように反射面にMatcapの画像が映し出されます。UnityのScene上ではSkyboxを映し出すため、写らないワールドでの見え方をテストしたい場合はLightingタブからSkyboxのMaterialをNoneにして何も映らないようにしなければなりません。

 Skyboxを有効にするとこのように映りこんでいるのがわかりますね。

これにてテカテカ金属アバターの完成です!

黄金アバター・Quest編

 で、上で紹介したのはPC用アバター編なのですが、Questでは黄金の感じにできないの? と思われた方、朗報です。Questでもmatcapを使って金属の質感を出すことが出来ます。そのための設定がこちら。

 VRChat/Mobile/MatCap litというシェーダーを使えばOKです。Questではアバターに使えるシェーダーが厳しく限定されていますが、このシェーダーは使用可能です。そして、画像のようにメインテクスチャの他にMatcapを設定することが出来るのです。PCで使えるシェーダーと違ってNormalmapやMetalicの細かい設定はできませんが……

 完成するとこんな感じ。マスクも使えないので、金属っぽくしたい箇所はメッシュが分かれている必要があります。大味ではありますが手軽であることは間違いないので、Questでも金ぴかを目指したい人はぜひ試してみてください。

 以下おまけ。

 はじめはMetalicだけ有効にしていたのでせいぜいこんなもんでした。ツヤツヤテカテカしてるだけなので、ドラゴスライムみたいな見た目になっています。

 その後、一通り設定したのがこちら。完全に呪いをかけられて全身が黄金と化してしまったこんちゃんですね。まあ、これはこれでいいのですが……

 マスクを利用して皮膚と目の部分の金属化を避けました。Normal map次第ではまだまだ金属感が出せそうな気はするものの、なかなかいい感じです。白飛びが激しいDeep Blueのワールドでも質感が維持され、Sunao shaderの元々の特性で皮膚部分の白飛びも起きていません。ただし……

 Bloomが強いワールドにいくとこうして光り輝くこともあります。うおっ、まぶしっ!!と言われたらそっと隠れましょう。

 いかがでしたか? と書くとアフィリエイトみたいでアレですね。何はともあれ、これでアバターに限らず色々なものをリアルな金属にして遊んでみましょう。今日からあなたもVR純金資産家です。 

Viveコンの履き方

 一億二千万人のイルカの人ファンの皆さん、ごきげんよう。わたくしはNajikoと申します。この度、イルカ人AdventCalendar2020に便乗して12月20日付の記事を担当することにいたしました。やるぞ。

 Viveコンを履く。それは一体どういうことなのか。

・必要なもの

1.Viveコントローラー

2.ViveHMD

3.ベースステーション

4.パソコン

5.スリッパなど

 最初にお断りしておきますが、この記事は今現在Vive以外のHMD(この記事ではQuest2)とコントローラーを使用していてかつ、アウトサイドイン方式のViveHMD一式(ベースステーション含む)が余っている人向けです。具体的には「無印Vive使ってたけどQuest2に買い替えた」など。フルトラを目指す時、普通はViveトラッカーを3つ買うことになります。しかし……アウトサイドインのViveHMD一式が余っていればその必要はないのです。1個でいいのです。それはなぜか?なぜなら、Viveコンはファームウェア書き換えでトラッカーとして使うことが可能だからです。そしてその方法については……

https://hoshigari-gamer.com/vive-controller-tracker-change/

こちらの方の記事をご覧ください。わたくしが発見したわけじゃないですからね、まあ、こうなりますわな……けどもし何らかの理由でリンクが切れてしまった場合永久に手順が分からなくなるので、こちらにも文字だけで手順を簡潔に書いておきます。

1.CドライブのProgram Files (x86)にあるSteamフォルダを開きます。

2.steamapps、common、SteamVR、tools、lighthouse、bin、win64と順にフォルダを開き、中にあるlighthouse_console.exeを起動します。

3.コマンドプロンプトが起動するので「downloadconfig」と入力しエンター。

4.拡張子がjsonとなっている、Viveコンのconfigファイルがフォルダ内にダウンロードされます。コマンドプロンプトは閉じないでおいて、このconfigファイルは書き換えるので、まずはバックアップを取ります。

5.書き換える方のjsonファイルをメモ帳などで開き、”device_class”:”controller”,と書かれているところの”controller”部分を”generic_tracker”と書き換えます。さらに一番下の方に進み……

"model_name": "Vive. Controller MV",
    "render_model": "vr_controller_vive_1_5",
    "revision": 1,

と書かれている部分をごそっと消して

"model_name": "Vive. Tracker PVT",
"render_model": "vr_tracker_vive_1_0",
"revision": 1,
"tracked_controller_role": "",

と書き換えてしまいます。

6.コマンドプロンプトで”uploadconfig 書き換えたファイル名.json”と入力してエンターを押すとファームウェアが書き換えられます。書き換えられたファイル名の部分は各自この度ダウンロードしたファイル名を入力してください。

7.”poweroff”と入力してエンターすると閉じます。

これで無事、Viveコンはトラッカーと化しました。おめでとうございます。なお、コントローラーに戻す時は”uploadconfig”でバックアップしておいた方のconfigファイルをアップロードすればOKです。

 さて、ここで一つ問題が。皆さんはViveトラッカーを持っていますか?持っている方はトラッカー1個の内容物を思い出してください。

Viveトラッカー1個、充電ケーブル1本、ドングル……

ドングル!!!

 そう、ドングルです。Viveコンをトラッカー化すると、ドングルがありません。これではSteamでペアリングすることが出来ません。ですが、心配することはありません。まさかこの記事を読んでやってみようとしている貴方はViveコンしか持ってないなんてことはないはずです。ないと信じたい。ほら、Viveコンを普段認識してくれているパソコンと繋がってる機器がきっとその辺に転がっていますね。はい。ViveHMDです。無印ViveでもproでもCosmos Eliteでもかまいません。Cosmosなどのインサイドアウトのやつはダメです。とにかくベースステーションを使用するアウトサイドイン形式のものならOKです。これらのHMDは普段Viveコンを認識してSteamと同期させてくれています。2個分のドングルが内蔵されているのです。ですから、例えばQuest2でこれらを使う場合……

1.Steamのconfigフォルダ内のdefault.vrsettings(よくdefault.vrsettingsをいじる旨の情報がヒットしますがこれは間違いです)steamvr.vrsettingsファイルをメモ帳などで開いて “requireHmd”: false, “activateMultipleDrivers”: true,に設定する(詳しくはここでは書ききれないので「Quest2 フルトラ」などで調べてみて下さい)

下の方にあるファイルです。

2.OpenVR-Space Calibratorを導入。(これも同上)これはコントローラの位置情報を利用してトラッカーの位置を補正するアドオンです。Steamのオーバーレイメニューから、一連のペアリングが済んだ後に使用します

3.Quest2でSteamVRを起動

4.ベースステーションをb、cの順に接続(電源を入れた時に中にデジタル表示されるアルファベットを確認してください)しViveトラッカーを1個ペアリング

5.ViveHMDをPCに接続(接続時にVivePORTを起動する設定は事前に切っておいてください。切っておかないとSteamVRがViveHMDに乗っ取られます)

6.トラッカーと化したViveコンをペアリング

という手順を踏む必要があります。HMDは実際に使う方とドングルの役割をするViveHMDの2台繋がなきゃならないわけですね。ViveHMDはHTC社の要らぬ気遣いにより、接続しただけで勝手にSteamVRを起動してHMDを有効化させてしまいます。Oculusと併用する際は気を付けて下さい。

 そして、実際にわたくしが使用しているものがこちらです。

 完全にViveコンを縛り付けていますが、固定が緩いとブラブラするのでしっかりと固定することをお勧めします。今回の場合電源ボタンを下にして縛ってしまっているのでONにしにくいですが……また、当然重量があります。Viveコン自体がかなりデカいのでこうなってしまうのも致し方ないところではありますが、あまり出っ張った状態で固定すると蹴り飛ばして破壊することになりかねないので十分に注意してください。この画像の物はビニールひもでグリップ部分を、先端部分は100均で売っている万能バンド(マジックテープがついている伸びるベルト。2本で100円で汎用性が高いです)を使用しています。

 こちらは実際にViveコンを履いてインした時の様子。

全身で腰が曲がることをアピール

 ヨシ!のポーズはみんなやりがちですが、床の安定性と筋力によっては難しいこともあります。

感涙に咽びながらヨシ!

 フルトラッキングはこうした導入手順やセットアップの煩雑さはありますが、筆舌に尽くしがたい臨場感をもたらしてくれます。Viveコンを履く際の細かい設定や注意点はこの記事ではとても全部解説しきれませんが、使用する手順はこの記事の通りなので、記事内の各手順のいずれかを詳しく検索すればとりあえず「何が分からないかわからない」ということはないかな、という感じです。ごめんな!!!特殊な例ではありますがこの記事がフルトラを目指す一助になれば幸いです。よいVRライフを。メリークリスマス。

アバター導入(Avatars3.0)

前書き

 射出!!

 どうも、Najikoです。

 Twitterで、書いて欲しいアバターギミックの記事あったら書きますよ、とそれとなく呟いたものの、具体的なリクエストは1つも来なかったのでもう順番に書いていきたいと思います。スン……

 今回行うのは以下の1点です。

1.boothで販売されているアバターをVRCSDK3で導入

 それだけかよと思ったそこのあなた、正解です。実は本当は小物の導入とアニメーションによる出し入れまでは書こうと思ったのですが、Write defaults関連の設定(後述します)が普通に大変なのでそこまで書けませんでした。許して。

準備するもの

 では見ていきましょう。

 まず、Unityをインストールしてください。バージョンは2018.4.20f1です。

※この記事を書いた段階では2018.4.20f1でした。2021年10月現在では2019.4.31f1となっています。記事内の画像は2018.4.20f1のものですが、見た目以外の操作は変わりません。

 次に、今回はboothで購入したアバターの導入を前提にしているのでとりあえずboothで実際に販売しているmidoriさん製作のアバター、ロポリこんを例に挙げて説明していきます。他のアバターでも概ね同じ手順で行うことが出来ると思います。

https://booth.pm/ja/items/1415037

 次にVRCへのアバターのアップロードに必要なVRCSDKというものをダウンロードしていきます。

https://vrchat.com/home/download

 右下の”Download SDK3-Avatars”からダウンロードします。

 さらに今回もう一つツールを使用します。Avatars3toolsです。

https://booth.pm/ja/items/2207020

 これはVRCSDK2用に設定されたアバターをVRCSDK3用に設定し直すツールです。実は現状最新版のVRCSDK3(2020.11.30)だと最初に大変だと書いたちょっとした不具合が出ますが、後で直します。
2021年1月6日追記:Avatars3toolsの更新により自動で行ってくれるようになったため6~9の手順は現在は手で行う必要はありません。仕組みが知りたい方は読んでください。
また、「Avatars3.0に対応」と謳ったアバターを購入した場合はこのツールは不要です。アバターに同梱された導入方法に従って導入してください。

Unityの使用

 では早速インストールしたUnity を開いていきましょう。

 Unityを開いたら右上のNewのところをクリックして新しいプロジェクトを作成します。プロジェクト名をつけて右下のCreate projectを押せば……

もっと親のScene見ろ

 はい。親の顔より見たUnityのSceneが表示されます(なお、わたくしの親は今卵を床に落としてキレ散らかしています)。

アセットのインポート

 Sceneというのは①に示した、アバターなどが表示される領域です。ではここにアバターをインポート……する前に、

 Sceneの2つ右隣にAsset Storeというものがあります。これはUnityで使うAsset(ゲーム開発に使用するプラグイン)を販売しているページで、ここでAssetを購入及びインポートすることが出来ます。ここでは詳細は省きますが、Dynamic BoneというAssetを購入している場合、インポートすることで自分のアバターの揺れもの(尻尾や耳がなめらかにゆらゆらするなど)の処理を行うことが出来るようになります。販売されているアバターの多くはこれの設定がデフォルトで入っており、Dynamic Boneをインポートしていない状態でアバターをインポートすると当該の設定項目がエラーになるので、できれば購入しておいた方がスムーズです(有料です。通常は20$します。一度購入すれば何度でもインポートが可能です)。今回はとりあえずインポートしておきます。ない場合の手順も申し訳程度ですが紹介します。

 画像で示されているimportのところをクリックして、これをインポートしますよーというwindowが出たら右下のimportボタンを押せばインポート完了です。

 左下をご覧ください。Assetsの下にDynamic Boneフォルダが出来ていますね。ここに関連ファイルが入っています。開いていじることはありません。

 ちなみにこれ以降のインポートはここに書いた手順通りに行ってください。順番が前後するとエラーが起きる可能性があります。

 次にVRCSDK3のインポートです。

 左上のAssetsから画像の順にタブを開きます。

 ダウンロードしたこれを選ぶと……

 このように表示されるので右下のimportボタンを押します。

 これは拡張子がunitypackageとなっているパッケージされたファイルに共通のインポート手順となります。

 次はAvatars3toolsのインポートです。手順は先ほどと同様で、ダウンロードして解凍したフォルダ内のUnitypackageをインポートしてください。

 これです。

 ここまで行えていれば

 このような感じで上の項目が増えているはずです。VRChat SDKはアバターをアップロードする時に使用、VRCAvatar3TooslsはVRCSDK2用のprefabを変換する際に使用します。

 prefab?なんでしょうか、それは……その謎を解き明かすためにいよいよアバターをインポートしていきます。手順は先ほどと同じです。解凍したアバター本体のUnity packageをインポートします。

 はい。ここで大変なことに気が付きました。右下にピンクの塊みたいなのがありますね。あそこには本来正しい姿のロポリこんが表示されているはずなのですが、シェーダーをインポートし忘れてこうなっています。シェーダーとはざっくり説明すると、3Dモデルに色やテクスチャなどをどのように描写するかを決めるプログラムです。アバターによってはシェーダーを同梱している場合もありますが、ロポリこんについては規約の中の導入手順に「あらかじめユニティちゃんトゥーンシェーダー2をインポートしておくこと」とあります。規約をよく読んでおけば気づけたということですね(今回は素で忘れました)

 忘れずにダウンロードしてインポートしておきましょう。

UTS2 http://unity-chan.com/download/releaseNote.php?id=UTS2_0

 UTS2はこのようにパッケージをまとめてドラッグして、一番上の画像の③にあたるprojectのところにドラッグアンドドロップすると一挙にインポートできます。

 そうしたらいよいよAvatars3toolsを使用していきます。画像のタブからコンバーターを起動します。なお、シェーダーを後からインポートしたせいで下のアイコンがピンクのままですがシェーダーに関しては後でインポートした場合でも(多分大体)正常に機能するのでこのまま進めていきます。

アバターのコンバート

 ウィンドウの2.0 Avatar Prefabのところにprefabをドラッグアンドドロップします。

 ロポリこんの場合、右から3番目のやつがPC用アバターのprefabです。prefabとはセーブデータのようなもので、今回の場合最初から「この設定でそのままアップロードできますよー」というセーブデータが同梱している、という状態になっています。ただし、このprefabはVRCSDK2向けなので3向けに変換しなければなりません。現在販売しているモデルの多くは、特に記載がなければVRCSDK2向けになっています。

 ではConvert Avatar To 3.0を押していきます。

 ついにアバターが表示されました。シェーダーを後からインポートしてもScene上ではしっかり表示されているのが分かります。ではまず、画像右側にある警告マークがついているScriptのところで右クリックして……

 Remove Componentで削除します。こうするだけでもうVRCSDK3でアバターをアップロードすることはできます。

 なお、Dynamic Boneを導入していない場合は下のDynamic Bone(Script)も同じように削除していっても結構です。

表情の不具合対策・手順1

 さてここからちょっと大変です。

 アバター右側のコンポーネント欄をスクロールしていくと、下の方にFXという項目があります。転がして儲けるやつではなく、アバターのアニメーションをコントロールしている項目です。これをダブルクリックします。

 するとこのような画面が出ます。Layersタブの下には始めはAll PartsとLeft、Right Handの3つのレイヤーがありますが、右上の+ボタンを押して、New Layerを一つ追加するとこのようになります。

 New Layerの右側のギアマークをクリックして、Weightを1にします。新しいレイヤーを作った時はこれをやっておかないと設定したアニメーションが動きません。

 ここまでできたらNew Layerを引っ張ってAll Partsの下に持ってきます。そうしたらレイヤーの事は一旦忘れて、左側のHierarchyタブの下にあるLowPoly_konをクリックした後、右側のInspectorの隣のAnimationタブをクリックします。すると、このような画面になります。

 右側にCreateボタンが見えますね。見えない場合はAnimationのタブで開いてる部分を左側に引っ張って拡大してください。するとこうして見えます。

 Createボタンを押すと現在選択しているフォルダ内にアニメーションファイルとアニメーションコントローラーを作成します。今回は「Blend shape0」という名前にして保存を選んでいます。アニメーションがごちゃごちゃしているフォルダに入れると訳が分からなくなるので今回はAssetsフォルダを選択した状態で作成しました。画像で選択されている2つのファイルが作成されたファイルです。左の再生ボタンがついているものがアニメーションファイルで、今回設定して使用するものです。右側のアニメーションコントローラーはアニメーションを設定する時に使用するファイルですが、アニメーションの設定が終わったらあとで削除します。

 Sceneに戻ってHierarchy上のロポリこんのところをクリックします。すると、Animationタブ右上の再生ボタンを押せるようになります。これを覚えておいてください。その上で……

 ロポリこんのprefab下の階層にあるLowpoly_konをクリックし、Skined Mesh rendererの下にあるBlend shapeを展開するとこのようになります。これは何なのかと言うと、prefabの階層の中に在るLowPoly_konはメッシュ(3Dモデルのガワのこと)です。Blend shapeとはこのメッシュの一部に変形する余地をあらかじめ設定してあるところの事で、この値をいじると当該箇所のメッシュが数値に合わせて歪みます。わかりづらく書いてますが要するに主な利用方法は表情の変更です。ロポリこんは全身のメッシュが1つになっていますが、他のアバターでは複数メッシュがあるうちの顔のメッシュにこのBlend Shapeがついていることが多いです。で、これを何するかと言うと……

 全部1にします。これはあとで0に戻すのですが、「全部0にするアニメ―ション」を作るために一度値を入れておきます。

 先ほど上の方で、HierarchyのロポリこんをクリックしてからAnimationタブを開くと録画ボタンがクリックできるようになっていたのを思い出してください。押します。そして……

 先ほど見たメッシュのBlend Shapeの画面を開きます。そして、全て1になっている値に0を入力していくと、画像のように入力したところが赤くなります。これを全部やります。

 それが終わったらAnimationタブに戻って再度再生ボタンを押すと、このようになります。こうすることで「全部のBlend Shapeを0に戻すアニメーション」が完成しました。めでたしめでたし。

補足(まばたきとリップシンク)

 ……と、言いたいところだったのですが少し追記です。こちらをご覧ください。

 これはロポリこんのリップシンクの設定です。リップシンクとは、簡単に言うとブレンドシェイプを利用してVRCでしゃべった時に口を動かすための設定です。このvrc.v_sil以下のブレンドシェイプはそれぞれの発音をした時にそのような口の形になるように設定されたブレンドシェイプなのです。先ほど「全部0に」と書きましたが、リップシンク用のブレンドシェイプまで0してしまうとリップシンクが機能しなくなってしまいます。面倒ですが、このリップシンク用のブレンドシェイプは、ブレンドシェイプを0にするアニメーションを作成する時は対象から除いて下さい。

 それともう一つ。まばたきに設定されているブレンドシェイプも同様に0にしないようにしてください。具体的にはロポリこんの場合は「Blink_L」及び「Blink_R」という名前のブレンドシェイプです。ロポリこんはデフォルトではまばたきは設定されていない(はずです)のでこの場合影響はありませんが、まばたきを設定しているアバターの場合はこれも0にするアニメーションを入れてしまうと機能しなくなります。

表情の不具合対策・手順2(Write defaultsについて)

 さて、話を戻しましょう。こうして先ほど作成したファイルのうち、アニメーションコントローラーの方を削除します。すると、再度Createボタンでアニメーションファイルが作れるようになります。そうして先ほどと同様にアニメーションファイルを作成したところがこちらになります。今度は「non」という名前にしています。このアニメーションファイルはこれ以上いじらず「何もしない空のアニメーション」として使います。よって、作ったらすぐアニメーションコントローラーの方のファイルは削除してOKです。

 その後、再度Blend Shapeを見に行くと先ほど0にした値が全て1に戻っていると思います。先ほど0にしたのは「0にするアニメーションを作る」ために入力しただけなので、アニメーションの編集と関係ないところで再度0に戻しておく必要があります。この段階で忘れずに全て0に戻します。

 次に、再度Hierarchy上のLowpoly_konのprefab(メッシュではなく青い箱の方)をクリックしてInspector欄をスクロールし、下にあるFXのところをダブルクリックして、レイヤー画面を開きます。

 New Layerを選択したら先ほど作成した「Blend Shape0」のアニメーションをNewLayerウィンドウの中にドラッグアンドドロップして入れます。すると、Entryのとことから勝手に矢印が引かれてこのようになります。次に、オレンジ色のBlend Shape0をクリックして右側のInspector内のWrite Defaultsにチェックが入っているか確認してください。入っていたら外してください。

 次に、Left Handのレイヤーを開きます。オレンジ色のIdleのところをクリックし、Inspectorタブの上にあるMotion欄にBlend Shape0のアニメーションファイルを入れます。そして、その下にあるWrite Defaultsのチェックはこちらもついていたら外します。

 その後、枝が伸びた先の灰色のボックスを選択し、全てにこれまで同様にWrite Defaultsのチェックを外していきます。

 続いてRight Handです。IdleのMotionには今度は「non」のアニメーションファイルを入れます。そして、ここでもWrite Defaultsのチェックはこの画像のように入っている場合は外しましょう。

Write defaultsの仕掛け

 一応概要というか余談になりますが、この左手、右手はコントローラーの入力状況によって表情が変わる部分を制御しているレイヤーです。何も入力していなければIdleのアニメーションが適用されます。そして、灰色のボックスは各入力状況に応じたファイルが入っています。で、Write Defaultsはなんなのかというと、当該のアニメーションを再生する際にアニメーション値が設定されていない項目はデフォルト値を使用する、というものです。今回の場合、メッシュのBlend Shapeを全部0にしてあるので、アニメーションファイルの中でいじられていない部分は0を使用する……ということになるはずなのですが、直前のアニメーションの状況でデフォルト値として参照される先が変わることがあり、VRChatではこれが様々なバグを引き起こしていました。そこで、このバグ発生以降VRCSDK3ではWrite Defaultsは基本的にオフでレイヤーが作成されるよう変更されたのですが、表情のレイヤーについては元々Write Defaultsありきの構造のままチェックだけ外してアップロードすると「コントローラーから手を離しても表情が戻らない」といったことになります。これは困ります。そこで、この方法で何もしない時全部のBlend Shapeを0に戻すアニメーションが再生され、手がIdleの時は空のアニメーションの再生を挟むという、元々はWrite Defaultsで行っていたことを行うレイヤーの構造を作る必要があるわけです。そんなわけで今VRCはWrite Defaultsの使用を推奨していない(Unityの仕様上カバーしきれんから使ってバグ起きても知らんからね、ということ)ので、表情以外のところでも「アニメーションをオフにする時は「0の状態を再生する」方に遷移する仕組みを省かない」「何もしない(Idle)のレイヤーは空にせず”何もしないアニメーション”を入れる」という基本的な考え方を覚えておくと役に立ちます。

VRCへのアップロード

 いよいよアップロードに移ります。VRChat SDKからShow Control Panelをクリックしてコントロールパネルを開きます。最初にVRCにログインするよう要求されるので、ログインします。

 右のBuilderのタブをクリックするとこのような画面になります。右下のBuild&Publish for Windowsをクリックするとアップロードの準備が始まります。

 この画面が出たらひとまず大丈夫です。Avatar Nameに好きな名前を入力して、Uploadボタンの上のチェックボックスにチェックを入れ、Uploadボタンを押す……前に、その上のSharingの項目でPrivateにチェックが入っていることを必ず確認してください。販売されているアバターはほとんどの場合パブリック(誰でも使えるようにすること)でのアップロードが規約で禁止されています。ここは毎回必ず指さし確認して……Uploadボタンを押します。

 お疲れさまでした。これであとはVRCに入ればアップロードしたアバターが使えるようになっているはずです。次回はこのアバターにアクセサリや道具を仕込むなどの改変の仕方について書けたらいいな……と思います(願望)

 なお、アバターがアップロードできるのはNew UserからなのでVisitorの方はVRCを遊んでNew Userになるまで頑張って下さい。では、わたくしはアイドル集会に行ってきます。さようなら。

失うばかりの記憶

 今年も、もう、おしまいですね……

Najikoです。

 いちいち前回の記事の振り返りというか補足から始まるのがもう、デフォでいいのではと思う今日この頃ではありますが、今回もそんな感じです。そうですね、前回の記事を読み返すとこう、なんというか……

 「初心者案内ハイエナして時間が合うフレンドを見つけたぞイェー!!」

みたいな、おおよそ人の心が感じられない内容となっておりますが、もちろんかしさんと続けて遊ぶようになったのは時間が合ったのだけが理由ではありません。初心者案内ハイエナしてたのは事実ですが、邪魔はしてないので勘弁してください(何を?)

 高いコミュニケーション能力がある人とは、お互いに沈黙を気まずく感じないものです。わたくしは無言勢ですから、わちゃわちゃしてなければ常に沈黙しているわけですが、前回の記事でもそれとなく書いた通り、かしさんはわたくしが静かにしているだけでもどっかに行ってしまったりはしなかったのです。その他にも、行きたいワールドに誘ってくれたりとか、イエス、ノーで答えられる質問をしてくれたり、他の方がいるときはジェスチャーの意図を汲んでくれたりとか……とにかくお世話になったのですよね。だから人見知りのわたくしでも、かしさんがいるとこに行けば安心して遊べるな、という気持ちでインすることが出来たのです。

いつしかペンが使えるアバターで言葉も伝えられるようになりました。

 それはこれ以降に出会って今でも交流が続いているフレンドにも言えることで、皆信じられないほど親切にしてくれています。

これが、わたくし……?

 で、いよいよえらい集会に参加です。えらい集会……それは、地獄のような現世においてただ一日を生き延びたことを称え合う、世界最後の楽園のような集会です。参加した時点で生き延びていることは証明されるので、23時に集会が開始したら、主催者にjoinする形でワールドにインして「えらい!!」と言っていただき、あとは記念撮影の時間まで自由という、誰もが生きてさえいれば気軽に参加できるところが最大の特徴です。

人間賛歌の祭壇

 参加人数は日増しに増え、第一インスタンスはあっという間に埋まってしまいます。主催のふららんさんが第一インスタンスにいることが多いのですが、人が多くなると重くなる為スタッフが第二第三のインスタンスを立てて参加者を誘導します。わたくしはそちらに行ってしまうことが多いのでふららんさんが写った集合写真がほとんど撮れていません。上の写真にも写っていません。

 この頃のスクショを見直してみるとこの頃はえらい集会とTutorial worldを行ったり来たりしてフレンドを何人か増やしていた形跡が見て取れるものの、こう、そのですね……全員とどこで出会ったか全部は覚えていないし、辿ってもイマイチ判然としないのです。恐ろしいことです。人間は忘れることが出来る生き物だと言われていますが好きで忘れているわけじゃありません。わたくしが初心者案内に同行した時に知り合った方は覚えているのですが、その後フレンドが連れてきたフレンドのフレンドだとかになると、いつの間にか輪に加わっていた、ということになって、わたくし個人との出会いのエピソードは端的に言えば

 「いつも通りインしたらいて、遠巻きに見ていた」

ということに尽きてしまうわけですね。多分、それは相手も同じことだと思います。会ってからどこかに行ったときはよく覚えているのですが、集会に出てその日はおしまい、となるともういよいよいつのまにかヘイホーです。

1時間以上走り回りました

 こちらはスレンダーマンから逃げながらマップ内に散らばる紙(なんかのページ)を探すワールドです。クリア記念に撮った写真の左から順に、かしさん、matoriさん、わたくし、motaさん、ふじよしさんと並んでいます。このうち初心者案内にわたくしが同行したのはふじよしさんだけで、matoriさんとmotaさんは(わたくしの記憶が正しければ)かしさんがどこかで知り合ってこうやって遊ぶときや集会参加時に連れてきていたはずです。

3時くらいまでかかりました(1)

motaさんとはいつの間にか知り合ったものの、お互いに無言でクイズを完走するという快挙を成し遂げたのが思い出深いエピソードとして記憶に残っています。

3時くらいまでかかりました(2)

 こうしたエピソードは、記録に残さなければ細部が失われていきます。このブログは、願わくばそのような思い出をつなぎとめる楔になればいいな、と思います。ちなみに上の写真は、スノウエルフちゃんがめちゃくちゃ巨大化するワールドのおまけのクイズ、下の写真は30階まであるリドルタワーです。上の写真の時はかしさんも一緒に行っていたのですが途中で抜けたのでmotaさんと二人で最後まで完走しました。この時はペンを出すアバターを別に使っていましたが、下のリドルタワーの写真の時はプレーンに見えるこのこんちゃんの袖の頂点の一つにペンが仕込んでありました。ちなみにこの時もかしさんが途中までいたのですがやはり最終的にはmotaさんと二人になりました。二人で感涙に咽ぶ様子が我ながらよく撮れています。

 なんだかこの調子だと記事を書くスピードより疲れを知らない子供のようにわたくしを追い越していく時の方が遥かに速いのではないかという気もしますがまあ、ぼちぼち書いていきます。そんなわけで今回はこの辺で。怱々。

えらくなる時

前回はゲーム開始からチュートリアルワールドで初心者案内という名のVR人権宣言を受けたところまで書きましたが、今回はその続きとなります。「転機が訪れる」と結んだ前回ですが、実はまだもう少しかかります。

後にパーソナルカラーとなるNajikoの図

チュートリアルワールドでうろちょろして生きていくことができるようになったわたくし。とはいえ、無言でまだアバターにペンが仕込めることも知らないわたくしは「いーれーてー」が言えない。チュートリアルワールドにたむろしてる人たちもいるのですが、その輪に入ることはできないのです。悲しみ。初心者案内をしてくれた大好きさんがチュートリアルワールドにいるときはjoinしていましたが、当然いつもいるとは限らないし、他のワールドにいるときは「まだ自分は部外者だしな……」と思ってjoinもできません。どうしても、知らない人がたくさんいるところめがけてjoinできなかった。弱すぎる。日本人がいっぱいいるコネクトステーションは紹介されていたので、たまに遊びに行ったりもしていましたが特に状況は変わりません。しかしそんな中、チュートリアルワールドに潜みながら生きていく道はまだ存在していました。

人の初心者案内についていく!

なんて素晴らしい案なのでしょう。我ながら鬼才が過ぎる。初心者案内についていけば少なくとも自分よりはVRCに慣れてないユーザーにビミョーに先輩風を吹かせつつ、フレンドは増えるし、集合写真に写り込めるし、終わった後は誘われるままにみんなで遊び行くこともできます。そしてゆくゆくは……うむ、これだ……

心の師、なでもふ氏のワールドにある飛行アバターの導入法

そうそう、そんなことしてる間に大好きさんにjoinしていた時に、話に聞いていた「空が飛べるアバター」は何をどうすれば実現できるのか、と悩んでいたことがありました。そんな折たまたま大好きさんと一緒にいた、飛行をはじめとする多機能なアバターの作者であるなでもふさんにお会いすることができ、企業秘密かと思っていた飛行アバターの仕組みを余すことなく教えていただいてこんちゃんを飛行させることができたりしました。その後アバター改変にいそしむ原点はここにあるのかも知れません。

日陰者のこんちゃん

初心者案内にはこんな感じで写り込みます。一時は「いつも初心者案内に写り込んでるこんちゃん」として有名にならないかな、とか思いましたがそもそもわたくしがインする深夜にチュートリアルを受ける人は存外少なく、「収穫」のない日が続くこともありました。

ドキドキしちゃいますね

スノウエルフちゃんがむちゃくちゃ巨大化するワールドに一人で遊びに行ったりしたこともありましたが、この頃はかなしい酔ひに負けて寝込むこともありました。今ではちょっとやそっとのことではVR酔いしませんが、正直こんな酔うならどのみち長続きしないんじゃないかと思ったりもしていました。人間、慣れるもんですね。

運命の日、7月8日。実にVRCを初めて2か月。ついに初心者案内についていく暮らしに終わりが訪れようとしていました。ぶっちゃけて言うと、それまでの間に初心者案内についていってその後皆で遊ぶところまでもっていけた回数は数えるほどしかありませんでした。皆寝ちゃうからね、仕方ないね……そもそも、わたくしは初心者案内に混ざることを目的に初心者案内に混ざっているわけではありません。その後も一緒に遊べてかつ、VRC内で知り合いがまだ少ない誰かを探し求めていたのです。ですから、その時フレンドになった人に「またインしてたらjoinしよう」と思ってその後毎日チェックしてみるも全然インしなくなってしまったり、プライベートワールドに籠っていたりして、振出しに戻って孤立する日々が続いていました。

かしさん

7月8日のこの日もわたくしは初心者案内にくっついていっていました。正直、無言でいると頑張って手を振っても相手にしてもらえないこともあったのですがこの日はかなりいい感じに盛り上がってその後遊びに行ったりもしています。この時にフレンドになったのがかしさん。このかしさんこそ、わたくしが2か月にわたって探し求めていたプレシャスワン……「明日からもjoinできる初心者のフレンド」だったのです。

その後もお世話になったネムさん

この日はパーティクルがめちゃ綺麗なワールドに行くなどして、あー、楽しかったなーという感じでいつも通り終わりました。けれども……次の日も、また次の日も……遊べる……「また明日ね!」そう言って友達と最後に別れたのはいつだったでしょうか?放課後の、あの楽しいひと時。いつしか失われていったあの楽しみが、蘇る瞬間……VRCの真なる楽しみに、わたくしはようやく辿り着いたのです。そう、VRCはVRSNS。コミュニケーションツールであるからには、本当はいつまでもコミュ障ではやってられないわけですが、こんな「裏技」で現在に至るまで続くコミュニティの核を形成することになるとはこの時わたくしは思っていませんでした。

なんて楽しそうなんでしょう

かしさんはその後も度々チュートリアルワールドにいたのでわたくしはそこめがけてjoinしていました。かしさんはわたくし同様人込みを好まず、一人でワールドのスケジュール表を見ていたので「他の誰かと話し込んでいて入って行けない」ということもなく、人見知りカンストのわたくしもそっとそこに行って静かに佇んでいることが出来たのです。確か、えらい集会に行く運びになったのはその時でした。そう。「今日も一日生き延びてえらい集会」……それは、23時(月曜日は22時)に、集まった人々が「今日も一日生き延びてえらい」と互いを称え合い、最後は集合写真を撮って解散するデイリーイベント。わたくしはそれに2度参加したことがありました。一度目は集合写真を撮るときカメラが固定できず悲しい思いをしましたが、その時の写真はえらい集会場の写真がブワァ―と貼ってある坂の床にあります。6月4日の集合写真に写っているU10ちゃんがわたくしです。2回目は7月9日。この日はえらい集会に行ってからかしさんのところに遊びに行っていました。この時は集合写真も撮れています。

修練の結果Kawaiiポーズを会得

てなわけで、かしさんをえらい集会に誘うことに……したんだったか、或いはかしさんが「この集会気になる」と言ったのかどうか……実は覚えてないのですがとにかく、これまで一人でしか参加していなかったえらい集会に、何人か新たに知り合ったフレンドもひっくるめて参加してみることにしたのでした。

今回はまあ、こんなところですね……なお、この記事に名前出してない方の中にもお世話になった方々は沢山いますので、僭越ながらこの記事を以て謝辞とさせていただきます。「出会いに感謝」という言葉がわたくしは好きです。ありがとうございました。それではまた次回。

VRChatの世界

射出!!

この世は地獄じゃ!!

そんなあなたにVRChat。今なら人の心増量キャンペーン実施中です。

そんなところで、21世紀の現世に生きるVRC民、あるいはその予備軍の皆さんごきげんよう。Najikoです。VRCを初めて半年くらい経ったので、盛大な自分語りがしたいな、と思い記事を書くことにしました。アホほど長くなりそうなので、今回はチュートリアル編ということにしてあとで書き足すか別記事にします。

VRChat。それはVRを介したSNS。わたくしがそれを知ることになったのは……まあ、いつか忘れましたが、去年職場の元エンジニアの同僚が、「VRHMD買っちゃったんですよ」と話してきました。自称キャバ嬢に匹敵する会話スキル(聞)を持つわたくしは、それがどんなにか魅力的な物かつぶさに聞くことにしました。すると、(彼は特段自慢をしたわけではないのですが)後日Oculus Questを持ってきてわたくしに体験させてくれました。

「え、すごい……すごくないですか??? そこにイスありますけど……」

そんなことを言った覚えがあります。ホーム画面が山中のコテージみたいなとこなんですね、Oculus Questは。本当にあったんですよ、椅子。ビートセイバーもやりました。難しくて全然できなかった。けれどいつかこれを買って自分で遊びたい、と思ったのであります。

あくる年、コロナ渦にあえぐ5月の頃。ついにわたくしはOculus Questを購入しました。何かゲームをやろう。そういえば、TwitterでVRChat(以下VRC)とかってのを見かけた気がする。自分で選んだアバターでVR世界を闊歩するなんて、面白そうじゃありませんか。いわゆるバ美肉です。しかもなんと無料!早速遊んでみることにしました。

初めの頃に撮った写真です。彼女はU10ちゃんというアバター。ゲームを始めた瞬間は無機質なチュートリアル部屋に放り込まれ、英語の案内(VRCは日本語をサポートしていません)を何となくよんで奥のポータルに入るとHome Worldに飛ばされます。その頃の写真は残念ながらありません。スクショの撮り方が分からなかったからです。まあ、そんなこんなしてるうちにこうして自撮りする方法もわかったのですが、このU10ちゃんの体を借り受けるのにそれほど時間はかかりませんでした。何故なら彼女はパブリックアバター。メニューにも表示される正真正銘の公式アバターの1種なのです。かわいいね。

それから、アバターのアップロードなども検討はしたのですが、ユーザーランクがVisitorのうちはアップできません、という情報を得て落胆。どうも、少し遊んでNew Userとして認められなければアップできないようです。その為に必要なことはワールドをめぐり、フレンドを増やし、プレイ時間を増やすこと。日本人コミュニティの場所もわからず英語で会話するスキルもない(そもそも家で声が出せない)わたくしが取った行動は……

人がいそうなワールドを巡っては外人に辻フレンド申請を投げる!

お前、人の心がないのか。増量キャンペーンとは……しかも当然ながらフレンドはロクに増えず、後に残るのはVisitorでうろつく不審なU10ちゃんユーザーとかなしい酔ひ(VR酔い)です。もう不要になつたUnityが白つぽく錆びてゐます。しかし、ある日そんな状況は終わりを迎えます。

Tutorial World……日本人が集う(外人もいる)このワールドは、初心者が迷い込むとどこからともなく熟練の光のVR戦士が(運よくいれば)現れて案内をしてくれる、VR世界における良心の園。このスクショに写っているのは大好きさん。Questでインし、声が出せない状況でロクに話もできないわたくしを快く案内してくれた恩人です。大好きさんに出会わなければ、わたくしはかなしい酔ひと孤独に負けてVRCを続けていなかったやもしれません。そんな大好きさんに案内の中で言われた言葉で、特に印象に残った言葉をここに記しておきます。

「現実の世界では人が集まってるところに行ってぼーっと立ってたら多分なんだこの人はって思われちゃうと思うんだけど、VRChatではNajikoさんみたいに無言で遊んでる人もいっぱいいるし、現実と違ってそういうところに近寄って話を聞いてるだけでも全然大丈夫だからね」

救済。この言葉は、わたくしに確かな救いをもたらしました。

他人は変えられない、と精神科医のエリック・バーンは言いました。わたくしはそれを信条に生きてきました。他人に期待することはできないし、同様に自分の月並みな言葉もまた他人を突き動かすことはない、と思っていました。けれど……これほどまでに心が救われる言葉があるでしょうか。思い出したら少しディスプレイが滲んできました。HMDの故障でしょうか……いえ、これは現実です。今の今まで右も左もわからず、うまく人と話も出来ず、どこともつかぬバタ臭いワールドを巡っては疲弊していた日々……その最中、この仮想世界に生きる標をわたくしに示してくれた上に無言勢として在るということを全面的に肯定してくださったことがどれだけ暖かいことであるか。本当に改めて感謝を伝えたいです。わたくしは、ここにいられるんだ……もう、ユーザーランクを上げるためだけに奇行を繰り返さなくてもいい。人の心の美しいかたちに触れた瞬間です。

こちらはその日にお見かけしたきーたんさん。最近はこのアバターの作者のmidoriさん作のアバターが集まる集会のスタッフなどをされています。このアバターはティグリなすちゃん。頭が赤色に改変されており、トマトのような印象を受けました。VR空間でこのリップルスターの住人の妖精のようなかわいらしい生き物を発見した時の衝撃はまさに筆舌に尽くしがたいものと言えます。ちょっと撫でさせてもらいもしました。自分の中の何かが壊れるのではないかと危惧したりもしましたが、今では……慣れって怖いね。今にして思えばこのアバターはQuest単体でログインしたユーザーにも見えるようにアップロードされていたわけですが、そう考えると何とも感慨深いものです。ありがとうございました。

その後、New Userに昇格。一人でTutorial Worldをうろついているときでしたが、ちょうど近くにいた人が目撃していたらしく拍手してくれました。ありがとう。心が洗われます。そんなこんなでついにVroidで作成したアバターを導入。「導入。」なんて書いてますがそんな3文字で終わらせたくないくらいにはとてつもない労力がかかりました。ええ。Vroidでのアバターの作成はまあまあ、使いやすいツールなのでそれほど難しくありません。服のテクスチャも、まあ、なんか書いてますが……こんなもんでしょう。しかし、Vroidで作成したアバターはVRM形式で出力されるのです。それをBlenderに取り込み……fbxで出力してハイ終了!

とでも思ったのか! なんたること。

blender上では、さまざまなプラグインを導入してボーンやシェイプキーの最適化、テクスチャのアトラス化などとても初心者がやるもんじゃないような多大な手間がかかりました。おかげでこのアバターはExcellent……つまり最軽量級なのですが。しかしまだ終わりではありません。さらにQuestに対応しようとすると、Quest用のVRC mobile toonlitというシェーダーが透過処理をできない為に目の周りが真っ黒になるなど、本当になんでわたくしはこんなことを……???と思わざるを得ない作業に何時間も費やす羽目になりました。マジで。それどころか、最初にアップロードした時はボーンの最適化すらうまくいっておらず、リアルで腕を伸ばしてるのにアバターの肘が曲がってる、なんて事態も。よくもまあここまでやったもんです。しかし、Vroidで作成したアバターでうろついていると「お、それVroidでしょ」などと言われることがあります。もちろん、決して悪い意味ではないのですが、周りにはプロ級のモデラーが魂を込めて作り上げた美しい肢体が闊歩しています。わたくしのセンスでは及びもつかないようなセンセーショナルな改変をされているアバターも盛りだくさんです。それを見ていると、せっかくなので何か購入したアバターも使ってみたくなりました。そんな時に出会ったのがロポリこん。さっきのなすちゃんと同じmidoriさん謹製のちっこい狐娘アバターです。試着用のアバターを使ってみましたが、これはかわいい……元来セクシーよりキュート派のわたくしとしては、両胸にバスケットボールをぶら下げている美女よりはこの世の全てのKawaiiを濃縮還元したかのようなこんちゃんの方に強く惹かれました。

買いました。本来は緑とオレンジのグラデーションが特徴の服を着ています。その淡い色合いが非常によく、無暗にビビッドカラーに変えたりするのは気が引けたので慎重に色を選んでできたのがこのこんちゃん。これもQuestでの撮影です。そう、ロポリこんはQuest対応モデルが同梱しており、簡単にPCとQuest両方に対応したアバターをアップロードすることが出来るのです。かわいいね。そしてこの色のこんちゃんをお披露目した時も見知らぬ人に「おお、いいグラデーションだなー」とほめてもらえました。なんだか、大人になって失ったものの端っこを掴んだような、そんな気分です。こんちゃんの体を借り、おめかしして、ほめられる。得難い素晴らしい体験がそこにはありました。そうして日々Tutorial Worldに入り浸っていたわたくしですが……そんな暮らしにも、再度転機が訪れます。続く。