NeosVR内でのアバター着せ替え手順

この記事はNeosVR Advent Calendar 2021の12月2日の記事です。

adventar.org

NeosVR Advent Calendar 2021 1日目の担当は二酸化カメレオンさんで「最速で学ぶLogix入門」でした。まだ読めてないのですが、きっとLogiXを完全に理解できる記事なので後で読みます。3日目の枠はkazu0617さんで、何か動画を出してくれるそうです。楽しみですね。

2022/12/07追記

この記事の最新の手順でまとめ直した記事をネオスサーチにて書きました! そちらを見てください~

www.neossearch.com

初めに

アバターの服を着せ替えたい。」そう思ったこと、一度はありますよね?

専用服であればNeosVR内で簡単に着せ替えが可能です。専用服じゃなくても、頑張ればNeosVR内で行えます*1
この記事ではその手順を実例を挙げて紹介します。

今回着せ替えするアバターと服

今回は次のアバターと服を例に説明します。なお、作業途中の服やアバターは適宜保存しましょう。

komado.booth.pm sugary-boutique.booth.pm

[方法1]: RigTransferTipを使う方法

RigTransferTipというのはアバターのRigやMeshを別のアバターにコピーする公式ツールのようです。
同じスロット名のSkinnedMeshRendererのメッシュを上書きして、足りないボーンを付け足すTipっぽいです[※要出典]。誰か詳しい使い方をまとめて……。
開発者の動画を(機械翻訳で)ざっと見たところ、セットアップ済みのアバターに外部で変更を加えたメッシュなどを適用させるときに使えるやつらしいです。
今回のような着せ替え用途の場合、服のスケールやボーン構造がアバターと似通ってないと使えないと思われます(※未検証)。上手く行かなかった場合は「[方法2]: 服のボーンをアバターのボーンの子にする方法」で着せ替えを行ってください。

youtu.be

手順概要

  1. 服のモデルをインポート
  2. アバターのメッシュを外出し
  3. 服を複製して一つをアバターの子に入れる
  4. RigTransferTipで服の設定をコピーしてアバターに適用して服本来のボーンを削除
  5. 外出ししたアバターのメッシュを戻す

服のモデルをインポート

服の3Dモデルをインポートします。fbxファイルなどをNeosVRのゲームウィンドウにドラッグ&ドロップ、またはファイルブラウザから選択します。
インポーターでは、通常のアバターの3Dモデルと同様に3Dモデル→レギュラー/アバターヒューマノイドの身長に自動設定→高度な設定を選択します。
高度な設定では、アバターインポート時とは異なり「IKをセットアップ」のチェックを外しましょう。その他の設定はアバターインポート時と同じで構いません。

IKのセットアップをせずにインポートします

今回セットアップするアバターと服

再配布が禁止されている服の場合、他の人が保存できないようにするために服のルートスロットとメッシュのスロットにSimpleAvatarProtectionに付けましょう。
それぞれのスロットを選択して、コンポーネントをアタッチからUsers/Common Avatar System/SimpleAvatarProtectionをひとつずつ設定します。

SimpleAvatarProtectionの設定方法。ルートスロットとすべてのメッシュのスロットに付けるとよい。

以後の手順が失敗しても大丈夫なように、この段階でアバターや服をインベントリに保存しておきましょう。

アバターのメッシュを外出し

RigTransferTipによるコピーでは、アバターの子に入ってるSkinnedMeshRendererのスロットが対象になります。
アバターの素体や標準服が変更されてしまわないように、一旦アバターの外にSkinnedMeshRenederの付いたスロットを出してあげます。

アバターのインスペクターを開いて、RootNodeのようなSkinnedMeshRendererの付いたスロットがまとめられてる親スロットを選択します。 RootNodeのインスペクターを新しく開いて、「子にする:ワールドルート」ボタンを押してアバターの外にスロットを取り出しましょう。
これ以降はアバターの位置を動かすと、最後にRootNodeをアバターに戻すときに変な場所になってしまう可能性があるので、動かさないように注意しましょう。また、RootNodeのインスペクターは戻すときにも使うので、開いたまま置いておきましょう。

ルートスロットにメッシュのスロットらを取り出す。このとき、ボーンが一緒に移動しても問題はない。

服を複製して一つをアバターの子に入れる

RigTransferTipでコピーする元となる服のモデルと、コピーを適用させる服のメッシュが必要になるので、服を複製します。
うち1つをアバターの子に入れて、位置・回転・拡大/縮小のリセットを行い、GrabbableコンポーネントとRigコンポーネントを削除します*2(※複製したもう一方の服のモデルの方のRigコンポーネントを削除すると上手く着せ替えできないので注意)。
※拡大/縮小のタイミングで服のモデルが小さくなりすぎたり大きくなりすぎたりした場合は、おそらくこの手順では着せ替えは成功しません。上手く着せ替えが出来なかった場合は[方法2]の手順での着せ替えをしてください。

位置・回転・拡大/縮小のリセットと不要なコンポーネントの削除

RigTransferTipで服の設定をコピーしてアバターに適用服本来のボーンを削除

Essential Tools/MiscからRigTransferTipを取り出して装備します。

RigTransferTipはNeos Essentials/Miscの中にある白いチップ。

RigTransferTipを装備した手で、複製したまま何もしてない服のモデルに向かってセカンダリー(スティック押し込み、タッチパッド押し込み、Rキーなど)をします。
RigTransferTipの上部に表示されてるテキストに服のモデルが登録されたのを確認したら、次にアバターに向かってトリガー(プライマリー、クリック)をします*3

メッシュとボーンがアバターにコピーされました。Neos謎技術のチカラです。

RigTransferTipの上部にコピー元の服のモデル名が乗った状態で、アバターに向かってトリガーして転送。

アバターの子に入れた服のモデルの中に、服本来のボーンが存在しますが、邪魔になるので削除しましょう。

服のボーンを削除

外出ししたアバターのメッシュを戻す

避難しておいたアバターのSkinnedMeshRenderのスロットをアバターの子に戻します。
開いておいたRootNodeのインスペクター*4から、アバターの元の場所に戻しましょう。

RootNodeを元のCenteredRootの中に戻す。

その後、新しい服と標準服との両方が表示されているので、標準服のメッシュを非アクティブのスロットの中にまとめて非表示にします。 新しいスロットを作成してActiveをオフにし、非表示にしたい標準服をそのスロットの中に移動させます。

RootNodeの子スロットを作成してActiveをオフにし、隠したいメッシュのスロットを移動させる。

完成

以上の手順完成です。一旦保存した後、インベントリから取り出したり着てみたりしてうまく出来てるか確認しましょう。上手く出来てなかった場合は手順をやり直すか、方法2で着せ替えをしましょう。

着せ替え完了

[方法2]: 服のボーンをアバターのボーンの子にする方法

こちらは手作業での服の着せ替えになります。他のVRサービスのためにUnityで着せ替えをやるときと同じように、アバターのボーンに服のボーンを入れ子にしていく作業です。
こちらの方法は手間が多いですが、専用服じゃなくても対応できると思います。専用服じゃない場合は細かい調整が必要になると思いますが、今回の記事では特に解説しません*5
人力作業になるので、途中でミスったり作業過程を忘れたときでも復元できるように、途中途中でバックアップを保存するようにしてください。

手順概要

  1. 服のモデルをインポート
  2. アバターの直下に入れてサイズ・位置合わせ
  3. 服のボーンを対応するアバターのボーンの子に入れる

服のモデルをインポート

方法1のときと同じやり方でインポートします。

こちらの手順の場合、揺れものはインポート直後のこのタイミングで設定しておくと良さそうです*6

サイズ・位置合わせ

セットアップ済みのアバターを用意します。デフォルトの状態だとアバターがゆらゆら動いてて着せ替え作業の邪魔になるので、TポーズやAポーズで固定させます。
DevToolTipでアバターのインスペクターを開いて、アバターのルートスロットを選択します。VRIKコンポーネントを探して、IKPositionWeightが1になってるはずなので0にしましょう。これでTポーズまたはAポーズで固定されます。

※注意:この状態でアバターを着てしまうと、手が全く動かせなくなってリスポーンするしかなくなります(ダッシュメニューの操作は可能です)。ダッシュメニューでのリスポーン方法や緊急リスポーンジェスチャーを覚えておくか、他の人がいる場所で作業しましょう。作業途中のアバターを着た状態で緊急リスポーンをすると、アバター自体が失われるので、間違って着てしまったときのために作業途中のアバターはこまめに保存しましょう。
アバターを着る際にはIKPositionWeightを1に戻しましょう。

VRIKのIKPositionWeightの場所。0にするとポーズが固定される。

次に、服のモデルをアバター直下に入れて、サイズ調整をします。
アバターのルートのインスペクターと服のインスペクターを開いて、服のスロットをグラブしてアバターのスロットの直下に移動します。
その後、位置・回転・拡大/縮小のリセットボタンを押して調整します。
また、この時点でGrabbableコンポーネントは邪魔になるので削除しておきましょう。

位置・回転・拡大/縮小のリセットと不要なコンポーネントの削除

その後、スケールを調整します。専用服なら基本的にはスケール1で大丈夫だと思いますが、アバターや服によってはスケールが100倍や0.01倍になっていたりするのもあるので、大きすぎたり小さすぎたりしたら0.01や100を入れて適宜調整してください。
また、複数アバター対応のために個別で指定されているものもあります。 今回の服は説明書きにスケール0.965と指定があるので、それを入力します。

スケールの入力。今回は0.965。

その後、服のArmatureをアバターのArmatureの子に入れて、位置をリセットします。※拡大/縮小はリセットしないように。
もし服の位置がズレてたり思ってたのと違う場所にあれば、DevToolTipを装備してギズモを動かして調整しましょう。
このときに着せ替え前の服が邪魔で細かいところが見えなくなると思うので、邪魔な服はActiveをオフにしておきましょう。新しくスロットを作ってActiveをオフにして、その子に不要な服のメッシュを入れると簡単です。

標準服のメッシュを非表示に。服のArmatureを移動。

服のボーンの移植

あとは作業です。服のArmatureの各ボーンを、対応するアバターのArmatureのボーンの子に一つずつ入れていきます。
服のHipsをアバターのHipsの子に、服のSpineをアバターのSpineの子に……といった手順で入れ子にするだけです。
※この作業をやる前に一度アバターを保存しておくことをオススメします。作業途中でよくわからなくなったときに復元できるので。

同名のボーンを入れ子に。Hips→Chest,UpperLeg_L,UpperLeg_Rのような分岐がある場所はUpperLegやShoulderなどの四肢のボーンからやる方がやりやすそう。

完成

以上の手順で着せ替えは終わりです。最後に、VRIKのIKPositionWeightを1に戻してからアバターを着たりしてみて確認します。
もし服の一部が変な場所に吹っ飛んでしまってる場合は、ボーンの移植が上手くできていません。再びIKPositionWeightを0にしてから問題のボーンを移植してください。

宣伝

アバターセットアップ関連のお手伝いをする活動を #NeosVR着付けフォース としてやっています。
今回の記事の内容やアバター関連の質問などでも何かしらお手伝いをしますので、お気軽にお声がけください。

[おまけ]: 関連Tips

空のボーンの削除

服のモデルにはHumanoidボーンの必要な部分がHipsの位置から入っていることが多いですが、実際に服のメッシュのウェイトが乗っていないボーン*7も含まれています。
服のボーンの移植をする前に、SkinnedMeshRendererの「空のボーンの削除」ボタンを押すと、ウェイトが乗っていないボーンの参照を削除できます。服の着せ替えに必要なボーンはこの操作で残ったボーンだけなので、不要なボーン数を減らせます。

空のボーンの削除で必要なボーンだけがわかる。このリストに乗っていないボーンは不要。

専用服のボーンを使わずに、アバターのボーンを使う

RigTransferTipで行っていることを手作業でやろうとする方法です。RigTransferTipを使用するほうが簡単ですが、こういうこともできるよと教えてもらったので書いておきます。

上記の空のボーンの削除を行った後に、服のモデルのウェイトが乗っているボーンをアバターのボーンに差し替えます。
服のArmatureの位置合わせを気にしなくてもよくなりますが、元のアバターに無かったボーンは正しく移植させる必要があります。
あとたぶん服のモデルとアバターのモデルのスケールが一致してないとうまくいかなそうです(※未検証)。

手作業でやる場合、服のメッシュが少ないのであれば[方法2]よりこちらの方が簡単だと思います。
入れ替えを行った後に、服のArmatureを削除して入れ替え忘れが無いか確認するのがわかりやすそうです。※削除する前にはアバターを保存しておいて復元できるようにしておきましょう。

アバターのRigで服のボーンを差し替え。

AFKマテリアルの設定方法

Neosではユーザーが別のセッションへ移動したときに、そのユーザーの抜け殻が透明のマテリアルに変更されます。
上記手順での着せ替えによって持ち込んだ服にはその設定が付いていないため、
アバターの素体は透明なのに服は通常というエッチ変な状況になってしまいます。

服のマテリアルも変更する手順は次の通りです。

服のメッシュのスロットを開いて、コンポーネントをアタッチからUsers/SimpleAwayIndicatorを設定します。
AwayMaterialには他のメッシュと合わせて、アバター直下のPBS_RimMetallicを設定し、Rendererには服のSkinnedMeshRendererを設定します。 次に、Head ProxysなどにあるAvatarUserReferenceAssignerの項目をaddしてSimpleAwayIndicatorのUserをセットします。
これを全てのメッシュに設定します。

SimpleAwayIndicatorに必要な参照をセットする。UserはAvatarUserRefenceAssignerを使う必要がある。

設定は以上です。最後に設定が正しくできてるか確認をします。
DevToolTipの新規作成から、エディター→ユーザーインスペクターを選択します。
出てきたユーザーインスペクターで自分の名前を選択し、presentInWorldをオフにします。
するとAFK状態のときの自分の様子が確認できるので、設定漏れが無いかの確認に使ってください。

ユーザーインスペクターのpresentInWorldでAFK偽装できる。設定忘れを確認しやすい。

服の切り替え

デフォルトの服と追加服を随時切り替えたい。そう思ったこと、一度はありますよね? 仕組みはシンプルです。切り替えをしたい服のメッシュを下記の構造のSlotにまとめます。

Cloth
 ├服Aをまとめたスロット
 │ ├服Aのメッシュ1(上着)
 │ ├服Aのメッシュ2(スカート)
 │ └服Aのメッシュ3(靴)
 └服Bをまとめたスロット
   ├服Bのメッシュ1(上着)
   ├服Bのメッシュ2(スカート)
   └服Bのメッシュ3(靴)

上の状態で、ClothのスロットにコンポーネントをアタッチからTransform/Drivers/BooleanSwitcherを追加します。 AutoAddChildrenにチェックを入れると、ActiveIndexに指定されてるindexのスロットだけActiveがオンになり、他のスロットはActiveがオフになります。

BooleanSwicherによって複数のスロットのActiveのうち1つだけ有効にできる。ActiveIndexのスロットのActiveだけが有効。

あとはNeosButtonなりコンテキストメニューなりハンドサインなりで、このActiveIndexを切り替えるようにできれば着せ替えは完了です。
Buttonコンポーネントが付いているスロットにCommon UI/Button InteractionsにあるButtonValueShiftやButtonValueSet
BooleanSwitcherのActiveIndexを操作するのが手軽だと思います。
yoshi1123_ publicの中に実装サンプルを置いているので、使ってみたい方は試してみてください。 neosrec:///U-yoshi1123-/R-e9b350ec-e5c4-418e-a511-997086a8edea *8

*1:※専用服じゃない場合、Blenderでの着せ替えができる方はそちらでやった方がたぶん簡単です。ぼくはBlenderで着せ替えしたことないのでよく知りませんが。

*2:RIgTransferTipはRigコンポーネントの情報を別のRigコンポーネントの付いたオブジェクトに転送する挙動のようです。今回の着せ替えのでは、アバターの子に入れた服のメッシュをアバターのRig配下と誤認させるために、服のRigコンポーネントを削除しています。

*3:RigTransferTipの適用は、厳密には「アバターのボーンに向かって」トリガーをする必要があります。今回の手順では、アバター本来のボーンは一旦アバターから避難しているため、代わりにアバターの子になっている服のボーンに向かってトリガーをする必要があります。位置のリセットをしていない場合は適用箇所がズレている可能性があるので注意してください。

*4:もしRootNodeのインスペクターを残しておかなかった場合は、Rootスロットのインスペクターを開いて探してください。

*5:専用服以外を着せる場合、入れ子にした後に服のボーンの位置やサイズをいい感じに調整したり、貫通対策をしたりするだけです。それが面倒ですが。

*6:アバターの子に入れたあとにDynamicBoneの設定をしようとすると、「子にしたもののリグのみセットアップ」のボタンが使えません。「子にしたものをセットアップ」ボタンを押すと、Collider用のスロットが入ってた場合に変になるかもしれないです。もちろんDynamicBoneの設定からColliderのスロットの設定を外せば問題無いので、誤差の範囲ではあります。

*7:アバター制作をしたことがないので、用語の使い方が間違っていても許してください。

*8:このURLをコピーした後に、NeosVR内のホーム画面の「クリップボードから貼り付け」ボタンを押すとパブリックフォルダが出てくる

NeosVRの楽しみ方いろいろ:クリエイティブ編

はじめに


NeosVRの楽しみ方について、思いつく限り書き連ねようという記事の第三弾です。今回で終わりです。
上のレポートでも取り上げられてますが、NeosVRでは内部でモノづくりやワールド製作もできます。ということで、今回はクリエイティブ編と題してモノ作りについての遊び方を列挙していきます。
ソーシャル編・アクティビティ編はこちら。
dinosaur-fossil.hatenablog.com
dinosaur-fossil.hatenablog.com

NeosVR の楽しみ方:クリエイティブ編

VR空間を活用する

イデアを練る

NeosVRではさまざまなアイテムを取り出したりできるので、構想中のアイデアの参考写真や動画を見ながら構想を練ったり、ペンでアイデアを書き留めたりなどが簡単にできます。
また、3D空間を自由に飛び回れるので、モノでゴチャついてきた場合は別の空間へ移動したり、ボツ案を遠くに除けたりなどをして自由にアイデアを練ることができます。

打ち合わせ・会議・プレゼンをする

複数人で打ち合わせをするのもやりやすいです。
プロトタイプのアイデアをペンツールや参考写真などで簡単に共有できますし、ボイスチャットの遅延が少ないためコミュニケーションのロスも少ないでしょう。
また、VRモードとデスクトップモードを一瞬で切り替えれるため、文章のメモが必要になった場合は誰かがデスクトップモードになって書記をするのも手軽にできます。さらに、VSCodeプラグインでNeosVR内にその内容を表示することもできるため、リアルタイムで内容を確認することも可能です。


現実と同じように集まって資料を広げたりペンで物書きをできたりもするので、会議やプレゼンなどもできます。資料の複製や拡大縮小はお手軽にできますし、指先からレーザーが出てくるので指し棒も不要です。
実際にNeosVR内で会議が行われたり、ライトニングトークイベントも開催されたりしました。



モノ作りをする

NeosVRではVR内でいろんなモノ作りが可能です。NeosVRのことをUnityVRとかVRマインクラフトとか喩えている人もいます。UnityやBlenderなどに挫折した方でもモノづくりができます*1

外部で作ったモノを持ち込む・外部に持ち出す

BlenderやTiltBrush、フォトグラメトリーなどの外部ツールで作成した3Dモデルを中に簡単にインポートできます。製作途中のモデルの3Dビューアーとして使っている人もいます。
インポートしたものはすぐさま共有できるので、読み込んだその場で友達と共有して遊んだり改造したりができます。
さらに、なぜかマイクラのワールドをインポートする機能もあります。(なぜ?)


また、NeosVR内で作ったものは外部にエクスポートすることも可能です。
他のサービスで使うための小物やワールドのモデルをNeosVR内でみんなで作成するのもお手軽にできます。

モデリングをする

内部でもモデリングが可能です。パラメータを変えることで形を変えれるCubeやShpereなどを組み合わせて形を作れます。さらに、NeosVR内でメッシュベイクをしたり、凸包を作ったり、はたまた頂点を打ってメッシュを作るツールなどもあるので、使いこなせば複雑な形状も作れます。
簡単なモデリングのやり方は毎週水曜日に開催されているNeosモデリングで教わることができます。モデリングに限らず、シンプルなギミックの作り方も勉強することができます。イベントに参加できなかった人向けに、一人で勉強できるアーカイブワールドもあります。



プログラミング(LogiX)をする

NeosVRではプログラミングも可能です。LogiXと呼ばれるノードプログラミングでさまざまなことができます。NeosVRにあるあらゆるものの状態を取得可能で変更した値に応じてオブジェクトがリアルタイムに変わっていくので、挙動を確認しながらのプログラミングができてやりやすいです。

また、HTTPリクエスト(GET/POST)やWebsocketなどにも対応しています。外部のサーバに処理を投げれるので、複雑な処理は外部のサーバに書いて結果の表示だけLogiXで書いたり、IoT機器との連携部分を作って現実とリンクしたものを作ったりも可能です。ノードプログラミングは慣れてないと癖が強いので、LogiXは最低限の通信部分だけを用意して、他は使い慣れたテキストベースのプログラミング言語でサーバに処理を書いてもいろんなことができると思います。
qiita.com


絵を描く

NeosVRではペンツールがあるため、3Dペイントもお手の物です。また、定規や黒板、ペイントツールなど、平面に描きやすいツールもあります。
ペンで描いたものはそのままメッシュベイクも可能です。NeosVRでは内部で作った3Dモデルを外部に出力することもできるので、中で描いたモノを外部の別のサービスなどで使用することもできます。2Dの画像として出力するツールもあります。


サインを描く

NeosVRではペンで描いたものもアイテムなので持ち帰ることが可能です。過去にはVRサイン会が企画されたこともあります。サイン会の場で実際にサインを描いてもらえば、世界に一つだけのアイテムになります。もちろん外部に出力できるので、3Dプリントで現実に持ち込んだり、他のサービスに取り込んだりも可能です。


画像編集をする

NeosVR内では画像編集も可能です。画像の切り抜きやペンやオブジェクトを使っての描き込み、色相・彩度・明度の変更、グレースケール化、テクスチャの上に別のテクスチャから切り出した画像を合成することなんかもできます。

音声を録音する

NeosVRでは内部に録音ツールがあり、簡単に録音して音声ファイルを作ることができます。人によってはさまざまな音声を録音して素材として配布している方もいます。

パーティクルを作る

パーティクルシステムも内蔵されています。もちろん内部で作成することができます。

ガジェットを作る

モデルやパーティクル、音声やプログラミングなどを適宜使って自分だけのオモチャを作ることもできます。誰でも使える便利なアイテムや、自分にしか需要がない特殊なものまで、いろんなガジェットを作って遊ぶことができます。


ワールドを作る

NeosVRではワールドを作るのも簡単です。何もないワールドに3Dモデルを置いたり、ギミックを作るだけでワールドは完成です。
NeosVR内ではたくさんのフリーアセットが公開されているため、お気に入りのアイテムを並べるだけで自分好みのワールドが生み出せます。もちろんLogiX等を駆使してギミック盛りだくさんのワールドを作ることも可能です。

また、壁や床などを簡単に配置できるツールを作っている方もいます。それを使えば好きな間取りのお部屋もすぐに作り出せます。

アバターを作る

アバターもNeosVRに持ち込むこともできます。アバター化する操作は直感的に設定できて、揺れものや表情の設定も可能です。
また、帽子や眼鏡などのアクセサリーの取り付けや、テクスチャ改変などであれば簡単にできます。

アバターにいろいろ仕込んでいる方もいます。衣装の着替えギミックから、よく使うツールの内蔵、アイテムの取り出し、カスタムメニューやカスタムネームプレートなど、さまざまなカスタマイズが行われています。

f:id:trpg_yoshi:20211031175442j:plain
アバターのランドセルにツールを仕込んでいる人の様子。

NeoRoidと呼ばれる軽量アバターをNeosVR内で作成することもできます。普段遣いのアバターのNeoRoid再現なんかも盛んに行われており、人によってかなり個性のあるNeoRoidをたくさん見かけることができます。

ゲームを作る

簡単にとは言いませんが、ギミックを作り込んでゲームを作ることもできます。ワールドまるまる1つを使うゲームも作成できますし、アイテム単体で遊べるゲームも作成可能です。

共同制作をする

イデアがなくて今は何も作ってないけど何かを作るノウハウを知ってる人なんかもいるので、作りたいものがあるけど作り方がわかんない人もアイデアを出して一緒に共同制作できます。

おしゃべりしながら共同制作して面白いアイデアをその場ですぐに採用したり、変なネタアイデアを再現するために改造したりなどもできてかなり面白いです。

ちょっぱやワールドという、短時間でテーマを決めてみんなでワールド作成をするというイベントも時折開催されます。Neosのモノづくりがよくわからなくても楽しめるイベントだと思うので、タイミングが合えば参加してみてください。

https://twitter.com/mikan3134/status/1454741636110454791

配布されているものを改造する

一から作り上げなくても、配布されてるガジェットやツールから一部分だけ抜き取ったり差し替えたりするだけで目的のオモチャを作れるかもしれません。
仕組みの参考にもなるので、配布されているオモチャの中身を分解してみると面白いかもしれません。

作ったものを配布する

作ったものが権利的に問題ないものであればNeosVRに配布してみてください。NeosVRにはパブリックフォルダという機能で、作ったモデルやガジェットなどを公開できます。配布されているものを使って、また別の人が別のガジェットやワールドを作成していきます。

日常の何気ない写真やひょんな拍子に撮れた笑える写真をフリー素材として配布しておけば、面白いアイデアに使われるかもしれません。
自分の写真もフリー素材として流通していて、知らないところで面白いネタに使われいました。新鮮な体験です。

共有したくないものはSimpleAvatarProtectionと呼ばれるプロテクトをかければ、自分以外は保存できなくすることができます。なお、アバター作成の場合はデフォルトでプロテクトがかかるようになっています。

サーバーを運営する

ヘッドレスクライアントを動かす

NeosVRのセッションを維持するためのサーバーみたいなクライアント*2を建てている人もいます。
ヘッドレスクライアントの情報を記録して喜んでる人もいます。

ツール用のサーバを管理する

NeosVR内のツール用のサーバを管理している人もいます。LogiXでやりづらい処理や外部に任せたい処理などは自前のサーバーを用意して、ツール用に管理している人もいます。

やりたい放題する

NeosVRでは権限があれば上記のいろいろなことがその場でできます。
権限がある場所ではワールドの一部を抜き取ったり、自分好みに改造したり。邪魔なものをどかしたりなどなど自分好みにワールドを改変することができます。
アイテムを取り出したりその場で改変したりもできます。DJイベント時にその場でワールド改変をするというイベントなんかも開催されました。

また、VR界の妖精?と認識されてるライテルさん*3がNeosにも来ていらっしゃるんですが、毎日ライテルさんが建てているセッションでいろんなモノを配置している遊びが何故か発生しています。謎の文化となっていますが、自己責任で遊んでください。
note.com

おわりに

ソーシャル編、アクティビティ編、クリエイティブ編と3回に分けてNeosVRの楽しみ方を列挙してみました。この記事が遊び方の参考になれば幸いです。
NeosVRはアップデートの頻度が多く、すぐに新機能が増えたり、それを受けてユーザーが新しいオモチャやゲームを作ったりと次々と目新しいものが生まれます。そのため、この記事らもいずれ実情にそぐわないものになるかもしれませんが、2021年10月頃の遊び方の資料ぐらいにはなるとは思います。内容についても気が向いたら更新します。

NeosVRって結局いつごろ人がいるの? と思う方向けに、JPチュートリアルワールドなどの現在の人数を表示するサイトが公開されています。遊びに来たけど人に会えなかったという方は参考にしてみてはいかがでしょうか。

*1:ぼくもUnity/Blenderなんもわかりません

*2:ヘッドレスクライアントというやつです

*3:https://vprof.me/@/raiteru

NeosVRの楽しみ方いろいろ:アクティビティ編

はじめに

NeosVRの楽しみ方について、思いつく限り書き連ねようという記事の第二弾です。
他の記事はこちら。
dinosaur-fossil.hatenablog.com
dinosaur-fossil.hatenablog.com

NeosVR の楽しみ方:アクティビティ編

ワールドに行く

NeosVRではワールドの接続情報を複数以上維持でき、読み込みも非同期で行われるので気軽にワールドを行き来できます。
美麗なワールドやゲームワールドはもちろん、アバターやツールなどを配布しているワールドもあります。権限があればワールドの一部だけ保存して持ち帰ったり、ギミックを解析して自分の作りたいものに活用したりもできます。

NeosFesta

NeosFestaというノンジャンルの展示会が、日本コミュニティの企画で過去3回開催されました。イベント期間は終わっていますが、過去3回の会場は今でも来場することが可能です。
8月に開催されたNeosFesta3では、容量無制限でさまざまワールドやアイテムが出展されており、112ワールドと147アイテムが出展されました。
これらのワールドやアイテムは中央の操作パネルから一瞬で呼び出すことができます。もちろん保存できるものは持ち帰ることが可能です。

NeosFesta3のときに開催されていたオフィシャルツアーの体験記があるので、巡ってみたい方はそちらの記事を参考に回ってみてはいかがでしょうか。

note.com

MMC (Metaverse Maker Competition)

MMCは過去2回開催された海外コミュニティ主催のイベントで、1ヶ月でワールド製作するというコンペティションです。なんと賞金も出ました。
今年は全9部門に142ワールドがエントリーされて、日本人チームの受賞は11ワールドもありました。
エントリーされたワールドを巡りたい場合はワールド検索で mmc21 と検索すると出てきます。以下にいくつかワールドの紹介のツイートを貼ります。クオリティの高いワールドがたくさんあるので、ぜひ回ってみてください。




他にもいろいろ

イベントごとに限らず、NeosVRではさまざまなワールドがあります。
ワールド画面のタブにはゲーム・ソーシャル・教育・チュートリアルのような内容別のカテゴリの他にも、Neos運営?がオススメしている注目カテゴリやランダムなど、いろんな観点でワールドを探しにいけます。
2021年10月時点で約2,600ワールドぐらいなので、今なら全ワールドを見て回ることもできるでしょう。
次の記事でワールド巡りの方法も書いてあるので、参考にしてみてください。

note.com

ホームワールドに遊びに行く

NeosVRでは自分のホームワールドも簡単に作れます。個性的なワールドをホームワールドにしている方も多く、ワールドが立っているときに遊びに行ってみると面白いと思います。ホームワールドを公開してる方もいます。

イベントに参加する

定期イベント

  • 初心者案内デー

毎週火曜日に開かれているNeosVRの初心者や久しぶりに来て操作を忘れた人へ、基本的な操作方法を教えてくれる会です。普段からNeosVRにインしている日本人のユーザーも多く集まるので、フレンドを増やしたい方にもオススメです。

  • WEEKEND CASINO

金曜日と土曜日の21時から開催されていて、ブラックジャックやポーカー、競馬、麻雀、ビンゴ、スロット、宝探しゲームなど、いろいろなギャンブル要素のあるゲームが置いてあります。特にスロットはこだわりのある方たちが作っているため、かなりのクオリティになっています。
NeosVRにはKFCというゲーム内マネーがあり*1、いろんなところでKFCを稼いだり使ったりできます。カジノではKFCを賭けて盛大に稼いだり溶かしたりする遊びができます。現実には価値のないお金でも、稼いだり擦ったりするのは遊びのスパイスになって面白いです。

  • GAMECENTER RELAXDOG

クレーンゲームやガチャガチャ、ホッケーのようなゲームセンターにありそうなゲームや対戦ゲームなども置いてあります。こちらでもKFCを使ってゲームを遊ぶことができます。
クレーンゲームなどで入手したアイテムは持ち帰ることができますし、ゲームによってはランキングシステムが導入されてるのでハイスコアを狙って遊んでみるのもいいと思います。
毎週日曜日の21時から開催されています。

  • 今週も生き延びてえらい!集会

集まった人たちでお互いにえらい!と褒め合ったり、ちょっとしたアイテムで遊んだりする集会です。日曜日の21:30から開催されています。

不定期イベント

  • アイテム博覧会

いろんなアイテムを持ち寄って見せ合ったり遊んだりするイベントです。
月末の木曜日に開催されていたりします。

  • 駄菓子会

現実とVRで駄菓子を持ち寄ってワイワイする会らしいです。
突発で開催されるのでいつ行われてるのかわかりません。

  • VRバーベキュー

現実とVRで一緒に肉を食べよう!という会です。VRで肉を1枚焼くと現実でも肉が1切れ食べれるルールとか言ってました。
主催が言い出すと開催されます。

イベントを企画する

NeosVRではワールドをしっかり準備しなくても、アイテムを持ち寄ればいろんなことができるため、気軽にイベントが企画できると思います。

  • 七夕-2021
    7月7日に向けてそれぞれの願い事を短冊に書いて笹に飾ろうというイベントが今年企画されました。ペンツールと短冊、笹を用意して会場を建てるだけで楽しいイベントになりました。

  • サイズ系集会

NeosVRではユーザーのサイズを自由に拡大縮小できるため、その機能に目をつけたサイズフェチの方たちの集会が企画されたようです。

ゲームで遊ぶ

ゲームワールドに行く

NeosVRではいろんなゲームを開発してゲームワールドに公開されています。一人で遊べるゲームから複数人が必要なゲームまでさまざまなゲームがあります。数はまだ少ないですが、デスクトップモードでも楽しめるゲームもあります。
ワールドの検索欄にゲームのカテゴリもあるため、気になるワールドに行って遊んでみてください。


ゲームを取り出す

また、わざわざゲームワールドに赴かなくても、アイテムとしてゲームを配布しているものもあります。
いつものワールドでゲームを取り出して遊ぶのも楽しいです。

アナログゲームTCGで遊ぶ

ゲームらしいゲームの他にも、現実にあるボードゲームのようなものも配布されています。
チェスや将棋のような有名なものから、麻雀、「桜降る代に決闘を*2」というゲーム、オリジナルのTCGのクロス・ユニバース*3のようなものなどもあります。
現実のアナログゲームVR的演出で遊べるようにしていてかなり面白いです。



また、VR内でTRPGやマーダーミステリーなどの体験型のアナログゲームを遊んでいる人もいます。ぼくも遊んでいるので、気になる方は声をかけてください。


togetter.com

音楽を楽しむ

歌う

一人でももちろん歌を歌うことはできますが、カラオケワールドで複数人で歌うことができます。
カラオケワールドでは個人間の遅延を調整できるので、リアルなカラオケの体験ができるでしょう。

演奏

NeosVRではマイク入力とは別に、音声入力ソースを増やして流すことができます。電子ピアノやエレキギターなどの音がアバターの口から出ることはありません。しかもステレオ音声で流すことが可能です。

f:id:trpg_yoshi:20211027191107j:plain
電子ピアノを演奏している様子。音に合わせて上空をSphereが流れている。

クラブ

音声入力にDJソフトの出力を流せばVRDJも可能です。TopazChatを使用することもできます。
Club PulseというDJイベントも不定期で開催されているため、興味がある方は参加してみてはいかがでしょうか。

ライブ

Vtuberさんのライブイベントも開催されたことがあります。VR会場とYouTube会場が同時に用意されて、両方で視聴者が集まりました。
VR会場ではグッズの展示や配布が行われていたり、ライブ終了後にはサイン会が行われたりと、現実のライブと同じような体験ができました。

また、あるワールドから別のワールドへアバターの動きを配信することもできます。複数のセッションでのアバターパフォーマンスや音声の同期が取れるみたいなので、大人数を動員するライブイベントも可能になるのではないでしょうか。

体を動かす

体操をする

毎日朝7時からにラジオ体操、毎日夜22時から健康体操という体操イベントが開催されています。また、日曜16時には水着アバターで筋トレをする水着筋トレ部というイベントも開催されています。身体を動かして健康になりましょう。

踊る

NeosVRでは最大11点のフルフルトラッキングが可能です。よりリアルな体の動きが表現できます。
海外ではダンスバトル?のイベントが開催されたこともあるようです。

また、ユーザー製のモーションキャプチャーツールも配布されており、自分の踊りや身体の動きをアバターに録画することが可能です。録画したアバターNPCとしてワールドに置かれていることもあります。

セイバースピン部

NeosVRではボディトラッキング以外にも、モノにトラッカーを付けてオブジェクトのトラッキングもできるらしいです。
たぶんBeatSaber界隈の方たち?がセイバーの取り回しの練習にセイバースピン部という活動をしているみたいです。

配信をする

現実では機材の準備などが大変な配信も、NeosVRでは簡単にできます。複数のカメラアングルを登録しておけるカメラアンカー機能や、ユーザーに追従して動く三人称モード、近くの人がアングルに収まるように自動で移動するグループ機能などもあります。 最近ではNeosVRに配信しに来ているVtuberさんたちもいます。


コメントで遊ぶ

NeosVRには公式でTwitchとの連携してコメントを取得するツールがあります。ユーザー製であればマルチコメントビューアのプラグインとして他の動画配信サイトのコメントも取得できます。音声入力ソースを複数使えるので、棒読みちゃんの音声をワールド内に共有することも可能です。
コメントを取得するツールには特定のコマンドで中にいる人へリアクションを飛ばすこともできます。マルチコメントビューワーと連携するツールの場合は空からコメントが降ってきたり、そのコメントを掴んで投げたりもできます。

動画撮影・映像制作をする

動画撮影もできます。カメラアンカー機能を使えば特定のアングルで固定するのも簡単にできます。また、モーションキャプチャーツールを使えば1人2役以上の撮影も可能かもしれません。


VR睡眠をする

VR睡眠も可能です。ワールドの明るさは権限があればどこでも調整可能です。ベッドも布団もテントも、どこでも取り出し可能なので、好きなワールドで寝ることができます。
アイテムや写真を置いておくこともできるので、先に寝てしまった人の寝姿を撮ったり、起きて先に抜けないといけないときにまだ寝ている人へメッセージを残すことも簡単にできます。
アバターをワールドに置いててお見舞いをしてた人もいます(体調が悪いときはおとなしく静養しましょう)。

なにもしない

VRCなにもしない人はNeosVRにも来ています。(「なにもしない」がどういう活動なのか僕はよくわかっていません。)
なにもしない活動とは違うのかもしれませんが、NeosVRで自分が何かをしなくてもいろんな人がいろんな活動をしているので、ふらっと遊びに行って何をしてるのか聞くだけでも面白いと思います。

おわりに

今回はアクティビティ編ということで、いろんな活動を取り上げてみました。Twitter#NeosVR で検索してみると、他にもいろんな活動をしている方が見つかるかもしれません。気になる活動をしている方がいれば話を聞いてみると楽しめると思います。
次回はクリエイティブ編で、モノを作ったりする話について書きます。

dinosaur-fossil.hatenablog.com

*1:2021年10月30日のアップデートで、SteamからインストールできるビルドからはKFCなどのゲームマネー関連の機能がオフになりました。Steam版では使えなくなりましたが、Neos公式から出されるビルドからは利用できます。詳しくは公式wikiを参照 https://wiki.neos.com/Neos_Credits/Steam_Changes

*2:桜降る代に決闘を 公式サイト https://main-bakafire.ssl-lolipop.jp/furuyoni/na/index.html

*3:クロス・ユニバース 公式サイト https://crossuniverse.jp/

NeosVRの楽しみ方いろいろ:ソーシャル編

はじめに

ソーシャルVRのひとつ、NeosVRをご存知ですか? もしご存知でなければ次の動画を見てください。

NeosVRはとても自由度の高いメタバース(仮想世界)で、SteamまたはNeosVR公式サイトからダウンロードできます*1。日本語対応していて、デスクトップモードにも対応しています。
いろんなことがVR内のみでできることが特徴だと思います。
neos.com store.steampowered.com

しかし、NeosVRはまだユーザーが少なく*2、普段はどんなことをして遊んでいるのか分かりづらいと思います。現在のコアユーザーはクリエイター寄りの人が多くて、外部から見える情報も開発や技術の話に偏っているように感じます。
そこで、NeosVRの楽しみ方を思いつく限り書き連ねてみようと思います。なお、最近は配信なども増えているので、動画や配信を探せば雰囲気がわかるかもしれません。

想定読者

  • NeosVRはなんでもできるとよく聞くけど、実際にどんなことしてるのかわからんという人
  • NeosVRを始めたばかりで、どんな遊び方ができるかあまり知らない人

以下に書く内容にはぼくがやったことないことや想像の話も含まれているので、こういう遊び方もできるよという類のものだと思ってください。できるだけ実例は上げようと思いますが、実例が無い箇所もあります。
気になる遊び方があれば、その遊び方をしている人を探して話を聞いてみるのがいいと思います。

お前は誰

よっしーと申します。趣味はTRPGです。NeosVRでのユーザー名はyoshi1123_です。
https://vprof.me/@/yoshi1123_
NeosVRにハマってしまって、この間1000時間チュートリアルを達成しました。
今年の5/18から始めて10/12に達成したので、毎日6~7時間遊んでた計算ですね。だいたい合ってます。
この記事は5ヶ月程度遊んでみただけの1ユーザーの視点での記事なので、昔の話とかについては書けないです。ご了承ください。
VR環境はPCVR + Oculus Quest 2で遊んでます。HaritoraXを買いましたがセットアップしてません。

f:id:trpg_yoshi:20211025183233j:plain
NeosVRのすがた。見かけたら遊んでください。

NeosVR の楽しみ方:ソーシャル編

文量が思ったより多くなってしまったので、ソーシャル編・アクティビティ編・クリエイティブ編とそれぞれ題して分割して書きます。アクティビティ編とクリエイティブ編は後日書きます。 dinosaur-fossil.hatenablog.com dinosaur-fossil.hatenablog.com

コミュニケーションを取る

NeosVRは一人で黙々と作業しても楽しいですが、観測できるほとんどの人が他人と何かしらの交流をしています(一人でいる人は観測できないだけですが)。

おしゃべりする

何はともあれお喋りです。我々は人間なので、お喋りは楽しいです。
NeosVRは通信方法がP2Pなので、物理的に近くに住んでいるのであれば通話の遅延がかなり少ないです。Discordのボイスチャット並みの会話ができます。
声を出せない人でも、ペンのアイテムを取り出せばどこでも会話できます。NeosVRでは好きな場所でアイテムを取り出すことが可能です。デスクトップ勢で無言勢の場合は、Mute Helperというテキストチャット用のアイテムも存在するので、そちらの方が使いやすいかもしれません。

また、NeosVRでは音声を拾うことが可能なので、リアルタイム翻訳機のアイテムが流通しています。海外勢と言語の壁を超えて会話することもできます。


NeosVRはアイトラッキング・フェイシャルトラッキングにも対応しています。会話してるときや現実で飲食をしているときなどにも実際の表情とアバターの表情をリンクさせることができ、より豊かなコミュニケーションを取れるでしょう。

メッセージを送る

同じワールドにいない人と連絡を取ることも可能です。フレンド同士なら、基本のフレンド機能でテキストメッセージやボイスメッセージを送り合うことができます。メッセージはオフライン状態の人にも送ることができるため、メールのような使い方もできるでしょう。
NeosVRにはVRSNSも存在します。Neow端末を取り出せばどこでも表示され、投稿した呟きは他のワールドとも同期されます。3次元空間に出てくる呟きはVRならではです。

触れ合う

NeosVRでは他人とのふれあいが簡単にできます。NeosVRで揺れモノを実現しているDynamicBone*3では、他人の髪やスカートに干渉することができます。掴んだりすることも可能ですし、引っ張ると伸びるようにもできます。
DynamicBoneの状態や他人との距離なども取得できるので、撫でられているときや髪を掴まれてるときに合わせて表情が変わるようにしている人もいます。
Boopジェスチャー*4をされたときにエフェクトが出るようにしている方もいます。

f:id:trpg_yoshi:20211024221625j:plain
髪を掴まれて表情が変わっている様子

また、アバター自体にユーザーがぶつかるコライダーを仕込むことで、他の人を押して動かしたり、自分の手の上に相手を乗せたり、あるいは他人によじ登ったり*5できます。わざわざコライダーを仕込まなくても、相手と握手できるアイテムやハイタッチできるアイテムなどもあります。

写真・動画・配信を見る

NeosVRでは画像ファイルや動画ファイルを簡単に読み込むことが可能で、中に持ち込んだ後は通常のアイテムと同じように拡大縮小、保存や複製などができます。ファイルじゃなくても、スクリーンショットYouTubeのURLをクリップボードからペーストするだけでもNeosVRに読み込むことが可能です。話題に上がった場所の写真や、Webサイトのスクリーンショットなどをその場で取り出して友達と共有できるのはかなり快適です。持ち込んだ写真も並べるだけで個展や展示会のような空間を気軽に作り出すこともできます。
さらに360度の写真や動画にも対応しているため、現実では中々確認しづらい全天球の写真や映像も体験できます。


また、NeosVRは各種配信サービスの配信も動画と同様に見ることができます。コメントの取得もTwitchであれば公式アイテムが、YouTubeなどであればマルチコメントビューアのプラグインとしてユーザーツールが存在します。みんなで配信や配信コメントを見ながらおしゃべりする状況もすぐに実現できます。空を飛べたり自身のサイズを変更したりが簡単にできるので、他の人の視界を妨げないようにするのも簡単です。

Amazon Prime Video のウォッチパーティを利用して、上映会を行うためのツールもあります。NeosVRでは自分のデスクトップをVR内から見ることができるので、各自のデスクトップビューの位置を合わせてウォッチパーティを見ることで、みんなで集まって同じ映像を見てるような体験ができます。

アイテムで遊ぶ

NeosVRではインベントリシステムがあり、権限で許可されている場所であれば、インベントリの中からアイテムを取り出したり保存したりすることが可能です。
鏡が欲しければ鏡のアイテムを取り出せばいいですし、他のワールドで見つけたおもしろアイテムをいつもの溜まり場で友達と共有するのも盛り上がります。
いろんなアイテムを配置するだけで自分だけのワールドができますし、記念日に友達にプレゼントを送ることもできます。

パブリックフォルダを使う

ワールドに配置されているもの以外にも、パブリックフォルダというものでアイテムが配布されていることもあります。パブリックフォルダをインベントリに保存することで、フォルダの中を見ることができます。
初めからインベントリ内にあるNeos Essentialsというパブリックフォルダの中にはさまざまなアイテムがあり、中でもGadgetsにはいろんなギミックが仕込まれた面白いアイテムがたくさん公開されています。アイテムでどんなギミックが実現できるかの参考にもなると思います。

名刺を交換する

NeosVRの日本コミュニティには名刺文化が存在します。簡単に名刺を作成するツールがあるため、フレンド申請を送り合うきっかけにもなりやすくて面白いです。人によっては個性あふれるカスタマイズをしているため、貰った名刺を保存して眺めるのも面白いです。
名刺に埋め込まれていることが多いですが、NeosVRではURLのリンクを共有することも簡単なため、VRだけではなくTwitterなどの外部のサービスで繋がることも手軽にできます。配信をしている方やVTuberの方などは自分の配信チャンネルのリンクを貼っていたりしますし、サークル活動をしている人はDiscordの招待リンクを貼っていることもあります。

f:id:trpg_yoshi:20211024222325j:plain
個性的な名刺いろいろ。SNSのリンクなども貼れる。

写真を撮る

NeosVRにはカメラ機能があり、好きなところで写真が撮れます。通常の写真だけではなく、3D写真や360度写真、切り抜き写真なんかも簡単に撮ることが可能です。撮った写真はすぐにワールドに現像されるため、友達と一緒に確認するのも簡単です。
さらに、ユーザー製のカスタマイズカメラも色んなものが配布されています。使いこなせばさまざまな写真を撮ることが可能です。


アバターのポージングを調整できるツールもあります。フルトラッキング機器を使っていなくても、足の位置などを自由に調整できるので、自撮りなどにも役に立つでしょう。

写真を共有する

NeosVRでは他人が撮った写真もすぐにパソコンに取り込むことができます。イベントの集合写真なんかは一人がタイマーで写真を撮ってみんなに配ることが多いです。外部のサービスで画像を共有する手間はありません。

教え合う

NeosVRに持ち込んだものはほぼ全てが同期されます。写真やアイテム、コンテキストメニューアバターセットアップUIまで、ほとんどのものが同期されお互いに確認することが可能になるため、困ったことがあればその場で周りの人に見てもらうことが簡単にできます。初見だと面食らってしまうアバターのセットアップなども、慣れてる人にお願いすればトラブルシューティングまで含めて解決することでしょう。
アバターセットアップに限らず、自分の苦手なことは詳しい人に質問し、自分の得意なことは教え合うというのがその場で簡単にできます。URLやスクリーンショットの共有の他にも、TopazChatを使えばデスクトップ画面の共有も簡単にできるため、BlenderやUnityなどの外部ツールの使い方も教わることができるかもしれません。
JPチュートリアルワールドで困っている人がいたら知っていることを教え合ってみましょう。何か困り事があれば、JPチュートリアルワールドに行ってみましょう。困りごとも一人で悩むよりかは複数人で悩んだほうが解決しやすいと思います。集まった人ではわからないことがあれば、より詳しく知ってそうな人が知り合いにいないか聞いてみましょう。

おわりに

今回はソーシャル編ということで、コミュニケーションを中心に取り上げてみました。次回はアクティビティ編です。ワールドの話やイベントの話などができればと思います。
dinosaur-fossil.hatenablog.com

この記事を読んでNeosVRに興味を持った人はぜひ遊びに来てみてください。
一人で始めるにはまだまだ情報が少ないとは思うので、最初のチュートリアル*6で「みんなで助け合いながらプレイ(パブリック)」を選ぶか、JPチュートリアルワールドに来てください。夜20時以降なら*7親切な人がやってきて教えてくれると思います。
また、毎週火曜日の22時から、初心者案内デーというイベントで操作方法からアバターセットアップまで教えてもらえます。そちらに参加してみてもいいと思います。


もし一人でやってみてわからないことがあれば、NeosVR JP Discordの質問チャンネルや、 Twitter#NeosVR知恵袋で質問してくれると誰かが教えてくれるかもしれません。
discord.com

*1:2021/11/03時点では、Steamからはダウンロードできない状況になっています。これは仮想通貨まわりのSteam規約の影響で、将来的にはSteamから配信されるバージョンでは通貨まわりの機能がオミットされたものが配信されるようになるそうです。詳しい情報はこちら https://wiki.neos.com/Neos_Credits/Steam_Changes

*2:日本時間の21時前後で、全世界のオンラインユーザーがだいたい200人前後。その内日本人が体感で20~40人ぐらい。

*3:UnityにあるDynamicBoneと名前は同じだが、NeosVR固有の別物

*4:Boopジェスチャーの参考記事:https://www.serendipity.page/b/2020/04/boop/

*5:移動モードの歩行(クライミング)では、コライダーを掴んでよじ登ることができます。

*6:Metaverse Training Center というワールドでチュートリアルを受けるところからゲームは始まります。

*7:昼間は学業や仕事などでインしている人が少ないので、日本人はほぼ居ないと思います。

Neos VR のユーザー情報を取得したときの API のメモ

概要

NeosVR の API からユーザー情報を取得する必要があって、ちょっとしたスクリプトを書いて取得したときのメモです。
公式の情報は ネットワークに関する情報 に書いてあることだけっぽいですが、
API 自体は公式には公開されてない [※要出典] らしいので、この記事の情報は別に正しくないです。

wiki.neos.com

API

Neos の APIapi.neos.com を使うと良さそうです。
www.neosvr-api.com とか cloudx.azurewebsites.net とかを叩いても同じ結果 [※未確認] が帰ってくるっぽいですが、どう違うのかはよくわかりません。
API ドキュメントは公開されていません。しかし、 PolyLogix Studio という有志のグループ? がまとめている非公式のものがあります。確認したくなったらこれを見るのがよいかと思います。

neos-api.polylogix.studio

ユーザー情報の取得

ユーザーIDは、多くの場合 U-[ユーザー名] になるんですが、ハイフン-やアンダーバー_などのような記号、日本語などが混じっていた場合はその限りではありません。
ユーザー名から情報を検索したい場合は https://api.neos.com/api/users/[ユーザー名]?byUserName=true を叩きます。マルチバイト文字の場合はURIエンコードしてください。
ぼくの情報が知りたい場合は https://api.neos.com/api/users/yoshi1123_?byUserName=true にアクセスするとわかります。

ユーザーIDがわかっている場合は、 https://api.neos.com/api/users/[ユーザーID] を見ます。ぼくの場合はユーザーIDが U-yoshi1123- なので、 https://api.neos.com/api/users/U-yoshi1123- を見れば丸わかりです。

上記2つの方法で帰ってくる形式は同じで、下記のようになります。
内容が推測できるものだけコメントを書いてます。

{
   "id":"U-yoshi1123-", /* ユーザーID */
   "username":"yoshi1123_", /* ユーザー名 */
   "normalizedUsername":"yoshi1123_",
   "registrationDate":"2021-05-18T09:23:47.9666713Z", /* Neos のアカウントを作成した日 */
   "isVerified":true,
   "quotaBytes":-1,
   "isLocked":false,
   "supressBanEvasion":false,
   "usedBytes":-1,
   "2fa_login":false,
   "tags":[
      "neos festa 3 participant"
   ],
   "profile":{
      "iconUrl":"neosdb:///b818988b835d17093c81636a3344d0f47ea3316f10ce8fcca5cd5a3afb2243b9.webp" /* プロフィールアイコンの画像 */
   },
   "patreonData":{ /* Patreon の情報(Patreon 連携してない場合は無いっぽい) */
      "isPatreonSupporter":true,
      "lastPatreonPledgeCents":-1,
      "lastTotalCents":-1,
      "minimumTotalUnits":-1,
      "externalCents":-1,
      "lastExternalCents":-1,
      "hasSupported":true,
      "lastIsAnorak":false,
      "priorityIssue":0,
      "lastPlusActivationTime":"2021-09-01T16:55:54.5170223Z",
      "lastActivationTime":"2021-09-01T16:55:54.5170223Z",
      "lastPlusPledgeAmount":-1,
      "lastPaidPledgeAmount":-1,
      "accountName":"Standard Account",
      "currentAccountType":0,
      "currentAccountCents":-1,
      "pledgedAccountType":0
   }
}

ちなみに、ユーザー名の前方一致で検索する API も存在します。
https://api.neos.com/api/users/?name=[ユーザー名]
結果は配列で帰ってきます。順序はよくわからないので、ユーザー名がわかっている場合は上の API を使うのがよいです。(最初の1件が完全一致したユーザーにならない場合があります。orangeさんとか)

NeosVR で初めてのオモチャ作成

購入したものの長らく眠っていた Oculus Quest を使って、先週から Neos VR という VRSNS に入り浸っています。

Neos ではゲーム内でノードプログラミングができる(LogiX という名前らしい)、という話を聞いてたので、試行錯誤しながらオモチャを作っています。この記事はそんな記録です。

ちなみにわかりやすい説明はいろいろと動画で出てるので、[Neos VR LogiX] とかで適当にググってください。この辺を参考に遊んでます。
youtu.be
youtu.be
youtu.be

ただ、残念なことに Neos の情報はネットに少なめです。どうしても詰まったら Neos にいる人に相談してみるといいかもしれません。今回の記事のオモチャも何度かテクを教えてもらってます。

今回作ったもの


時間経過で Rotation と Scale と色相が変わる箱です。(Position も変えたかったんですが、どう動かすのがいいか思いつかなかったのでやれてないです)

LogiX はこんな感じ f:id:trpg_yoshi:20210528193523j:plain

下記で少し細かく説明しますが、「たぶん」「おそらく」「と思います」などのふわっとした語彙がたくさん出てきます。なぜかというと Neos VR 始めて1週間程度のペーペーなので、詳しい理屈をまだ把握できてないからです。ご了承ください(予防線)。

準備

今回は箱を回すので、回す箱を作っておきます。ただ、箱の Rotation や Scale を操作すると Grabbable が反応しなくなるため、箱の親を作ってそれに Grabbable を付けておきます。
DevToolTip でコンテキストメニュー>新規作成>3D モデル>ボックスで箱を作ります。セカンダリーを当てた後にコンテキストメニューからインスペクターを開きます。Box の Grabbable コンポーネントを探して赤いXを押して消します。
Boxのスロットが開いてるところで、黄色い上矢印を押して親スロットを作ります。Box - Parent を選択して Attach Component>Transform>Interaction>Grabbable で Grabbable コンポーネントを追加しておきます。
f:id:trpg_yoshi:20210528193615j:plain

入力

今回は時間変動を扱うので、T ノードを入力に使います。
LogiX で時間経過で値を変動させたい場合は T ノードを使うらしいです。
これはワールドが生まれてからの時刻を吐き出します。Sin ノードや Cos ノードに渡すといい感じに振動する値が作れます。
T ノードは InputSinCos ノードは Math の中に入っています。
f:id:trpg_yoshi:20210528193651j:plain

他にも T*10, T/10, T/2 などのノードがありますが、今回はパラメータを後で変動させたかったので使っていません。

Rotation を変える1

CosSin の値を Pack xyz でまとめます。
Pack xyz はたぶん xyz のベクトルにまとめてくれるやつです。たぶん。
それを 180 倍して、From Euler で角度型に変換します。
ちなみに四則演算や比較演算子Pack xyz などは Operators に入っています。Math の中を探してぜんぜん見つからなくて泣きました。
From EulerMath/Rotation です。
f:id:trpg_yoshi:20210528193726j:plain

こうして出来上がった LogiX の出力をオブジェクトに繋ぎます。
DevToolTip を装備して、オブジェクトのインスペクターを開きます。その後、 LogixTip に装備を変えて、オブジェクトの名前をグラブしながらセカンダリーでインターフェースノードが開きます。
文章だとなんのこっちゃだと思うので、上記の動画などで確認してください。

インターフェースノードはオブジェクトのスロット(インスペクターの階層みたいなやつ?)やコンポーネントなどからだせるらしいです。たぶんですけどインターフェースノードを出せるやつはぜんぶ LogiX で弄れます。

インターフェースノードには色んな色や模様がついてますが、これらは同じ色・模様は同じ型らしいので、同じ色のものを繋げることができます。
弄りたい値の型を見て入力から LogiX を捏ねていく方が考えやすいかもしれません。

今回は Rotation を変えたいので、Rotation の場所に繋ぎます。繋いだときに線じゃなくて矢印になるんですけど、どういうやつなのかは知りません。
f:id:trpg_yoshi:20210528193748j:plain

愉快に回る箱の完成です。

Scale を変える

Position のときと同じ理屈で、いい感じの LogiX を繋いで出力を Scale に繋ぎます。Scale の型は3次元ベクトルっぽいので Pack xyz から直接繋ぎます。
Sin のままだと値域が -1 ~ 1 でダサかったので 0.5 ~ 1.5 の値になるようにノードを挟んでいます2+1 ノードは Operators の中にあります。
f:id:trpg_yoshi:20210528193925j:plain

色を変える

色を変えるために、マテリアルを作ります。DevToolTip を装備してコンテキストメニュー>新規作成>マテリアル>PBS Metallic を選びました。別に何でもいいです。
作ったマテリアルをグラブして、Box のインスペクターの中の Mesh Renderer コンポーネントの Materials (list) の中の枠にトリガーします。最初に入ってるマテリアルの上からセットしていいです。
これをせずに初期のマテリアルを弄ってしまうと、ワールドのデフォルトのマテリアルが変化してしまうらしいです。

その後は同様にマテリアルのインターフェースノードを取り出し、今回は EmmissiveColor に向けて値を作ります。
Color から Hue ノードを選びます。これは Float の入力から色相を作るノードっぽいです。Float ならなんでもよさそうなので、T ノードから直接繋いでみます。
f:id:trpg_yoshi:20210528194001j:plain

ゴキゲンに光り輝く箱の爆誕です。

速度を変える

このままだと一定の速度で動くだけのインテリアですこし面白くない(し、動くのが速くて目が痛い)ので、速度を変えれるようにします。

入力の T ノードに戻って、T から伸びてるノードの間に掛け算ノードを挟みます。そして掛け算を T 掛ける何かにしましょう。
LogiX では変数も扱うことが可能です。Variables/Storage から Float を選んで、掛け算ノードに繋ぎます。
Float ノードの初期値は0なので動きは止まってしまいます。)
f:id:trpg_yoshi:20210528194116j:plain

この Float ノードに対して、特定のアクションを行った際に値を書き込むように組んでみます。値を書き込む際に使うノードは Write ノード。Actions から取り出します。
Write ノードは入力の Pulse が来た時に、入力の値を矢印の先に書き込むノードらしいです。なので矢印を Float に繋ぎます。
f:id:trpg_yoshi:20210528194139j:plain

Write で書き込む値は毎回違う値にしたいので、乱数を使います。Math/Random から Random Float ノードを選びます。
このノードには入力が2つありますが、値域を決めるためのもののようです(大小はどちらでもよさそう)。今回は 0 ~ 1 にします。
f:id:trpg_yoshi:20210528194156j:plain

この状態で Write ノードの Pulse を押すと、押したときの乱数の値が Float ノードに書き込まれ、速度が変化できます。

グラブした状態でトリガーしたときに Pulse を送る

ここはぶっちゃけ人に質問して作ってもらった箇所なので、詳しい理屈はわかりません。繋いだものを並べます。

まず箱の Grabbable コンポーネントからインターフェースノードを取り出します。 そこから次を繋いでいきます。

  • Interaction/Grabbable/Grabbable Grabber
  • Slots/Get Slot
  • Slots/Get Active User
  • Input Devices/Controllers/Standard Controller (2つ)
  • Math/Max

f:id:trpg_yoshi:20210528194242j:plain

この順で繋ぐと、箱を持ってる人がどれだけトリガーを押し込んでいるかが拾えるらしいです。
ちなみに Standard Controller を2つ作っているのは、右手用と左手用らしく、どちらの手で握ってるかを把握する LogiX も書けるらしいですが、覚えてないそうでこの方法を教えてもらいました。
Standard Controller からトリガー時に Pulse が出る出力もあるらしいですが、バグりやすいとのことで押し込み時の率からやるのがいいそうです。

これを Pulse にするために、Operators の大なりノードを挟み、FlowFire on True ノードで繋ぎます。
Fire on True ノードは入力が True になったら Pulse を流すノードだそうです。Fire on True ノードから Write ノードへ繋いだら完成です。
f:id:trpg_yoshi:20210528194314j:plain

packing

箱と一緒に LogiX を保存するために、忘れずに packing します。
インベントリの Box - Parent を選択して黄色い星アイコンをクリックして子スロットを作ります。
Box - Parent - Child が作成されますが、わかりやすいように名前を変えます。logix とか。ついでに親も名前を変えておきます。眩しいので gaming box とかにしておきます。
logix をグラブした状態でコンテキストメニュー>パッキングルートに設定を選び、LogiX ノードに向けてビームが飛んでる状態でセカンダリーを長押しします。
LogiX が全部消えるまで繰り返します。

これができたら、gaming box を掴んでインベントリに保存しましょう。

遊ぶ

楽しい。

まとめ

Neos の記事はまだ少なそうなので、こんな感じで雑多な記事を書いて情報量を増やしていこうかなと思いました。初心者の気持ちになれるやつがあると嬉しいです。なお質。
おしまい。

躓いたところとか

Box にそのまま Grabbable 付けてたら掴めなくなった

値を変えてるとき(紫色になってる場合)は掴めないらしい。親を作って回避。


掴んでトリガー押したら2回 Pulse が流れるっぽい?

LogiX を出してると重いらしく、そのせいで処理がダブついてるんじゃなかろうか。パッキングして LogiX を消したらいい感じになった。

このノードどこにあんの???

誰かから NodeMenu+ を貰いましょう。検索機能が付いてるので便利です。
JP skill share World の複合ツールチップにあるマルチツールチップを装備して LogiX モードでノードブラウザを開いても出てきます。
f:id:trpg_yoshi:20210528194425j:plain

追記


  1. Rotation の回転を LogiX で組みましたが、 spinner コンポーネントというものを使えばもっと簡単にできそうです。後で知りました。

  2. Remap ノードを使えばもっと簡単に値の再割当てができました。

スタリィドールの素材

サイコロ・フィクションの新作TRPG『星と宝石と人形のTRPG スタリィドール』が出ましたね。

www.bouken.jp

今度セッションをするので準備をしていたんですが、ラプスロールの結果どこに移動できるかをホロスコープシート上で把握しやすくならないかと、以下のような素材を作ってみました。 f:id:trpg_yoshi:20210509142332p:plain

ホロスコープシートの素材は色んな人が公開してたので、それに上から被せるように配置して、適宜回転して距離を数えると便利かなーと思いました。
まだ実セッションで使ったことはないので、利便性は未知数です。
とりあえずユドナリウム用です。ココフォリアでも使えるかと思ってましたが、45度刻みでしか回転できないんですね……

ついでに顕と蝕のアイコンも作ったので貼っておきます。 f:id:trpg_yoshi:20210509142807p:plainf:id:trpg_yoshi:20210509142817p:plain