メインコンテンツまでスキップ

VRoidのなで肩問題を解決する

はじめに

VRoid Studioで出力したVRM形式のアバターは、他のVRM対応アプリ(VRChatやVARKSHORTSなど)に持ち込むと不自然に過剰ななで肩になってしまいます。

これを解決するためには下記環境が必要です。

  • Unity Hub
  • Unityエディタ
  • VRChatSDKVRM
  • Converter for VRChat

以下に、VRoidのなで肩問題を解決する手順を示します。

注記

以降の説明は、Mac上で作業することを前提にしています。Windows上で作業する場合、一部の手順が異なります。

注記

以降の説明は「VRChatで3点トラッキングを利用している人」「VRMファイルをVARKSHORTSで使いたい人」向けの設定値です。VRChatでフルボディトラッキングを利用している人はBlenderを用いた別の作業が必要になります。

注記

VRChatには「Trust Rank」という概念があり、Visitor(VRChatに入会したばかりでTrust Rankの低いユーザー)はアバターをVRChatにアップロードすることができません。アバターをアップロードするには「New User」以上である必要があります。自分のTrust Rankを確認するには、「VRChatアプリでワールドにログイン→クイックメニューを開く→画面左のアバターサムネイルをクリック→画面左中段あたりにあるTrust Rankを確認」の手順でRankを確認してください。

Unity Hub の入手

Unityはゲーム開発用の統合開発プラットフォームの名称です。Unity HubはUnityのプロジェクト管理ツール、UnityエディタはUnityの作業画面です。

Unityではプロジェクト毎に使用するUnityエディタのバージョンが異なる状況を想定しているため、Unity HubとUnityエディタは別のアプリになっています。

Unityエディタを入手するために、まず先にUnity Hubを入手します。

手順
  1. Unityダウンロードページをブラウザで開く

    https://unity.com/ja/download

  2. Unity Hubのインストーラをダウンロードする(注:Mac版は目立たない場所にURLリンクがあるので注意)
  3. インストーラの指示にしたがってUnity Hubをインストールする

Unity ID の新規作成

Unityを利用するにはUnity ID (Unityアカウント)が必要です。Unity IDの新規作成はUnity Hubから行えます。

手順
  1. Unity Hubを起動
  2. 画面左上の人物アイコンをクリック
  3. ポップアップメニューより「アカウントを作成」を選択
  4. ブラウザが起動してアカウント新規作成ページが開くので、名前やメールアドレス等の必要事項を記入して「Unity IDを作成」ボタンをクリック
  5. 登録したメールアドレス宛に確認メールが届くので、メール本文中にある「Link to confirm email」をクリック
  6. ブラウザが起動してサインイン画面が開くので、IDとパスワードを入力して「Sign in」ボタンをクリック
  7. Unity Hubに切り替わり、Unity Hubにログインした状態になる

Unity Hub の日本語化

インストール直後のUnity Hubは表示言語が<English>に設定されていますが、これを<日本語>に切り替えることができます。

手順
  1. Unity Hubを起動
  2. サインイン
  3. 画面左上の歯車アイコンをクリック
  4. 画面左の設定項目一覧より「Appearance」をクリック
  5. 「ライセンスを加える」ボタンをクリック
  6. <Language=日本語>に設定

ライセンスの入手

Unityを利用するにはUnity Technologies社とのライセンス契約が必要です。VRoidのなで肩問題を解決するだけであれば無料のPersonalライセンスで充分です。

手順
  1. Unity Hubを起動
  2. サインイン
  3. 画面左上の歯車アイコンをクリック
  4. 画面左の設定項目一覧より「ライセンス」をクリック
  5. 「ライセンスを加える」ボタンをクリック
  6. 「無料のPersonalライセンスを取得」をクリック
  7. 利用規約を読み、「同意してPersonalのライセンスを取得」をクリック

Unityエディタの入手

VRoidなで肩問題を解決するには「VRChatSDK」が必要ですが、このSDKはUnity最新版には対応していません。VRChatSDKと対応する旧版のUnityエディタを入手する必要があります。

手順
  1. あらかじめVRChat開発者向けウェブサイトで、VRChatSDKと対応する旧版Unityエディタのバージョンを確認しておく(2023年9月時点では「Unity 2019.4.31f1」)

    https://creators.vrchat.com/sdk/current-unity-version/

  2. Unity Hubを起動
  3. サインイン
  4. 画面左の項目一覧より「インストール」をクリック
  5. 画面右上の「エディターをインストール」をクリック
  6. 「アーカイブ」タブをクリック
  7. 説明文の中のリンク付文字列「ダウンロードアーカイブ」をクリック
  8. ブラウザが起動してダウンロードアーカイブページが開くので、VRChatSDKと対応する旧版のUnityエディタを探す(2023年9月時点では「Unity 2019.4.31f1」)
  9. 該当バージョンの「Unity Hub」ボタンをクリック
  10. 該当バージョンの内容物一覧が表示されるので、そのままインストール

VRChatSDK の入手

VRChatSDKは、Unityのカスタムパッケージ(機能拡張プラグインのようなもの)として配布されていますが、Unity Hubから直接ダウンロードはできません。以下の手順で入手してください。

手順
  1. VRChat IDを作成(Steam IDではない)

    https://vrchat.com/

  2. VRChatウェブサイトにログイン
  3. ホーム画面左のボタン一覧より「Download」ボタンをクリック(注:MacユーザーはCreator Companionを利用できない。ページ下方のManual SDK Installationまで読み進む)
  4. 「AvatarSDK」および「WorldsSDK」をダウンロードして保存

VRM Converter for VRChat の入手

VRM Converter for VRChatは、Unityのカスタムパッケージ(機能拡張プラグインのようなもの)として配布されていますが、Unity Hubから直接ダウンロードはできません。以下の手順で入手してください。

手順
  1. pixiv IDを作成

    https://www.pixiv.net/

  2. pixiv IDを使ってBoothウェブサイトにログイン

    https://booth.pm/ja

  3. VRM Converter for VRChat配布ページを開く

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

  4. 「無料ダウンロード」ボタンをクリック(注:有料版は作者への支援という位置付けであり内容は無料版と同じ)
  5. VRM Converter for VRChatをダウンロードして保存
  6. 保存したVRM Converter for VRChatはzip形式の圧縮ファイルになっているので、これを解凍

プロジェクトの新規作成

VRChatSDKおよびVRM Converter for VRChatは、アプリ全体ではなくプロジェクトひとつひとつに対して追加インストールされます。したがって、VRChatSDKおよびVRM Converter for VRChatを利用するにはまずプロジェクトを新規作成する必要があります。

手順
  1. Unity Hubを起動
  2. サインイン
  3. 画面左の項目一覧より「プロジェクト」をクリック
  4. 画面右上の「New Project」をクリック
  5. テンプレート一覧の中の「3D」を選択
  6. 必要であれば、プロジェクト名称をわかりやすい名前に変更し、保存場所をわかりやすい場所に変更する
  7. 画面右下の「プロジェクトを作成」ボタンをクリック

VRChatSDK と VRM Converter for VRChat の追加インストール

VRChatSDKおよびVRM Converter for VRChatは、アプリ全体ではなくプロジェクトひとつひとつに対して追加インストールされます。

手順
  1. Unity Hubを起動
  2. サインイン
  3. 画面左の項目一覧より「プロジェクト」をクリック
  4. プロジェクト一覧からプロジェクトをひとつ選んでクリック(するとUnityエディタが起動してプロジェクトを開く)
  5. 画面下のProjectタブをクリック
  6. フォルダツリー表示の中にあるAssetsフォルダをクリック
  7. メニューバーより「Assets>Import Package>Custom Package…」を選択
  8. ファイル選択ダイアログでAvatarSDK(拡張子.unitypackage)を指定して「Open」ボタンをクリック
  9. パッケージ内容一覧が表示されるので、ダイアログ下端のImportをクリック(すると、しばらく待たされたのち、AvatarSDKが追加インストールされる)
  10. 同様にWorldsSDKを追加インストール
  11. 同様にVRM Converter for VRChatを追加インストール

.prefab ファイルの作成

VRM Converter for VRChatを用いた修正作業では、VRoid Studioで生成したVRMファイルを直接編集するのではなく、プレハブファイル(テンプレートのこと、拡張子.prefab)に変換してそれを編集します。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. 画面下のProjectタブをクリック
  3. フォルダツリー表示の中にあるAssetsフォルダをクリック
  4. メニューバーより「Assets>Create>Folder」を選択(するとAssetフォルダの中に新規フォルダが作られる)
  5. フォルダ名称をわかりやすい名前に変更
  6. 手順3で作成したフォルダをダブルクリックして開く
  7. Finderに戻る
  8. VRoid Studioで出力したVRMを、FinderからUnity画面内の手順3で作成したフォルダの中へとドラッグアンドドロップ(すると、しばらく待たされたのち、手順3で作成したフォルダ内にプレハブファイルおよびいくつかのフォルダが生成される)
  9. Unityに戻る

なで肩の修正

VRM Converter for VRChatを用いて、VRoidのなで肩問題を解決できます。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. Projectタブ内フォルダツリー表示で、前手順で作成したプレハブファイル(拡張子.prefab)のあるフォルダを開く
  3. .prefabファイルをクリック(するとSceneタブ内の3Dプレビュー画面にアバターが表示される)
  4. メニューバーより「VRM0>Duplicate and Convert for VRChat」を選択(するとVRM Converter for VRChatの設定ウインドウが開く)
  5. <肩の高さ=0.02>と設定
  6. <揺れもの=Convert VRM Spring Bones Only>と設定
  7. ウインドウ下端の「複製して変換」ボタンクリック
  8. 保存ダイアログが表示されるので、保存先は初期値のまま変更せずに「Save」ボタンクリック(するとプレハブファイルのあったフォルダに、ファイル名末尾に(VRChat)と文字列の追加された新たなプレハブファイルが生成される)
  9. Sceneタブ内の3Dプレビュー画面にアバターが表示されたことを確認
注記

設定項目<揺れもの>はなで肩問題とは関係ありませんが、物理的に正しい挙動を3Dモデルにさせるための設定を一部省略し、VRChat上でのアバターの操作を軽快にするための手順です。

なで肩以外の修正

VRoid Studioで出力したVRM形式のアバターをVRChatで使いたい場合、なで肩問題の解決以外にもいくつかの修正作業が必要です。

View Position

View Positionとは視点の位置のことです。View Positionから見える映像がVRゴーグルに投影されます。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. Projectタブ内フォルダツリー表示で、前手順で作成したフォルダを開く
  3. 前手順で複製変換で得た方のプレハブファイル(拡張子.prefab)をクリック
  4. 画面右のInspectorタブをクリック
  5. Inspectorタブ内の設定項目一覧より、設定項目「VRC Avatar Descriptor (Script)>View>View Position」をクリックして開く
  6. View PositionのXYZ座標位置入力欄に、仮の数値としてX=0, Y=1.5, Z=0.2と入力する
  7. View Positionの「Edit」ボタンをクリック
  8. 画面左のHierarchyタブ内のアイテム一覧の中にある、前手順で複製変換で得た方のプレハブファイルと同じ名前のアイテムをクリック(するとアバターの顔の前あたりにView Positionマーカーという灰色の小さな球体が追加表示される)
  9. View Positionマーカーの位置を微調整し、顔の中央の目の高さの位置に、マーカーを顔に貼り付けるような感じで配置
    1. Sceneタブ内の3Dプレビューの右上端にある小さな白い四角形をクリック(するとアイソメトリックモードという奥行き感のない映像に切り替わる)
    2. 小さな白い四角形の上下左右にある小さな三角形(視点切替ボタン)をクリックし、3Dプレビューの映像が切り替わることを確認
    3. View Positionマーカーから生えている矢印を掴んでドラッグすることで位置を調整できることを確認
    4. 3Dプレビューの映像を切り替えつつ矢印を掴んでドラッグする作業を繰り返し、位置を微調整
    5. 微調整が完了したらView Positionの「Return」ボタンをクリック

Eye LookのRotation State

Rotation Stateとは眼球の可動範囲のことです。Rotation State初期値は極端に可動範囲が大きくなっているはずです。これを自然な範囲に抑制します。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. Projectタブ内フォルダツリー表示で、前手順で作成したフォルダを開く
  3. 前手順で複製変換で得た方のプレハブファイル(拡張子.prefab)をクリック
  4. 画面右のInspectorタブをクリック
  5. Inspectorタブ内の設定項目一覧より、設定項目「VRC Avatar Descriptor (Script)>Eye Look>Rotation State」をクリックして開く
  6. Looking Up欄のpreviewボタンをクリックして眼球可動範囲の現状を確認し、Returnボタンをクリックして元に戻す
  7. Xに仮の値として「-5」を入力し再度previewボタンをクリックして、不自然さの有無を確認
  8. 値調整とpreviewを繰り返し、不自然さのない値を見つける
  9. Looking Down欄で同様の作業を行い、不自然さのない値を見つける
  10. Looking Left欄で同様の作業を行い、不自然さのない値を見つける
  11. Looking right欄で同様の作業を行い、不自然さのない値を見つける

Bounds

Boundsとはアバターの周囲の空間に設定された描画範囲のことです。たとえばアバターに大きな帽子を被せて帽子の先端がBoundsからはみ出た場合、Boundsからはみ出た部分は見えなくなります。これを防ぐために、Boundsは人体サイズよりも大きめに設定します。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. 画面左のHierarchyタブ内のアイテム一覧の中にある、前手順で複製変換で得た方のプレハブファイルと同じ名前のアイテムをクリックし、さらにその下位にあるアイテム「Body」をクリック
  3. 画面右のInspectorタブ内の設定項目一覧より、設定項目「Skinned Mesh Renderer>Bounds」をクリック(するとアバターの周囲に白い枠線が現れる)
  4. Center欄の値をXYZすべて0にする
  5. Extent欄の値をXYZすべて1.2にする
  6. アバターの周囲の白い枠線を確認し、この枠線をはみ出るような衣装を着る予定がある場合は、Extent欄の値をさらに大きくする

アバターをVRChatにアップロードする

ここまでの作業で、VRoidなで肩問題は解決され、その他の要修正箇所もVRChat向けに修正されました。以下に、アバターをVRChatにアップロードする手順を示します。

注記

VRChatには「Trust Rank」という概念があり、Visitor(VRChatに入会したばかりでTrust Rankの低いユーザー)はアバターをVRChatにアップロードすることができません。アバターをアップロードするには「New User」以上である必要があります。自分のTrust Rankを確認するには、「VRChatアプリでワールドにログイン→クイックメニューを開く→Profileタブをクリック→画面左中段あたりにあるTrust Rankを確認」の手順で確認してください。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. メニューバーより「VRChatSDK>Show Control Panel」を選択(するとVRChatSDKの設定ウインドウが開く)
  3. VRChatのIDとパスワードを入力して「Sign In」ボタンをクリック
  4. numeric codeを問われた場合は、電子メールで送られてくる6桁の数字を入力して「Verify」ボタンをクリック
  5. 「Builder」タブをクリック
  6. name(アバターの名前)とdescription(アバターの説明)を入力
  7. 「Capture From Scene」ボタンをクリックして、3Dプレビューの映像をサムネイルとして設定
  8. <Visibility=Private>に設定(他人がアバターを複製することを禁止する)
  9. Validations欄に赤い八角形の警告マークのないことを確認(あるとアップロードできない)
  10. Validations欄に「AUTO FIX(自動的に不具合を修正)」ボタンがある場合はひとつひとつクリックして修正する
  11. 「Build & Publish」ボタンをクリック
  12. 確認画面が表示されるので、ポリシー同意にチェックを入れて「Upload」ボタンをクリック

アバターをVRMファイルとして出力する

VARKSHORTSでアバターを使いたい場合は、修正されたアバターを改めてVRMファイルとして出力する必要があります。

手順
  1. Unity Hubを起動してプロジェクトを開く
  2. Projectタブ内フォルダツリー表示で、前手順で作成したフォルダを開く
  3. 前手順で複製変換で得た方のプレハブファイル(拡張子.prefab)をクリック
  4. メニューバーより「VRM0>Export to VRM 0.x」を選択(するとVRMExporterの設定ウインドウが開く)
  5. Selectボタンをクリック(するとAsset一覧画面が開く)
  6. Asset一覧の中からThumbnail.pngを選ぶ(これは変換前のVRMファイルが持っていたAsset)
  7. Title, Version, Authorを入力
  8. 必要ならその他の設定も変更する
  9. 「Export」ボタンをクリック(すると保存ダイアログが開く)
  10. 保存先を指定して「Save」をクリック

おわりに

正直なところ、ここまで説明した作業を実行するだけの忍耐力のあるVRoidユーザー/VRChatユーザーが世の中にどれだけいるのか疑問です。VRMは3Dアバターにおける事実上の標準ファイル形式なのですから、なで肩問題はVRoid Studioで解決すべき問題に思います。

以上