※執筆途中 VRChat 向けアバターを Resonite にインポートする方法

Resonite のアバターセットアップのめんどくさいトラブルシューティングをある程度解消してくれるツールが出てきたので、それの使い方と併せてアバターセットアップの一連の流れを解説します。

github.com

この記事の対象読者は次のような人を想定しています。

  • VRChat で Unity 使ってアバターアップロードしたことあるけど、Resonite はわからない人
  • Resonite Package 形式に対応していない VRChat 向けアバターや、Unity で改変したアバターを使いたい人
  • 1人でアバターセットアップをできるようになりたい人

▼ この記事で扱うこと

  • Resonite Import Helper の使い方
  • Resonite 内での最低限の設定
  • Resonite 内での見た目が明らかにおかしい設定の修正方法
  • 各種トラブルシューティング

この記事で扱わないこと

  • Unity の使い方
  • VRChat へのアバターアップロード方法
  • Resonite でのアカウント登録方法
  • Unity を使わずに Resonite へアバターをインポートする方法
  • Resonite Package の作り方、使い方
  • 衣装の着せ替えやアクセサリーの付け外しメニューの作り方
  • XiexeToon のいい感じの設定方法
  • DynamicBone の設定方法
  • ハンドサインやコンテキストメニューなどでの表情変更の設定方法
  • protoflux の書き方、解読方法

そもそも Resonite でできないこと

  • lilToon やカスタムシェーダーをそのまま使う
    • カスタムシェーダーは使えないので、Resonite で使えるマテリアル(シェーダー)を使ってそれっぽく再現するか、諦めてください
    • lilToon の機能で、下記のものはそのままは使えないことが分かっています。再現する人はがんばってください
      • メインカラー 2nd, 3rd
      • MatCap の乗算
      • MatCapMask
      • デカール
  • Unity の animator による表情制御や服の着せ替えなどをそのまま持ち込む
    • 2024/9/9時点ではできないので、Resonite にモデルをインポート後にギミックを再現するか、諦めてください

この記事の「2. Resoniteに3Dモデルをインポートし、アバター化する」以降の操作は、Resonite 上で複数人で行うこともできます。1人だと手に負えないと感じた場合、Resonite 民の知り合いに頼ってみたりするといいでしょう。もし、Resonite に知り合いがいないけど誰かを頼りたい場合、Resonite Japan という日本人 Resonite ユーザーの Discord サーバにて、「アバター設定依頼」というフォーラムがあります。そちらを頼ってみてください。

Resonite Japan への招待リンク: https://discord.gg/resonite-japan

Resonite Japan のアバター設定依頼フォーラム


1. Unity のプロジェクトから 3D モデルを生成する。

まずは VRChat 向けの Unity プロジェクトを用意します。
バージョンは Unity 2022 のやつにしてください。2019 は非対応です。
Modular AvatarAvatar Optimizer などを使って、Unity 上でアバター改変していても構いません。
その他のさまざまな改変方法でも多分大丈夫なはずです。

なんかいろいろ改変してそうなVRCのアバタープロジェクト

まずは必要なツールを導入します。
今回導入するのは GitUniGLTFResonite Import Helper です。

Git は次のサイトをクリックして [Download] ボタンを押して、インストーラーを起動してください。たぶんひたすら [Next] とか押してると終わると思います。
既にインストール済みの人は大丈夫です。

gitforwindows.org

Git のインストーラーのダウンロード

Git のインストールが済んだ人は、Unity を起動して UniGLTF と Resonite Import Helper を Unity に追加します。
Unity のメニューから、 Window > Package Manager を選択します。

Window > Package Manager

Package Manager のウインドウの左上にある [+▼] ボタンを押すとメニューが出てくるので、[Add Package from git URL...] を選択します。

[+▼] > Add Package from git URL...

すると、入力欄が生えるので、次の URL をそれぞれ入力して [Add] を押します。

git の URL を入力して Add

UniGLTF と Resonite Import Helper が追加されていたら準備完了です。

Package Manager に追加されてたら OK

ツールを導入できたら、メニューから Tools > Resonite Import Helper を選択します。

Tools > Resonite Import Helper

出てきたウィンドウの Target avatar root に、ヒエラルキー上のアバタードラッグ&ドロップしてセットします。

Target avatar root にヒエラルキーからアバターをセット

その後、 [Start] ボタンを押してしばらく待ちます。
Processed avatar の部分にアバターがセットされていたら成功です。
[Open in file system] ボタンを押すとエクスプローラーで 3D モデルの場所が開けるので、開いておきましょう。

Processed avatarアバターがセットされていたら成功。Open in file system でフォルダを開いておくとよい。

これで 3D モデルの生成は終了です。

Tips: Unity 上で変換がうまくいってるか確認する方法

RIH のウィンドウに生成された Processed avatar をクリックすると、Unity 上の 3D モデルアセットに飛べます。

Processed avatar をクリックすると 3D モデルに飛べる

その 3D モデルをシーンに追加して、見た目に破綻が無いか確認できます。
発色が悪いのはシェーダーが変わったからなので正常動作です。Resonite にシェーダーは持ち込めないので気にしないでください。
このとき、非表示にしてたはずのメッシュが表示されていたり、ブレンドシェイプの値が0になっていたりするのは(おそらく)仕様です。
メッシュの表示非表示やブレンドシェイプの値は Resonite 側で別途設定が必要です。

3D モデルをシーン上に出して確認


トラブルシューティング: 色やアルファが消えた

左が Unity 上で色改変したもので、右が変換後の 3D モデル

これは lilToon でのカラー指定や色調補正で色改変をしている場合やアルファマスクを使用している場合に発生します。
この場合、RIH のウィンドウの [▶ Experimental Settings] を開いて、[Bake lilToon's configuration into Texture] にチェックを入れてから変換すると解決します。
なんか RIH v0.1.6 ではうまく動かなかったので、lilToon のマテリアルを探して[テクスチャに焼き込み]ボタンを押していってください。 このとき、それぞれのマテリアルでテクスチャのメインカラーやアルファマスクがベイクされてしまいます*1。元のデータを保持しておきたい場合はなんかいい感じにしてください。

なお、メインカラー 2nd に設定されてるやつはどうしようもないです。元テクスチャを編集していい感じにしてください。

lilToon の機能でテクスチャに焼き込み


トラブルシューティング: 半透明テクスチャが透明じゃない

顔の頬染めが変

RIH v0.1.6 時点で、半透明テクスチャの透過情報が失われて変換される不具合が確認されています*2
そのうち修正されると思いますが、現状は Resonite 側で画像を再割り当てすることで回避可能です。
やり方は後述します。


トラブルシューティング: メッシュが壊れた
ドロワーズを履かせたらなんか壊れた

Avatar Optimizer などでベイクされたメッシュがうまく変換できない場合があるみたいです。これは UniGLTF のバグだと思うので、そのうち発生しなくなるかもしれません。(有識者の言)
とりあえずは壊れたメッシュをベイクしてそうな箇所のベイクをやめると壊れなくなると思います。Avatar Optimizer の場合は AAO Trace And Optimize の「スキンメッシュレンダラーを統合する」のチェックを外したり、AAO Merge Skinned Mesh コンポーネントを消したりするといいはず。

AAOの「スキンメッシュレンダラーを統合する」をやめる


トラブルシューティング: 非対応衣装がおかしくなる
わかりづらいけど、Chestボーンの大きさを変えて無理やり着せた部分がおかしくなっている

Modular Avatar を使って、非対応衣装などのスケールを弄って無理やり着せた箇所がおかしくなる場合があるみたいです。これは UniGLTF のバグだと思いますけどよくわかりません。
たぶん Modular Avatar を使うのをやめてキセテネとかに回帰したら回避できると思いますが、今更キセテネを使いたくないですよね……。誰か回避策を思いついたら教えてください。


トラブルシューティング: なんかデカくなった
ちっちゃくしているアバターのモデルが大きくなる

Unity のシーン上で、アバターのルートスケールを変更してると起きるっぽい。RIH v0.1.10 では仕様と思われる。
Resonite へのインポート自体には影響は無い。インポート時のスケール変更方法は後述。


2. Resoniteに3Dモデルをインポートし、アバター化する

Resonite Import Helper で生成した .gltf ファイルを Resonite にインポートして、アバタークリエイターを使ってアバターにします。

まずは Resonite を起動して、アカウント登録してログインします。
やり方はこちらなどを確認してください。
ログインできていないと問題がある*3ので、以後の手順は必ずログインした状態で行ってください。

note.com

Resonite を起動してログインしたら、ゲーム内でアバターインポート作業を行います。
この作業を行うのはどこでもいいといえばどこでもいいんですが、権限周りをいい感じに設定済みの「アバターインポートするだけのワールド」というワールドを用意しているので、特にこだわりがなければこのワールドで行ってください。

uni-pocket.com

ワールドは次の手順で開きます。
まずダッシュメニューを開きます。Quest を使っている人は A/X ボタンで、デスクトップモードの人は Esc キーで出てくるメニューです。

ダッシュメニューの下部にあるタブのうち、「ワールド」を選択します。
「全てのワールド」を選んでから上部の検索欄に "avatar import" などと入力するとアバターインポートするだけのワールドが表示されるはずです。

ワールド > 全てのワールド > avatar import で検索

アバターインポートするだけのワールドを選択すると、ポップアップメニューが表示されるので、「セッション開始」を選びます。

セッション開始く

しばらく待つと、アバターインポートするだけのワールドが開きます。

アバターインポートするだけのワールド。デカいミラーとかアバター設定時に使えるツールとかが置いてある。

Tips: プライベートセッションで作業をしたい

そのままワールドを開くと、だいたいの人がパブリックでワールドを開くことになります*4。 プライベートで作業をしたい場合は、ワールドを開いた後にアクセスレベルをプライベートにしましょう。

ダッシュメニューを開いて、下部の「セッション」タブを選択し、上部のタブから「設定」を選んで、アクセスレベルの「プライベート(招待のみ)」の右にあるチェックを入れます。
これでプライベートワールドになりました。招待のみとあるように、フレンドへ招待を送るとそのフレンドは入ってこれます。

セッション > 設定 > プライベート(招待のみ)


それではアバターをインポートしていきますが、Resonite がデスクトップ側で全画面モードで表示されているとこの後の作業がめんどくさいので、全画面モードをやめましょう。

ダッシュメニューを開き、下部の「設定」タブを選択し、左の「グラフィック」カテゴリを選びます。「解像度」の箇所に「フルスクリーン」の設定があるので、緑色になっていたら選択して白にしておきましょう。

設定 > グラフィック > 解像度 > フルスクリーン をオフ

それではアバターファイルを Resonite に読み込ませます。Resonite Import Helper で生成した gltf ファイルのフォルダと、Resonite のゲーム画面を並べて表示します。
gltf ファイルを Resonite のゲーム画面に向けてドラッグ&ドロップします。

gltf ファイルをエクスプローラーから Resonite へドラッグ&ドロップ

VRの場合は、ダッシュメニューの下部の「デスクトップ」を選ぶと、Resonite を起動してる PC のデスクトップ画面が映って操作できます。トリガー(Quest だと人差し指のボタン)を1回押すとクリック、長押しで動かすとドラッグできるので、VR を外さずに操作もできます。

VR モードで「デスクトップ」タブから操作している様子

Tips: VR モードからデスクトップモードに切り替える

VR モードで起動した人は、HMD を外すとデスクトップモードにシームレスに切り替えできます。
自動切替ではなく手動で切り替えたい場合は、ダッシュメニューの「設定」から、「デバイス」の「VR」の「VRホットスイッチ」をオフにして、キーボードで F8 キーを押すと明示的に切り替えることができます。

設定 > デバイス > VR > VRホットスイッチ をオフにすると自動切替じゃなくなる


さて、モデルインポーターが出てきたら、「高度な設定」を選びます。
するといろいろ出てくるので、下記の内容を変更します。
高度な設定では内容が多いためスクロールできます。VR モードの場合はトリガー(Questの場合は人差し指のボタン)を押しながら上下に動かすとスクロールできます。

  • マテリアル: 左に3回操作して XiexeToon にする。
  • 「法線(ノーマル)を計算」と「接線(タンジェント)を計算」のチェックを外す。
  • 「アセットをオブジェクト内に入れる」のチェックを入れる。

高度な設定を選んで、変更する箇所。スクロールできる。

これらの設定をした後、インポート実行を押してください。しばらく待つとアバターのモデルが出現します。出現したアバターはまだ触らないでください

3D モデルをインポートした直後。まだ触ってはいけない。

トラブルシューティング: 間違えてアバターを触ってしまった
アバターインポート直後にアバターを動かしてしまった様子。ぐちゃっとなる。

インポート直後にアバターを動かしてしまうと、アバターの形が変な形になってしまい、正常にアバター化できなくなってしまいます。

もし誤って動かしてしまった場合は、操作を戻しましょう。
コンテキストメニューを開きます。Quest の場合は B/Y ボタンを押して、デスクトップモードの人は T キーで出てくるメニューです。

コンテキストメニューの「戻す」を押すと直前の操作が戻せる*5ので、インポート直後の T ポーズや A ポーズの状態になるまで戻してください。
戻りきらなかったらインポートしなおしてください。

コンテキストメニューの「戻す」


トラブルシューティング: なんかデカくなった

インポートしたアバターがクソデカだった場合、インポート時のスケールを変更することで対応できます。(なお、筆者は手元で遭遇したことはないので、だれか遭遇したら発生例を教えてください。)

クソデカアバターは取り敢えず消します。消し方は後述の「Tips: インポートしたアバターを消したい」で説明してます。

再度 3D モデルをインポートします。モデルインポーターの一番上のスケールが初期状態だと 1m なので、モデルに合わせて適当に縮小してあげます。おそらく大抵の場合は 0.01 でいいはずです。

スケールを 0.01 にする


Tips: インポートしたアバターを消したい

インポート設定を間違えたり、インポート作業をやめたかったりでアバターを消したい場合は、グラブして破棄しましょう。

アバターの頭あたりにレーザーを当ててグラブし(Quest の場合は中指で握るボタン、デスクトップの場合は右クリック長押し)、コンテキストメニューを開きます(Quest の場合は B/Y ボタン、デスクトップの場合は T キー)。
コンテキストメニュー内の「破棄」を押すとワールド内から削除できます。

アバターをグラブ > コンテキストメニュー > 破棄


この時点で判明する下記のような問題のトラブルシューティングは、「3. Resonite 側でのトラブルシューティング」の章で詳しく解説しています。いったんは無視して先に進んでください。

  • 影がなんか変
  • 非表示にしてたはずのものが表示されてる
  • シェイプキーが戻ってる
  • 画像の透過が消えてる
  • 服の裏地が消えてる

それではアバター化をしていきます。

アバターの正面に回り込んでから、アバタークリエイターを取り出します。
ダッシュメニューの「ホーム」の左にある「アバタークリエイター」を押して、ダッシュメニューを閉じます。

ホーム > アバタークリエイター

トラブルシューティング: アバタークリエイターが出てこない

アバタークリエイターを使うには、Builder 権限が許可されている必要があります。これはワールドやセッションごとに違います。

もし自分がワールドを立てていて Bulider 権限が無い場合、今作業しているワールドでは Bulider 権限は禁止されています。別のワールドで作業してください。今の作業途中のアバターを破棄して、今いるワールドは閉じてしまいましょう。
ダッシュメニュー下部の「ワールド」タブから、作業ワールドの右上の赤い×ボタンを押します。その後、「閉じる」ボタンを押してワールドを閉じます。

ワールド > ×ボタンで閉じる

誰が立てているワールドへ参加した場合、そのセッションのホストの人に権限を貰ってください。

セッションホストの人に、次の操作をしてもらってください。
ダッシュメニュー下部の「セッション」タブを開きます。上部の「権限」タブを選んで、自分のユーザー名の横の権限を Builder にしてもらってください。

セッション > 権限 > Builder

Builder 権限を貰えなかったら、別のワールドを自分で立てて作業しましょう。


ワールド内に出現したアバタークリエイターを、アバターの 3D モデルに合わせていきます。

アバタークリエイター

アバタークリエイター: VR モードの場合
アバタークリエイターを VR モードで合わせている様子

VR モードの場合は、アバタークリエイターを直接掴んでアバターに合わせてあげるのがたぶん早いです。

まずは頭を掴んでアバターの頭の近くに運びます。このときの位置はだいたいでいいです。
次に、アバタークリエイターのパネルにある「〇〇を揃える」ボタンをぜんぶ押します。
その後、アバタークリエイターの頭部分の前後上下の位置を調整したければ再度動かして、揃えるボタンを押します。
手の回転だけはどうやっても揃わないので、アバタークリエイターの手の部分だけ直接グラブして(Quest なら中指のボタンで握る)、手首の位置をなるべく変えずに回転を合わせます。
最後に「作成」ボタンを押して完了です。

アバターが宙に浮いてて途中の操作がやりづらい場合は、コンテキストメニュー(Quest の場合は B/Y ボタン)を開いて「移動方法」を「フライ」にすると空を飛べるようになって多少やりやすくなると思います。


アバタークリエイター: デスクトップモードの場合

デスクトップモードの場合は、途中の回転操作がやりづらいので、アバタークリエイターをギズモから操作する方がやりやすいと思います。

最初に、Dev Tool を装備します。デスクトップモードでは数字の2キーを押すと装備できます。テンキーの方だと反応しないので、通常のキーで操作してください。

Dev Tool を装備してる様子。ツールを装備していると手を前に出す姿勢になる。

その後、アバタークリエイターに向けてレーザーを当てた状態で R キーを押して選択状態にします。選択状態中はギズモ(3軸の矢印)とバウンディングボックス(水色の点線のボックス)が表示されます。
選択状態で、コンテキストメニューを T キーで開き、「インスペクターを開く」を選ぶと、選択したスロット*6のインスペクターが開きます。

選択中に「インスペクターを開く」

インスペクター上の左上の2つ並んでる謎のアイコンのボタンの左側を1回押して、表示している階層に Avatar Creator が表示されるようにします。
その後、Avatar Creator の名前をダブルクリックしてインスペクターに詳細を表示し、「回転」のリセットボタンを押します。Rotation が x:0, y:0, z:0 になってたらよいです。
アバタークリエイターのインスペクターはまだ使うので、閉じずに脇に置いてください。

Avatar Creator を選択 > 回転のリセット

アバタークリエイターの回転をリセット

その後、アバタークリエイターの頭部分を右クリック長押しで掴んでアバターの頭の近くに運びます。このときの位置はだいたいでいいです。
アバタークリエイターのパネルにある「〇〇を揃える」ボタンをぜんぶ押します。

アバタークリエイターの「〇〇を揃える」ボタン

インスペクターに戻って、位置の微調整をします。
頭の位置の調整をする場合は、インスペクター上で Headset をダブルクリックして選択します。出てきたギズモをクリック長押しで移動させて位置調整をしてください。

Headset を選択して、ギズモを操作して位置合わせ

続いて、インスペクターで RightHand を選択して回転のリセットをした後、 Rotation の y に 90 か -90 を入力します。T ポーズのアバターならだいたい揃います。

RightHand を選択 > 回転のリセット > Rotation の y に 90 を入力

A ポーズアバターの場合や回転を微調整したい場合は、RightHand の回転をギズモから操作します。
RightHand が選択された状態で、コンテキストメニューの「ギズモオプション」の「回転」を選ぶと回転用のギズモが表示されます。右クリック長押しで操作して調整してください。

RightHand を選択 > ギズモオプション > 回転 > ギズモを操作

最後にアバタークリエイターの「作成」ボタンを押して完了です。

アバタークリエイターの「作成」ボタン


Tips: 空を飛ぶ

アバターが宙に浮いてて途中の操作がやりづらいときが何度かあると思います。その場合は空を飛びましょう。

コンテキストメニュー(Quest の場合は B/Y ボタン、デスクトップの場合は T キー)を開いて「移動方法」を「フライ」にします。この状態で上を向いて前進、あるいは下を向いて後退すると空を飛べるようになって多少やりやすくなると思います。また、デスクトップモードの場合は Space キーで上昇、C キーで下降できます。

移動方法 > フライ

VR モードの人で、移動方法を設定から変えることもできます。

ダッシュメニュー(Quest の場合は A/X ボタン)を開いて、下部の「設定」タブから「操作」カテゴリを選びます。
下の方にある「移動」の中の「頭の向きに移動する」をオフにすると、コントローラーの向きに移動できるようになります。

設定 > 操作 > 移動 > 頭の向きに移動する をオフ


トラブルシューティング: 作成ボタンが押せない
作成ボタンが押せない。破線部分にメッセージが出ている

作成ボタンが押せず、メッセージが表示されているときは、ログインできていないか、ローカルホームという特殊なワールドで作業しているときだと思われます。ログインしてからワールドを開き直すと作成できるようになります。(表示されてるメッセージは未ログイン状態が想定されていないみたいです。)
現在の作業を保存することはできないので、ログイン後にワールドを開き直してから再度行ってください。

ダッシュメニュー(Quest だと A/X ボタン、デスクトップだと Esc キー)の下部の「ホーム」タブを選んで、左上の「ログイン / 登録」ボタンからログインしてください。

ホーム > ログイン / 登録

その後、一度さっきまで作業していたワールドを閉じましょう。閉じる前に作業途中のアバターを破棄しておきましょう。
ダッシュメニュー下部の「ワールド」タブから、作業ワールドの右上の赤い×ボタンを押します。その後、「閉じる」ボタンを押してワールドを閉じます。

ワールド > ×ボタンで閉じる

ワールドを閉じた後は、再度ワールドを開き直してください。これでログイン状態でワールドに接続できるので、作成ボタンが押せるようになります。


アバタークリエイターでアバター化が完了したら、以後はアバターを掴んで動かしても大丈夫です。アバター化が完了したら、何はともあれひとまずアバターを保存しましょう。
保存せずにワールドを閉じたり、Resonite が終了したりすると今までの Resonite の作業が消えてしまうので、こまめに保存してください。

アバターをグラブして(Quest なら中指で握るボタン、デスクトップなら右クリック長押し)、ダッシュメニューを開きます(Quest なら A/X ボタン、デスクトップは Esc キー)。 下部の「インベントリ」を選択し、上部の「掴んでいるものを保存」ボタンをクリックします。
インベントリの一番右下にアバターのサムネイルが追加されれば成功です。また、画面上部にサーバへのアップロードの進行状況が表示されます。

アバターをグラブする > インベントリ > 掴んでいるものを保存

Tips: インベントリのデータを削除する

間違って保存したデータや、もう不要なデータをインベントリから削除したいときは、削除したいものをクリックで選択して「選択アイテムを削除」ボタンをダブルクリックしてください。

インベントリ > 削除するアイテムを選択 > 選択アイテムを削除(ダブルクリック)


Tips: インベントリにフォルダを作りたい

何も掴んでいない状態だと、フォルダ作成ボタンができます。

ダッシュメニューを開いて、下部の「インベントリ」タブを開きます。
上部の「フォルダ作成」ボタンを押すと、フォルダ名を入力するポップアップが出るので、好きな名前を入力して作成を押します。(ポップアップに外部リンクって出てるのは Resonite のバグです。気にしないでください。)

インベントリ > フォルダを作成 > フォルダ名を入力 > 作成

保存したいものを新規に作成したフォルダに保存するには、そのフォルダをダブルクリックで開いた状態で保存する必要があります。

作成したフォルダを開いている様子。左上に開いている階層が表示されている。

なお、フォルダ間移動やフォルダ名の変更などの機能は 2024/9/15 時点で存在しません。すでに保存したもののフォルダを移動させたい場合は、移動元に保存してあるアバターをダブルクリックで取り出して、移動先のフォルダを開いて保存して、移動元のデータを削除しましょう。


トラブルシューティング: 保存ボタンが押せない
保存ボタンが押せない状態。Resonite Essentials を開いている。

他人のパブリックフォルダなど、自分が保存できる場所を開いていないと保存ボタンが押せないようになります。自分が保存できる場所へ移動すると保存できるようになります。

インベントリのメニューの上部にある「インベントリ一覧」ボタンを押して、「Personal」を選ぶと自分の保存できる領域に戻れます。

インベントリ一覧 > Personal

「インベントリ一覧」のボタンも押せない状態になっている場合、ログインができていません。

インベントリ一覧が押せない

その場合は、ダッシュメニューの「ホーム」タブの左上の「ログイン / 登録」ボタンからログインしてください。

ホーム > ログイン / 登録


トラブルシューティング: 同期エラーと表示される

同期エラーと出た場合、原因がいろいろ考えられるので、この記事では取り上げません。以下に考えられそうな原因の例を上げます。

たぶん対処がわからないと思うので、Resonite Japan の Discord などで質問してみてください。

discord.gg


3. Resonite 側でのトラブルシューティング

さて、アバター化が終わってインベントリに保存できたら、Resonite 側で修正できる調整をします。Resonite で設定変更するためには Dev Tool というアイテムを使って操作する必要があります。

ダッシュメニューを Quest なら A/X ボタン、デスクトップモードなら Esc キーで開いて、下部のインベントリを開きます。 一番上の階層に誰でも Resonite Essentials というフォルダがあるので、そこから Resonite Essentials > Tools とダブルクリックで開きます。
そこの一番左上の Dev Tool をダブルクリックで取り出します。

インベントリ > Resonite Essentials > Tools > Dev Tool

取り出した Dev Tool に向かってトリガー(Quest なら人差し指のボタン、デスクトップならクリック)をすると、装備メニューが出るので装備しましょう。

Dev Tool をトリガー > Development Toolを装備する

Dev Tool を装備できたら、手にツールがくっつきます。

Dev Tool を取り出してから装備するまで。装備すると手にくっつく。

トラブルシューティング: Dev Tool が装備できない
Dev Tool を装備しようとしたら赤いメッセージが出る場合

Dev Tool を使うには、Builder 権限が許可されている必要があります。これはワールドやセッションごとに違います。Builder 権限が与えられてない場合は、Dev Tool を装備しようとすると、画像のように "You don't have permission to equip this." と赤文字で表示されます。

もし自分がワールドを立てていて Bulider 権限が無い場合、今作業しているワールドでは Bulider 権限は禁止されています。別のワールドで作業してください。今の作業途中のアバターを破棄して、今いるワールドは閉じてしまいましょう。
ダッシュメニュー下部の「ワールド」タブから、作業ワールドの右上の赤い×ボタンを押します。その後、「閉じる」ボタンを押してワールドを閉じます。

ワールド > ×ボタンで閉じる

誰が立てているワールドへ参加した場合、そのセッションのホストの人に権限を貰ってください。

セッションホストの人に、次の操作をしてもらってください。
ダッシュメニュー下部の「セッション」タブを開きます。上部の「権限」タブを選んで、自分のユーザー名の横の権限を Builder にしてもらってください。

セッション > 権限 > Builder

Builder 権限を貰えなかったら、別のワールドを自分で立てて作業しましょう。


トラブルシューティング: 装備すると移動方法が変わる (VR モードの Index 以外)

(※執筆途中) VR モードの Index ユーザー以外がなるっぽいです。
Dev Tool などの特定のツールを装備していると移動方法が制限されてしまいます。Resonite の仕様です。
装備を外すと元の移動方法に戻ります。
ツールシェルフを使おう。


Dev Tool を装備した状態で、編集したいものを選択肢て、インスペクターというものを開きます。

Dev Tool を装備した手で、編集したいものに向けてレーザーを当てます。その状態でセカンダリー(Quest だとスティック押し込み、デスクトップだと R キー)を押すと、ギズモ(3軸の矢印)とバウンディングボックス(水色の点線のボックス)が表示されます。
この状態で、Dev Tool を装備した手でコンテキストメニュー(Quest だと B/Y ボタン、デスクトップだと T キー)を開いて「インスペクターを開く」を選ぶとインスペクターを取り出せます。このとき、レーザーが選択したオブジェクトを向いていないほうが操作がしやすいです。

セカンダリーで頭を選択し、コンテキストメニューのインスペクターを開く

出てきた黒い板がインスペクターです。これを使ってアバターの内部設定を編集します。

黒い板ことインスペクター。左側に階層構造、右側に選択したスロットの詳細が表示される。

インスペクター内の階層の移動方法に絞って説明します。

① インスペクターで選択中のスロット*7は名前が黄色く表示されます。選択中のスロットの詳細は右側に表示されています。別のスロットを選択したい場合、選択したいスロットの名前部分をダブルクリックします。
② 左上に2つ並んでいるボタンはインスペクター左側の階層構造を上に移動できます。右側のボタンを押すと1階層上を表示し、左側のボタンを押すとオブジェクトルートを表示します。
③ 右上のボタンは、選択中のスロットを階層構造の一番上として表示します。②のボタンで上に戻りすぎたときなどに使ってください。
④ 階層構造の名前の先頭にある▶をクリックすると、その子階層が表示されます。選択したいスロットの階層まで子階層を開いていって、名前をダブルクリックして選択してください。文字が小さすぎて見えなくなった場合は適当な孫階層を選択して、③のボタンを押すとよいです。

Dev Tool の使い方はこちらの記事でも解説されてます。理解しやすいもので使い方を把握してください。

note.com

note.com

それでは、アバターの各種トラブルシューティングです。

トラブルシューティング: 影がなんか変

影が2箇所に出てる? 左から光が当たってるはずなので右側にのみ影が出てほしい。

この現象はメッシュの法線がひっくり返ってると発生します。なぜひっくり返ってしまうかは原因不明です。Resonite 内で法線の反転をして対応します。

まずは法線がひっくり返っているメッシュを探します。
Dev Tool を装備してアバターを選択してからインスペクターを開き、アバターのルートを開きます。たいていのアバターであれば、CenteredRoot の下の ROOT の子に SkinnedMeshRenderer のスロットがあるので、問題のスロットを選択します。
右側に表示された SkinnedMeshReneder の Mesh にある ↑ ボタンを押しましょう。

顔のメッシュの Body を選択 > SkinnedMeshReneder の Mesh の横の ↑ ボタンを押す

するとメッシュ情報のパネルが出てくるので、下部にある「法線を反転」ボタンを押してください。しばらく待つと法線が反転して表示されます。これで修正完了です。

法線を反転

そもそも影なんて邪魔だぜ! という方は、マテリアルを修正しましょう。

先程の SkinnedMeshRenderer の表示されたインスペクターの Materials (list) の下に表示されたリストの ↑ ボタンをおしてください。

SkinnedMeshRenderer の Materials (list) の ↑ ボタン。複数ある場合はマテリアルが複数使われている。

出てきたパネルを下にスクロールして、ShadowRamp に設定されている影テクスチャを Clear で消すとアバター側の影が消えます。※ワールドライトによる影は消えないので、全部の影は消えないです。

この操作を影を消したいメッシュのマテリアル全てに行ってください。

ShadowRamp の影テクスチャを Clear して消すと影が一部消える


トラブルシューティング: 非表示にしてたはずのものが表示されてる

Unity 上で表示されてない耳やジャケットが表示されてる

RIH で出力したモデルは全てのメッシュが表示されています。これは仕様なので、Resonite 側で非表示にしてあげる必要があります。

まずは非表示にしたいメッシュを探します。
Dev Tool を装備してアバターを選択してからインスペクターを開き、アバターのルートを開きます。たいていのアバターであれば、CenteredRoot の下の ROOT の子に SkinnedMeshRenderer のスロットがあるので、非表示にしたいスロットを選択します。
非表示にしたいスロットを選択した後、右側に表示されてる Active のチェックを外してオフにします。するとメッシュが非表示になります。
非表示のスロットはインスペクター上で名前が灰色になってます。

非表示にしたい SkinnedMeshRenederer のスロットを選択して Active をオフ


トラブルシューティング: 服が一部脱げてる。腕がぐにゃぐにゃしてる。

(※執筆途中) コンストレイントの構造をやめる。追従するボーンの子に直接入れる。


トラブルシューティング: シェイプキーが戻ってる
設定していたはずの顔のシェイプキーが消えてる?

RIH で出力したモデルは、全てのブレンドシェイプが0にリセットされています。これはおそらく仕様なので、Resonite 側で再度設定してあげる必要があります。
また、もし Resonite 側で動かす想定が無いブレンドシェイプなら、Avatar Optimizer の Freeze BrendShape コンポーネント等で固定化してしまうのも手です。

まずはブレンドシェイプを調整したいメッシュを探します。
Dev Tool を装備してアバターを選択してからインスペクターを開き、アバターのルートを開きます。たいていのアバターであれば、CenteredRoot の下の ROOT の子に SkinnedMeshRenderer のスロットがあるので、非表示にしたいスロットを選択します。

下の方にスクロールしていくと、BlendShapeWeights (list) というのがあります。ここがブレンドシェイプのリストなので、Unity 上で設定していた値を再度設定してあげます。
ここで注意ですが、Unity では 0~100 の範囲で値を設定しますが、Resonite では 0~1 の範囲で値を設定します。Unity 上で 30 の設定をしていた場合、Resonite では 0.3 で設定しましょう。

BlendShapeWeights のブレンドシェイプを設定する

また、紫色になっている箇所は、Resonite のコンポーネントから値を常に上書きされている状態のため、そのままでは編集できません。
初期状態だとおそらくリップシンク用のコンポーネントによって動かされている状態ですが、その上書きをやめたい場合、紫色になっているブレンドシェイプの名前の隣りにある謎のボタンを押して、「リンク/ドライブの切断」を選ぶと上書きをやめることができます。

リンク/ドライブの切断

リンク/ドライブの切断をするとブレンドシェイプが編集できるようになる


トラブルシューティング: 画像の透過が消えてる
顔の頬染め部分がベタ塗りになってしまう

画像に透過が使われている場合、RIH v0.1.11 時点では透過情報がテクスチャから失われてしまいます。透過情報が消える前のテクスチャを別途インポートし、設定してあげる必要があります。

Unity のプロジェクトや、配布の zip ファイルの中から、透過情報が失われていないテクスチャを探します。もし lilToon のアルファマスク機能を使っていた場合、透過情報を合成してひとつのテクスチャにしてください。lilToon 「アルファマスクを焼き込み」機能を使うと簡単に合成できます。

lilToon の「アルファマスクを焼き込み」

透過情報入りのテクスチャファイルを Resonite の画面へドラッグ&ドロップすると、画像インポーターが出現します。「画像/テクスチャ」を選んでインポートしてください。

画像インポーターの「画像/テクスチャ」

続いて持ち込んだテクスチャを設定したいメッシュを探します。
Dev Tool を装備してアバターを選択してからインスペクターを開き、アバターのルートを開きます。たいていのアバターであれば、CenteredRoot の下の ROOT の子に SkinnedMeshRenderer のスロットがあるので、テクスチャを設定したいスロットを選択します。
SkinnedMeshRenderer の Materials (list) から、透過テクスチャであるべきマテリアルを探して ↑ ボタンを開いてマテリアルの設定パネルを出します。

SkinnedMeshRenderer の Materials (list) からそれっぽいのを探して ↑ ボタン

マテリアルのパネルの MainTexture の箇所に、先程インポートした画像を設定します。画像をグラブ(Quest だと中指で握るボタン、デスクトップだと右クリック長押し)して、MainTexture の箇所にレーザーを当ててトリガー(Quest だと人差し指のボタン、デスクトップだとクリック)すると、画像を設定できます。
その後、BlendMode を Alpha に変えます。するといい感じになります。

MainTexture に透過ありの画像を設定し、BlendMode を Alpha にする
画像を設定して、BlendMode を変える様子

ただし、BlendMode が Alpha のマテリアルは、他の半透明のものが重なったときに消えてしまう事故が起きてしまうことがあります。その対策もしておきましょう。

半透明テクスチャを使っている SkinnedMeshRenderer に戻って、SortingOrder の値を -32678 にするとたぶん消えなくなります。
これでも消えてしまう場合は、他の設定を頑張るか、Alpha を使うのを諦めてください。

SkinnedMeshRenderer の SortingOrder


トラブルシューティング: 服の裏地が消えてる
スカートの裏面などが消えがち

(※執筆途中) マテリアルの culling を Off にする


トラブルシューティング: 目がギョロギョロする

(※執筆途中) EyeManager の EyeRotationDriver の MaxSwing を 5 とかに下げる。


AvatarRenderSettings の nearclip

既定のアバターに設定(※執筆途中)

トラブルシューティング: 喋ると変なところが動く

(※執筆途中) 不要な VisemeDriver を消す


トラブルシューティング: 歩き方が変

(※執筆途中) IIKANJI LocomotionAnimationConfiguration Installer

uni-pocket.com


他の設定も頑張りたい人へ

必要最低限のことだけ書いたら記事を書く体力がお亡くなりになったので、もっと設定を頑張りたい人は次の記事などを参考にして頑張ってください。
もしくは、Resonite 内でぼくに質問してください。知ってることは喋ります。

また、この記事の手順通りにしたのにうまくいかなかったケースなどあれば、フィードバックして欲しいです。知見を蓄積したいです。よろしくおねがいします。

note.com

nanasai.hatenablog.jp

zenn.dev

*1:bakeで参照先にだけ焼きたいのに参照元に焼かれてそう https://github.com/KisaragiEffective/ResoniteImportHelper/issues/59

*2:本来半透明として扱われてほしいテクスチャが不透明としてエクスポートされる https://github.com/KisaragiEffective/ResoniteImportHelper/issues/50

*3:ログイン状態じゃないと、アバター保護の設定ができないため、パブリックアバターしか作れない。

*4:オンラインステータスを非表示にしていると、プライベートで開きます。

*5:戻せない操作もあったりする

*6:Unity で言うところの GameObject

*7:Unity で言うところの GameObject