NeosVR日本語Wiki - Avatar_Import

モデルデータからセットアップする

この記事はある程度Neosに慣れた人で、リグ付きアバターをセットアップしたい人向けになります。

Neosを始めてまだ間もない方は、一度Neosにいる人にアバターセットアップについて相談してもらうか
作者にNeos対応を要望する(もしくはNeos対応のアバターを使用する)ことをおすすめします。
他のVRSNSで使用している、あるいはNeos対応と作者が記載していないアバターをセットアップしたい場合は下を参考に作成を進めてください。
また、読む場合でも最低限Neosに慣れた人にすぐに聞ける状況で作成をしてください。

アバター新規作成時の注意点

アバターに関して、ポリゴン数・ボーン数・マテリアル数など制限はありません。
ボーンやブレンドシェイプのあるアバターをセットアップする場合、いくつか構成に注意点があります。

(折りたたみ)ボーン名の注意点など


Oculusリップシンクの口形素名に準じているブレンドシェイプは自動でリップシンクに割り当てられます。
・まばたきには"blink", "wink", "eye close" + "left" / "right"で判定されます。
・ウインク、ウインク右、ウインク2、ウインク2右とセットアップされたアバターは瞬きが互い違いになります。手動でどちらか選択し差しなおす必要があります。

その他の注意
・コンストレイントなど補助ボーンを使用したモデルについては、自動でインポートさせることはできません。
Blenderでボーンを編集するか、Logixやコンポーネントを使用して自分で動作を設定する必要があります。

・Unityで大幅な改変(主に「服の着せ替え」など、二つ以上のFBXからメッシュを取り出した場合)を行った後、
FBX ExporterやUniVRMを用いてFBX/VRM/GLTFとして出力したモデルについては、こちらの記事を参考にしてください。
また、Unityから取り出したファイルはまずNeosVRにインポートする前に一度Unityで再確認してみてください。
その時点でメッシュの位置やシェイプキーが壊れている場合はそもそもNeosVRに持ち込んでも壊れたままです。
・頭が極端に大きかったり、腕が短いヒューマノイドモデルは操作が困難になる可能性があります。

特定の形式の場合のガイド

モデルをインポート、アバター化する

ここで解説するアバターについて

モデルのインポート

.fbx、.glb、.blendファイルを読み込めます。
ダッシュメニューのファイルブラウザからアバターのモデルを選択してNeosVRにインポートします。
参考: インポートする

出てきた画面(モデルインポーター)で、3Dモデル > レギュラー/アバター > ヒューマノイドの身長に自動設定 > 高度な設定 を順番に選択します。
   

高度な設定の画面で、マテリアルを"XiexeToon"(NeosVRで使用できるトゥーンシェーダー)に設定します。
下にスクロールして最下段の"アセットをオブジェクト内に入る"にチェックを入れて、"インポート実行"を押してください。
 
正常に読み込みが完了すると、アバターの3Dモデルが出現します。


こちらのエラー表示がモデル読み込みと同時に出た場合は、モデルのボーンがヒューマノイドとして正常に読み込まれませんでした。上記ボーン名の注意点を確認して、モデリングソフト等でボーン名を編集する必要があります。


裏側でインポートが異常停止した場合など、しばらく待っても黄色い円のままでインポートが終わらないことがあります。
また、インポートするFBXによってはNeosが強制終了することもあります。
それらの事象が発生した際は、以下の内容を参考に編集してください。

Neosが強制終了した場合は読み込んだモデルデータが対応していない形式になっている可能性があります。
こちらの記事を参考にモデルデータの修正を実施してください。

Neosのインポートがこの画面(Processing Rigged Meshes)で止まる場合、アバターとして必須なボーンのうちどのメッシュにも紐ついていないボーンがある可能性があります。
この場合はお手数ですが、アバターのボーンを一通り網羅した仮メッシュを作成してもらう必要があります。
Neosではインポート後それぞれのオブジェクトを消すことができるので、この仮メッシュはインポート後消してもらえれば問題ありません。
仮メッシュを作成する場合は、必ず1頂点に当たり最大2ボーンまで(GLTF/GLBで出力する場合は4ボーンまで)の割り当てに収めるようにしてください。
<!--これもそのうち自動生成ツール作りたいね。FBXならFBX SDKこねこねしたら作れそう-->

アバタークリエイターで作成

ダッシュメニューのホームの右側、もしくはDevToolTip内「新規作成 > オブジェクト」に"アバタークリエイター"があります。
クリックしますとヘッドマウントディスプレイ(HMD)と左右の手のモデルとパネルが出てきます。

Neosのヘッドレスセッションでアバターをセットアップしている場合、レーザで正常に操作できないバグがあります。
操作前に一度DevToolTipで開き、[Headset]/[LeftHand]/[RightHand]内からSliderを探し、[DontDrive]をオンにしてください。
また、この後の操作で出てくる[Grabber]/[Shelf]/[Tip]の調整を行う場合も、もしレーザで操作する場合はSlider内[DontDrive]をオンにしてください。
この操作はCompliantAvatarCreatorを導入すると自動でしてくれます。

それぞれの項目の一覧です


HMDをつかんでアバターの頭にだいたい合わせます。
アバタークリエイターのパネルの"頭の前方向を揃える" / "頭の上方向を揃える" / "頭の右方向を揃える" / "頭の中心を揃える"
を順番に押すと、いい感じの位置にそれぞれ合わせてくれます。
HMDの「目の高さ」「奥行」については調整してくれないので、その点は自分で調整しつつ合わせてください。


その後"手の位置をあわせる"を押すと手首の位置が合います。回転軸については合わないため、ギズモを使用するか自分で掴んで合わせてください。
手首の位置を合わせて、指先がアバターから少し出ているくらいがベストです。
 

この時、アバターを間違って動かしてしまった時はコンテキストメニューから"戻す"を押して、位置を戻してください。
誤ってずれたまま進めると、アバターが正常にセットアップされないです。

作成時、"プロテクトアバター"のチェックについてはアバター化したいデータを考慮したうえで必ず確認して下さい
販売アバターなど、他の人が着ると問題のあるデータは必ずプロテクトを設定してください。
この時点でプロテクトのチェックがグレーに塗りつぶされていてつけることができない場合は、セッション接続時にNeosにログインできていないため、セッション側が自分のユーザIDを取得できていません。
ログインしたうえでセッションに入りなおして、チェックボックスがグレーに塗りつぶされていないことを確認してください。

全て確認した上で、"作成"を押すとアバター化できます。
作成を押すのはアバターを利用する本人が押してください。作成ボタンを押したユーザーのアバターとしてプロテクトが設定されます。

アバター化した後は、アバターに対してレーザーを当ててプライマリを押し、「アバターを着る」を押すことでアバターを着用できます。


追加の設定をする場合にも、この地点でインベントリに保存しておくことをお勧めします。

インベントリの操作(アバター)

出来上がったアバターはインベントリに保存します。フォルダを専用に作っておくといいでしょう。
ダッシュメニューからインベントリを表示させます。アバターをグラブしながら(頭の近くを掴める)、もう一方の手で、右上のを押すと保存されます。
(共有ファイルなど自分の編集権限のないフォルダには保存できません)
現在着ているアバターを保存したい時は、を押します。

他のアバターに着替えたいときには、インベントリからアバターを選んで上のを押します。

アバターをお気に入りアバター(セッションに接続した時に着るアバター)に設定する時はアバターを選んで上のを押します。

アバターを整える

アバターを作成後、いろいろ気になる点があると思います。それらについてのQ&Aを以下に記載します。

マテリアルインスペクターを開く

モデルを読み込んだ時と同様にして、テクスチャ(画像)をNeosVRへインポートします。
(参考、インポートする
画像インポーターでは"イメージ/テクスチャ"を選択してください。


画像が読み込まれたら、インベントリの"Essential Tools"からDevToolTipを取りだします。
プライマリで装備しアバターへレーザーを当てて、セカンダリーで選択します。(ギズモが表示される)
DevToolTipを装備している手でコンテキストメニューを開き、"インスペクターを開く"を選択します。


インスペクターが開くので、左上のを押すと、アバターのルート階層に移動します。
スロットの名前左のを押すと、スロットの下の階層が見えるので、順番に開いて、メッシュを見つけましょう。
大抵は、〜.FBX>CenteredRoot>RootNode の下にあるので、メッシュの名前をプライマリを2回押すことで選択できます。


メッシュのスロットには"SkinnedMeshRenderer"コンポーネントがあります。ここに、マテリアルのリストがあります。

Materials(list):の各名前の左側のを押すと、マテリアルインスペクターを開くことができます。
この開いたマテリアルインスペクターから各マテリアルの設定を行ってください。

メッシュが複数ある場合は、そこからそれぞれマテリアルの編集が必要になる事があります。

アバターのマテリアルについて

アバターの階層にあります[CenteredRoot -> Assets]内を確認してもらうとアバターに設定されているマテリアルのリストがあります。

以前の確認方法

対応するテクスチャ(画像)をグラブし、もう片方の手でそれぞれのマテリアルにある"MainTexture:"の白い枠に当ててトリガーを押すと、テクスチャが設定されます。


その他、詳しいマテリアルの設定については、マテリアルの調整例を確認して下さい。

マテリアルの見た目が暗い/陰影が濃い(Material:ShadowRamp/ShadowSharpness/Emission/RenderQueue)

マテリアルの調整例を参考に調整することで暗さを改善することが出来ます。

透過(アルファ)の設定(Material:BlendMode)

アバターによっては表情で透過のマテリアルを使用している場合があります。
その際は一度マテリアルを確認しておき、設定が必要な場合は設定しましょう。

ブレンドシェイプの設定されたメッシュをインスペクターで選択して、下にスクロールすると、ブレンドシェイプのリストが見つかります。

このアバターの場合、"cheek_on"の数値を変えると、表示がおかしくなるため、透過の設定が必要だとわかる。

そこで、対応するマテリアルを開き、"BlendMode:"を"Alpha"に設定する。
 

通常のテクスチャと透過用のマスクテクスチャが別れている場合はこのサイトから合成できる。
透過PNG画像を作成できるサイト
(この画像加工ツールは画像処理を利用者の端末内で行っており、読み込んだ画像を外部に送信することはありません。)
上に元のテクスチャを、真ん中に透過レベルを示したマスクテクスチャを入れると、下に透過テクスチャを表示する。
下の透過テクスチャを右クリック→画像を保存 で加工済みの画像を保存できる。

その他、マテリアルの設定についてはこちら
また、こちらの記事ではXiexeToonマテリアルの各項目について解説しています。参考にしてください: https://note.com/akiram_vr/n/n5e55290e2cee

取り込んだアバターが変形してしまう

以下の可能性が挙げられます。内部データを確認したうえで判断してください。
  • モデルのボーン構成がNeosVRに対応していない
VRIKが適切にセットアップできていない場合、正常にアバターが動作しない。ボーン、ブレンドシェイプ名の注意点などを確認した上で、
モデルのボーン名称について変更するよう作者に依頼してください。
自分が編集権限を持ち、十分な知識がある場合はボーン、ブレンドシェイプ名の注意点などを確認した上でボーン名を変更し、変更したデータを再度生成しましょう。
  • UnityからFBX Exporterで出力した
Unityで改変したモデルや、VRMのモデルはFBX Exporterで出力したときに、
Unityに追加した独自ツールの動作(代表例: 「キセテネ」「MeshDeleter」)の影響や、シーンで適切にコンポーネントを設置・削減していない場合、
FBX Exporterでは正常に出力できないことがあります。この場合、Unityに取り込みなおした場合であってもメッシュの位置やシェイプキーがおかしくなることが確認できるでしょう。
ツールを使用せず改変しなおしたり、適切にコンポーネントを設置・削減したうえでFBX Exporterで出力することで動作するかもしれません。
また、こちらの記事を参考にモデルデータの修正も試してみてください。

アバターの目の動きが大きい(Slot:Eye Manager -> Component:EyeRotationDriver -> Key:MaxSwing)

アバターによっては目の動きが大きい場合がある。VRoidアバターは標準では目の動きが大きすぎて白目になってしまう。
"Head" -> Eye Manager スロットを開き、"EyeRotationDriver"コンポーネントにある"MaxSwing"の値を小さくして対応する(4-8)。
 

瞬きを設定する

ブレンドシェイプの名前がNeos側で認識できれば自動で入る。
瞬きは"blink", "wink", "eye close" + "left" / "right"との名前が入っている必要がある。根拠1根拠2
アバターセットアップ時に割り当てられていなかったり、おかしければ手動で設定できます。
"Head"ボーンの下に、"Eye Manager"というスロットがある、その中に"EyeLinearDriver"コンポーネントがある。
"Eyes(list):"の"OpenCloseTarget"にブレンドシェイプを割り当てればよい、リストに項目がなければ"Add"で追加する。
ブレンドシェイプの瞬きに相当する名前をグラブして、"OpenCloseTarget"へドロップする。
"Side"で左右どちらかや両方かの設定ができる。

リップシンクの設定(DirectVisemeDriver)

リップシンク(発言に合わせた口パク)の設定がおかしい場合も、上記"瞬きを設定する"同様に設定する。
ブレンドシェイプの設定されたメッシュに"DirectVisemeDriver"コンポーネントがある。
ここに、それぞれ対応するブレンドシェイプを割り当てればよい。
ブレンドシェイプの名前をグラブして、それぞれ対応する枠へドロップする。


・例、Bodyメッシュにあるブレンドシェイプ。この名前の部分をグラブする。


DirectVisemeDriverがない場合は、新しくコンポーネントを割当し、Head ProxyにVisemeAnalyzer, AvatarVoiceSourceAssignerを割り当て、それぞれ接続する必要がある。
VRoidアバター向け
VRoidアバターは、顔のメッシュのDirectVisemeDriverのRRにまばたきのシェイプキーが自動で割り当てられてしまう。
RRの右側のを押して、割当を外します。


リップシンクのシェイプキーをグラブして、DirectVisemeDriverのaa, E, ih, oh, ou の項目で離して設定しましょう。
参照リップシンクの設定

アバターのサイズを変える(DefaultUserScale)

コンテキストメニューから自分の大きさを変えることができますが、アバターの標準の大きさを変えたい場合はDefaultUserScaleコンポーネントをアバターに設定します。

アバターのプロテクトをかけ忘れた

よっしーさん制作「BulkAttacher」を使用することで一括して[SimpleAvatarProtection]を付与できます。

アバターにプロテクトがかけられない

ログインしていないと下記のようにプロテクトアバターが灰色になってプロテクトがかけられない状態になります。

(NeosJapan discord 質問 2020/3/20)

アバターの髪やメッシュが邪魔で前が見えない

2つの解決方法があります。
ビューポジションを調整する(推奨)
アバターのルート -> Head Proxyに"Target"があり、この位置を前後に動かすことで、視点に対するアバターの頭の位置を調整できます。

これで解決できない場合、Modかニアクリップにて対応してください。
HeadCullingMaskで対応する
https://github.com/hantabaru1014/HeadCullingMask を入れていない場合は導入してください。
非表示にしたいメッシュが入っているスロットを指定し、[Uncategoraized -> Comment]を追加します。
コメントに以下の通り記入してください。
net.hantabaru1014.HeadCullingMask.TargetSlot
あとはアバターを着なおすことで指定したメッシュが目に見えなくなります。
ニアクリップを設定する
下記の図のようにHead Proxyの下に子スロットを作り、そこに[AvatarRendarSettings (Users -> Common Avatar System にあります)]というコンポーネントをつけます。
そして、"NearClip:"にチェックを入れて0.075などの値を入力します。設定が終わったらセーブして、着替え直す。そうすると設定が反映される。
これで視点に近い位置のメッシュが描画されなくなります。

ツールシェルフが袖に埋まってしまってうまく使えない

DevToolTipを使用して、「Toolshelf Anchor」の位置や回転を調整することで対応可能です。


また、作成時にツールシェルフの位置を調整可能です。左右対称に設定できるためここで設定しておくことをお勧めします。

取り外しができる帽子をつける

帽子の方にSnapperというコンポーネントを追加する。Transform->Interaction->Snapper
頭の方にSnapAreaとSnapという名前のスロットを作り、SnapにSnapTargetというコンポーネントを追加する。Transform->Interaction->SnapTarget
位置などを調整する。

Unityで改変したモデルをNeosVRにインポートする

Avatar_Import_from_Unity に移動しました。こちらをご確認ください。