編集日時:2022年09月22日(木) 00:25:06履歴
アバターに関して、ポリゴン数・ボーン数・マテリアル数など制限は特にありません。
ボーンやブレンドシェイプのあるアバターをセットアップする場合、いくつか構成に注意点があります。
それら情報を確認したい場合は下の折りたたみを開け確認してください。
公式Wiki Humanoid Rig Requirements for IK
Oculusリップシンクの口形素名に準じているブレンドシェイプは自動でリップシンクに割り当てられます。
・まばたきには"blink", "wink", "eye close" + "left" / "right"で判定されます。
その他の注意
・コンストレイントなど補助ボーンを使用したモデルについては、自動でインポートさせることはできません。
(Blenderでボーンを編集するか、Logixやコンポーネントを使用して自分で動作を設定すればどんな動きでも設定可能です)
・Unityで大幅な改変(主に「服の着せ替え」など、二つ以上のFBXからメッシュを取り出した場合)を行った後、
FBX ExporterやUniVRMを用いてFBX/VRM/GLTFとして出力したモデルについては、まずNeosVRにインポートする前に一度Unityで再確認してみてください。
その時点でメッシュの位置やシェイプキーが壊れていることがあります。Unityで確認し、壊れている場合はそもそもNeosVRに持ち込んでも壊れたままです。
・頭が極端に大きかったり、腕が短いヒューマノイドモデルは操作が困難になる可能性があります。
ボーンやブレンドシェイプのあるアバターをセットアップする場合、いくつか構成に注意点があります。
それら情報を確認したい場合は下の折りたたみを開け確認してください。
公式Wiki Humanoid Rig Requirements for IK
Oculusリップシンクの口形素名に準じているブレンドシェイプは自動でリップシンクに割り当てられます。
・まばたきには"blink", "wink", "eye close" + "left" / "right"で判定されます。
その他の注意
・コンストレイントなど補助ボーンを使用したモデルについては、自動でインポートさせることはできません。
(Blenderでボーンを編集するか、Logixやコンポーネントを使用して自分で動作を設定すればどんな動きでも設定可能です)
・Unityで大幅な改変(主に「服の着せ替え」など、二つ以上のFBXからメッシュを取り出した場合)を行った後、
FBX ExporterやUniVRMを用いてFBX/VRM/GLTFとして出力したモデルについては、まずNeosVRにインポートする前に一度Unityで再確認してみてください。
その時点でメッシュの位置やシェイプキーが壊れていることがあります。Unityで確認し、壊れている場合はそもそもNeosVRに持ち込んでも壊れたままです。
・頭が極端に大きかったり、腕が短いヒューマノイドモデルは操作が困難になる可能性があります。
単純なボーンのメッシュモデルや、写真などもアバターにできます。
IKのあるアバターよりもIKの計算を行わない分軽量です。
アバタークリエイターを使用します。
頭の位置に頭として設定してほしいものを、両手にはそれぞれ手として設定してほしいものをおいた上で、そのまま作成すれば完成となります。
もし手に何も設定しない場合はデフォルトの手が補完されます。
この設定方法を利用したアバター例を下にいくつか紹介します。参考にしてください。
IKのあるアバターよりもIKの計算を行わない分軽量です。
アバタークリエイターを使用します。
頭の位置に頭として設定してほしいものを、両手にはそれぞれ手として設定してほしいものをおいた上で、そのまま作成すれば完成となります。
もし手に何も設定しない場合はデフォルトの手が補完されます。
この設定方法を利用したアバター例を下にいくつか紹介します。参考にしてください。
まずはBrushTipで適当に絵を描く。
一筆書き、もしくは素早く書いた線は一塊として扱われます。
その状態でアバタークリエイターを起動して、それぞれのメッシュの位置に、HMDや手のモデルを置いてセットアップすればアバターの完成です。
この手法で書いてくれるイベントも開催しています。詳しくは公開イベントページにて。
一筆書き、もしくは素早く書いた線は一塊として扱われます。
その状態でアバタークリエイターを起動して、それぞれのメッシュの位置に、HMDや手のモデルを置いてセットアップすればアバターの完成です。
この手法で書いてくれるイベントも開催しています。詳しくは公開イベントページにて。
JP Avatarsというフォルダには作者から許可の撮ったアバターが使用できる形式で保管されています。
こちらからアバターを出してもらえれば、利用規約同意後クリックのみでアバターを着用することが出来ます。面倒な操作はありません。
詳しくはこちら
こちらからアバターを出してもらえれば、利用規約同意後クリックのみでアバターを着用することが出来ます。面倒な操作はありません。
詳しくはこちら
アバターによってはBoothからダウンロードしたファイルの中にNeosで使用しやすくなるよう設定済みのデータが同梱されていることもあります。
https://booth.pm/ja/items/3741802
https://booth.pm/ja/items/2982024
https://booth.pm/ja/items/3853503
これらを確認して、なお自分のリグ付きアバターをセットアップしたい場合は下を参考に作成を進めてください。通常はNeosに慣れた人同伴での作成を推奨しています。
https://booth.pm/ja/items/3741802
https://booth.pm/ja/items/2982024
https://booth.pm/ja/items/3853503
これらを確認して、なお自分のリグ付きアバターをセットアップしたい場合は下を参考に作成を進めてください。通常はNeosに慣れた人同伴での作成を推奨しています。
.fbx、.glb、.blendファイルを読み込めます。
ダッシュメニューのファイルブラウザからアバターのモデルを選択してNeosVRにインポートします。
(参考、インポートする)
出てきた画面(モデルインポーター)で、3Dモデル > レギュラー/アバター > ヒューマノイドの身長に自動設定 > 高度な設定 を順番に選択します。
高度な設定の画面で、マテリアルを"XiexeToon"(NeosVRで使用できるトゥーンシェーダー)に設定します。
下にスクロールして最下段の"アセットをオブジェクト内に入る"にチェックを入れて、"インポート実行"を押してください。
すると、読み込みが行われます。
正常に読み込みが完了すると、アバターの3Dモデルが出現します。
(この時点で、テクスチャが読み込まれず真っ白でも、後から設定できます。下記)
ダッシュメニューのファイルブラウザからアバターのモデルを選択してNeosVRにインポートします。
(参考、インポートする)
出てきた画面(モデルインポーター)で、3Dモデル > レギュラー/アバター > ヒューマノイドの身長に自動設定 > 高度な設定 を順番に選択します。
高度な設定の画面で、マテリアルを"XiexeToon"(NeosVRで使用できるトゥーンシェーダー)に設定します。
下にスクロールして最下段の"アセットをオブジェクト内に入る"にチェックを入れて、"インポート実行"を押してください。
すると、読み込みが行われます。
正常に読み込みが完了すると、アバターの3Dモデルが出現します。
(この時点で、テクスチャが読み込まれず真っ白でも、後から設定できます。下記)
HMDをグラブしてアバターの頭にだいたい合わせます。
アバタークリエイターのパネルの"頭の前方向を揃える""頭の上方向を揃える""頭の右方向を揃える""頭の中心を揃える""手の位置をあわせる"を順番にクリックしましょう。
すると、いい感じの位置に合わせてくれます。手の向きが違う場合は自分で掴んで合わせてください。
(手首の位置を合わせて、指先がアバターから少し出ているくらいがベスト)
この時、アバターを間違って動かしてしまった時はコンテキストメニューから"戻す"を押して、位置を戻してください。
(そのままだと、アバターがおかしくなることがあります。)
"プロテクトアバター"のチェックが入っていることを確認して(販売アバターなど、他の人が着れないようにするためにプロテクトを設定する。プロテクトのチェックを入れれない場合は、NeosVRにログインできていないことがある。)
"作成"を押すとアバター化できます。(作成を押すのはアバターを利用する本人。作成ボタンを押したユーザーのアバターとしてプロテクトが設定される。)
アバター化した後は、アバターに対してレーザーを当て、トリガーすることでアバターを着用できます。
追加の設定をする場合にも、この地点でインベントリに保存しておくことをお勧めします。
モデルを読み込んだ時と同様にして、テクスチャ(画像)をNeosVRへインポートします。
(参考、インポートする)
画像インポーターでは"イメージ/テクスチャ"を選択してください。
画像が読み込まれたら、インベントリの"Essential Tools"からDevToolTipを取りだします。
装備して、アバターへレーザーを当てて、セカンダリーで選択します。(ギズモが表示される)
DevToolTipを装備している手でコンテキストメニューを開き、"インスペクターを開く"を選択します。
インスペクターが開くので、左上のを押すと、アバターのルート階層に移動します。
スロットの名前左のを押すと、スロットの下の階層が見えるので、順番に開いて、メッシュを見つける。
大抵は、〜.FBX>CenteredRoot>RootNode の下にあるので、メッシュの名前をダブルトリガーで選択する。
メッシュのスロットには"SkinnedMeshRenderer"コンポーネントがある。ここに、マテリアルのリストがある。
Materials(list):の各名前の左側のを押すと、マテリアルインスペクターが開く。
マテリアルインスペクターが開く、ここから各マテリアルの設定を行う。
メッシュは複数ある場合があり、そこからそれぞれマテリアルの編集が必要になる事がある。
(参考、インポートする)
画像インポーターでは"イメージ/テクスチャ"を選択してください。
画像が読み込まれたら、インベントリの"Essential Tools"からDevToolTipを取りだします。
装備して、アバターへレーザーを当てて、セカンダリーで選択します。(ギズモが表示される)
DevToolTipを装備している手でコンテキストメニューを開き、"インスペクターを開く"を選択します。
インスペクターが開くので、左上のを押すと、アバターのルート階層に移動します。
スロットの名前左のを押すと、スロットの下の階層が見えるので、順番に開いて、メッシュを見つける。
大抵は、〜.FBX>CenteredRoot>RootNode の下にあるので、メッシュの名前をダブルトリガーで選択する。
メッシュのスロットには"SkinnedMeshRenderer"コンポーネントがある。ここに、マテリアルのリストがある。
Materials(list):の各名前の左側のを押すと、マテリアルインスペクターが開く。
マテリアルインスペクターが開く、ここから各マテリアルの設定を行う。
メッシュは複数ある場合があり、そこからそれぞれマテリアルの編集が必要になる事がある。
まず、そのマテリアルがアバターのどこの部分に対応しているか確認する。
マテリアルインスペクターの"MainTexture:"の下の"Color:"の一番右にある四角い枠を押すと、カラーインジゲーターが出てくる。
カラーインジゲーターを操作して色を変えると、どの場所のマテリアルか分かる。
マテリアルの色をもとに戻す(白色に)。
対応するテクスチャ(画像)をグラブし、もう片方の手でレーザーをマテリアルインスペクターの"MainTexture:"の白い枠に当ててトリガーを押すと、テクスチャが設定される。
同様の設定をそれぞれのマテリアルに設定する。
終わったら忘れずに保存しよう。
その他、詳しいマテリアルの設定については、マテリアルの調整例へ
マテリアルインスペクターの"MainTexture:"の下の"Color:"の一番右にある四角い枠を押すと、カラーインジゲーターが出てくる。
カラーインジゲーターを操作して色を変えると、どの場所のマテリアルか分かる。
マテリアルの色をもとに戻す(白色に)。
対応するテクスチャ(画像)をグラブし、もう片方の手でレーザーをマテリアルインスペクターの"MainTexture:"の白い枠に当ててトリガーを押すと、テクスチャが設定される。
同様の設定をそれぞれのマテリアルに設定する。
終わったら忘れずに保存しよう。
その他、詳しいマテリアルの設定については、マテリアルの調整例へ
表情のブレンドシェイプなどで透過のマテリアルを使用している場合があり、特別な設定が必要になることがある。
ブレンドシェイプの設定されたメッシュをインスペクターで選択して、下にスクロールすると、ブレンドシェイプのリストが見つかる。
このアバターの場合、"cheek_on"の数値を変えると、表示がおかしくなるため、透過の設定が必要だとわかる。
そこで、対応するマテリアルのマテリアルインスペクターを開き、"BlendMode:"を"Alpha"に、"ZWrite:"を"On"に設定する。
(CutOffに設定して、AlphaClipの値を調整した方が良いときもある)
その他、マテリアルの設定についてはこちら
ブレンドシェイプの設定されたメッシュをインスペクターで選択して、下にスクロールすると、ブレンドシェイプのリストが見つかる。
このアバターの場合、"cheek_on"の数値を変えると、表示がおかしくなるため、透過の設定が必要だとわかる。
そこで、対応するマテリアルのマテリアルインスペクターを開き、"BlendMode:"を"Alpha"に、"ZWrite:"を"On"に設定する。
(CutOffに設定して、AlphaClipの値を調整した方が良いときもある)
その他、マテリアルの設定についてはこちら
ボーン、ブレンドシェイプ名の注意点などを確認しよう。
Unityで改変したモデルや、VRMのモデルはFBX Exporterで出力すると、メッシュの位置やシェイプキーがおかしくなる。
下記でUnityからモデルをNeosVRへ持っていく方法を解説している。
下記でUnityからモデルをNeosVRへ持っていく方法を解説している。
アバターによっては目の動きが大きい場合がある、その時は"Head"ボーンの下に、"Eye Manager"というスロットがある、
この中に"EyeRotationDriver"コンポーネントがある、その"MaxSwing"の値を小さくすればよい。
この中に"EyeRotationDriver"コンポーネントがある、その"MaxSwing"の値を小さくすればよい。
ブレンドシェイプの名前が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を割り当て、それぞれ接続する必要がある。
SimpleAvatarProtectionコンポーネントをアバターに設定します。
下記の図のようにHead Proxyの下に、NearClip(名前は何でも良い)という子スロットを作り、そこにAvatarRendarSettingsというコンポーネントをつける。
位置はUsers→Common Avatar System→AvatarRendarSettingsです。
そして、"NearClip:"にチェックを入れて0.075を入力します。設定が終わったらセーブして、着替え直す。そうすると設定が反映される。
これで視点に近い位置のメッシュが描画されなくなり、髪の毛の邪魔がなくなります。
位置はUsers→Common Avatar System→AvatarRendarSettingsです。
そして、"NearClip:"にチェックを入れて0.075を入力します。設定が終わったらセーブして、着替え直す。そうすると設定が反映される。
これで視点に近い位置のメッシュが描画されなくなり、髪の毛の邪魔がなくなります。
帽子の方にSnapperというコンポーネントを追加する。Transform->Interaction->Snapper
頭の方にSnapAreaとSnapという名前のスロットを作り、SnapにSnapTargetというコンポーネントを追加する。Transform->Interaction->SnapTarget
位置などを調整する。
頭の方にSnapAreaとSnapという名前のスロットを作り、SnapにSnapTargetというコンポーネントを追加する。Transform->Interaction->SnapTarget
位置などを調整する。
UnityからモデルをVRMで出力し、BlenderでGLTF形式(もしくはFBX形式)にしてインポートする方法です。
(検証環境: Unity 2019.4.10f1 / Blender 2.83 LTS)
(NeosJapan discord 豆知識・テク かずさん2021/2/7)
(検証環境: Unity 2019.4.10f1 / Blender 2.83 LTS)
(NeosJapan discord 豆知識・テク かずさん2021/2/7)