- モデルデータからセットアップする
- 特定の形式の場合のガイド
- モデルをインポート、アバター化する
- アバターを整える
- マテリアルインスペクターを開く
- アバターのマテリアルについて
- マテリアルの見た目が暗い/陰影が濃い(Material:ShadowRamp/ShadowSharpness/Emission/RenderQueue)
- 透過(アルファ)の設定(Material:BlendMode)
- 取り込んだアバターが変形してしまう
- アバターの目の動きが大きい(Slot:Eye Manager -> Component:EyeRotationDriver -> Key:MaxSwing)
- 瞬きを設定する
- リップシンクの設定(DirectVisemeDriver)
- アバターのサイズを変える(DefaultUserScale)
- アバターのプロテクトをかけ忘れた
- アバターにプロテクトがかけられない
- アバターの髪やメッシュが邪魔で前が見えない
- ツールシェルフが袖に埋まってしまってうまく使えない
- 取り外しができる帽子をつける
- Unityで改変したモデルをNeosVRにインポートする
この記事はある程度Neosに慣れた人で、リグ付きアバターをセットアップしたい人向けになります。
Neosを始めてまだ間もない方は、一度Neosにいる人にアバターセットアップについて相談してもらうか
作者にNeos対応を要望する(もしくはNeos対応のアバターを使用する)ことをおすすめします。
他のVRSNSで使用している、あるいはNeos対応と作者が記載していないアバターをセットアップしたい場合は下を参考に作成を進めてください。
また、読む場合でも最低限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に持ち込んでも壊れたままです。
・頭が極端に大きかったり、腕が短いヒューマノイドモデルは操作が困難になる可能性があります。
ボーンやブレンドシェイプのあるアバターをセットアップする場合、いくつか構成に注意点があります。
Oculusリップシンクの口形素名に準じているブレンドシェイプは自動でリップシンクに割り当てられます。
・まばたきには"blink", "wink", "eye close" + "left" / "right"で判定されます。
・ウインク、ウインク右、ウインク2、ウインク2右とセットアップされたアバターは瞬きが互い違いになります。手動でどちらか選択し差しなおす必要があります。
その他の注意
・コンストレイントなど補助ボーンを使用したモデルについては、自動でインポートさせることはできません。
Blenderでボーンを編集するか、Logixやコンポーネントを使用して自分で動作を設定する必要があります。
・Unityで大幅な改変(主に「服の着せ替え」など、二つ以上のFBXからメッシュを取り出した場合)を行った後、
FBX ExporterやUniVRMを用いてFBX/VRM/GLTFとして出力したモデルについては、こちらの記事を参考にしてください。
また、Unityから取り出したファイルはまずNeosVRにインポートする前に一度Unityで再確認してみてください。
その時点でメッシュの位置やシェイプキーが壊れている場合はそもそもNeosVRに持ち込んでも壊れたままです。
・頭が極端に大きかったり、腕が短いヒューマノイドモデルは操作が困難になる可能性があります。
- VRMをNeosVRにもっていきたい場合は VRMアバターをNeosVRへ持っていく を確認してください
- 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こねこねしたら作れそう-->
ダッシュメニューのファイルブラウザからアバターのモデルを選択して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を取得できていません。
ログインしたうえでセッションに入りなおして、チェックボックスがグレーに塗りつぶされていないことを確認してください。
全て確認した上で、"作成"を押すとアバター化できます。
作成を押すのはアバターを利用する本人が押してください。作成ボタンを押したユーザーのアバターとしてプロテクトが設定されます。
アバター化した後は、アバターに対してレーザーを当ててプライマリを押し、「アバターを着る」を押すことでアバターを着用できます。

追加の設定をする場合にも、この地点でインベントリに保存しておくことをお勧めします。
クリックしますとヘッドマウントディスプレイ(HMD)と左右の手のモデルとパネルが出てきます。
Neosのヘッドレスセッションでアバターをセットアップしている場合、レーザで正常に操作できないバグがあります。
操作前に一度DevToolTipで開き、[Headset]/[LeftHand]/[RightHand]内からSliderを探し、[DontDrive]をオンにしてください。
また、この後の操作で出てくる[Grabber]/[Shelf]/[Tip]の調整を行う場合も、もしレーザで操作する場合はSlider内[DontDrive]をオンにしてください。
この操作はCompliantAvatarCreatorを導入すると自動でしてくれます。
HMDをつかんでアバターの頭にだいたい合わせます。
アバタークリエイターのパネルの"頭の前方向を揃える" / "頭の上方向を揃える" / "頭の右方向を揃える" / "頭の中心を揃える"
を順番に押すと、いい感じの位置にそれぞれ合わせてくれます。
HMDの「目の高さ」「奥行」については調整してくれないので、その点は自分で調整しつつ合わせてください。


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


この時、アバターを間違って動かしてしまった時はコンテキストメニューから"戻す"を押して、位置を戻してください。
誤ってずれたまま進めると、アバターが正常にセットアップされないです。
作成時、"プロテクトアバター"のチェックについてはアバター化したいデータを考慮したうえで必ず確認して下さい。
販売アバターなど、他の人が着ると問題のあるデータは必ずプロテクトを設定してください。
この時点でプロテクトのチェックがグレーに塗りつぶされていてつけることができない場合は、セッション接続時にNeosにログインできていないため、セッション側が自分のユーザIDを取得できていません。
ログインしたうえでセッションに入りなおして、チェックボックスがグレーに塗りつぶされていないことを確認してください。
全て確認した上で、"作成"を押すとアバター化できます。
作成を押すのはアバターを利用する本人が押してください。作成ボタンを押したユーザーのアバターとしてプロテクトが設定されます。
アバター化した後は、アバターに対してレーザーを当ててプライマリを押し、「アバターを着る」を押すことでアバターを着用できます。

追加の設定をする場合にも、この地点でインベントリに保存しておくことをお勧めします。
モデルを読み込んだ時と同様にして、テクスチャ(画像)をNeosVRへインポートします。
(参考、インポートする)
画像インポーターでは"イメージ/テクスチャ"を選択してください。

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

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

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

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

メッシュが複数ある場合は、そこからそれぞれマテリアルの編集が必要になる事があります。
(参考、インポートする)
画像インポーターでは"イメージ/テクスチャ"を選択してください。

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

インスペクターが開くので、左上の

スロットの名前左の

大抵は、〜.FBX>CenteredRoot>RootNode の下にあるので、メッシュの名前をプライマリを2回押すことで選択できます。

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

Materials(list):の各名前の左側の

この開いたマテリアルインスペクターから各マテリアルの設定を行ってください。

メッシュが複数ある場合は、そこからそれぞれマテリアルの編集が必要になる事があります。
マテリアルの調整例を参考に調整することで暗さを改善することが出来ます。
アバターによっては表情で透過のマテリアルを使用している場合があります。
その際は一度マテリアルを確認しておき、設定が必要な場合は設定しましょう。
ブレンドシェイプの設定されたメッシュをインスペクターで選択して、下にスクロールすると、ブレンドシェイプのリストが見つかります。

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

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

通常のテクスチャと透過用のマスクテクスチャが別れている場合はこのサイトから合成できる。
透過PNG画像を作成できるサイト
(この画像加工ツールは画像処理を利用者の端末内で行っており、読み込んだ画像を外部に送信することはありません。)
上に元のテクスチャを、真ん中に透過レベルを示したマスクテクスチャを入れると、下に透過テクスチャを表示する。
下の透過テクスチャを右クリック→画像を保存 で加工済みの画像を保存できる。
その他、マテリアルの設定についてはこちら
また、こちらの記事ではXiexeToonマテリアルの各項目について解説しています。参考にしてください: https://note.com/akiram_vr/n/n5e55290e2cee
その際は一度マテリアルを確認しておき、設定が必要な場合は設定しましょう。
ブレンドシェイプの設定されたメッシュをインスペクターで選択して、下にスクロールすると、ブレンドシェイプのリストが見つかります。

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

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


通常のテクスチャと透過用のマスクテクスチャが別れている場合はこのサイトから合成できる。
透過PNG画像を作成できるサイト
(この画像加工ツールは画像処理を利用者の端末内で行っており、読み込んだ画像を外部に送信することはありません。)
上に元のテクスチャを、真ん中に透過レベルを示したマスクテクスチャを入れると、下に透過テクスチャを表示する。
下の透過テクスチャを右クリック→画像を保存 で加工済みの画像を保存できる。
その他、マテリアルの設定についてはこちら
また、こちらの記事ではXiexeToonマテリアルの各項目について解説しています。参考にしてください: https://note.com/akiram_vr/n/n5e55290e2cee
以下の可能性が挙げられます。内部データを確認したうえで判断してください。
モデルのボーン名称について変更するよう作者に依頼してください。
自分が編集権限を持ち、十分な知識がある場合はボーン、ブレンドシェイプ名の注意点などを確認した上でボーン名を変更し、変更したデータを再度生成しましょう。
Unityに追加した独自ツールの動作(代表例: 「キセテネ」「MeshDeleter」)の影響や、シーンで適切にコンポーネントを設置・削減していない場合、
FBX Exporterでは正常に出力できないことがあります。この場合、Unityに取り込みなおした場合であってもメッシュの位置やシェイプキーがおかしくなることが確認できるでしょう。
ツールを使用せず改変しなおしたり、適切にコンポーネントを設置・削減したうえでFBX Exporterで出力することで動作するかもしれません。
また、こちらの記事を参考にモデルデータの修正も試してみてください。
- モデルのボーン構成がNeosVRに対応していない
モデルのボーン名称について変更するよう作者に依頼してください。
自分が編集権限を持ち、十分な知識がある場合はボーン、ブレンドシェイプ名の注意点などを確認した上でボーン名を変更し、変更したデータを再度生成しましょう。
- UnityからFBX Exporterで出力した
Unityに追加した独自ツールの動作(代表例: 「キセテネ」「MeshDeleter」)の影響や、シーンで適切にコンポーネントを設置・削減していない場合、
FBX Exporterでは正常に出力できないことがあります。この場合、Unityに取り込みなおした場合であってもメッシュの位置やシェイプキーがおかしくなることが確認できるでしょう。
ツールを使用せず改変しなおしたり、適切にコンポーネントを設置・削減したうえでFBX Exporterで出力することで動作するかもしれません。
また、こちらの記事を参考にモデルデータの修正も試してみてください。
ブレンドシェイプの名前がNeos側で認識できれば自動で入る。
瞬きは"blink", "wink", "eye close" + "left" / "right"との名前が入っている必要がある。根拠1根拠2
アバターセットアップ時に割り当てられていなかったり、おかしければ手動で設定できます。
"Head"ボーンの下に、"Eye Manager"というスロットがある、その中に"EyeLinearDriver"コンポーネントがある。
"Eyes(list):"の"OpenCloseTarget"にブレンドシェイプを割り当てればよい、リストに項目がなければ"Add"で追加する。
ブレンドシェイプの瞬きに相当する名前をグラブして、"OpenCloseTarget"へドロップする。
"Side"で左右どちらかや両方かの設定ができる。

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

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

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

DirectVisemeDriverがない場合は、新しくコンポーネントを割当し、Head ProxyにVisemeAnalyzer, AvatarVoiceSourceAssignerを割り当て、それぞれ接続する必要がある。
ブレンドシェイプの設定されたメッシュに"DirectVisemeDriver"コンポーネントがある。
ここに、それぞれ対応するブレンドシェイプを割り当てればよい。
ブレンドシェイプの名前をグラブして、それぞれ対応する枠へドロップする。

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

DirectVisemeDriverがない場合は、新しくコンポーネントを割当し、Head ProxyにVisemeAnalyzer, AvatarVoiceSourceAssignerを割り当て、それぞれ接続する必要がある。
https://github.com/hantabaru1014/HeadCullingMask を入れていない場合は導入してください。
非表示にしたいメッシュが入っているスロットを指定し、[Uncategoraized -> Comment]を追加します。
コメントに以下の通り記入してください。
net.hantabaru1014.HeadCullingMask.TargetSlot
あとはアバターを着なおすことで指定したメッシュが目に見えなくなります。
非表示にしたいメッシュが入っているスロットを指定し、[Uncategoraized -> Comment]を追加します。
コメントに以下の通り記入してください。
net.hantabaru1014.HeadCullingMask.TargetSlot
あとはアバターを着なおすことで指定したメッシュが目に見えなくなります。
DevToolTipを使用して、「Toolshelf Anchor」の位置や回転を調整することで対応可能です。

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

また、作成時にツールシェルフの位置を調整可能です。左右対称に設定できるためここで設定しておくことをお勧めします。
帽子の方にSnapperというコンポーネントを追加する。Transform->Interaction->Snapper
頭の方にSnapAreaとSnapという名前のスロットを作り、SnapにSnapTargetというコンポーネントを追加する。Transform->Interaction->SnapTarget
位置などを調整する。
頭の方にSnapAreaとSnapという名前のスロットを作り、SnapにSnapTargetというコンポーネントを追加する。Transform->Interaction->SnapTarget
位置などを調整する。
Avatar_Import_from_Unity に移動しました。こちらをご確認ください。