見出し画像

VRChatアバター改変 unityプロジェクトの管理運用(自分用記録)

これはアバター改変の根底の土台作りの具体的な内容を記録する 自分用の記事です


2023年10月末日に 唯一のUnityプロジェクトが壊れて失ってしまったことが全ての発端です

以前は必要な知識や経験は完全に皆無だったので 耳に聞こえてきた操作手順や分からない記事の内容を 理解できないまま模倣して成功したらヨシぐらいが関の山でした  努力しても自力では何も理解できませんでした

これを期に立て直すにしても 新規プロジェクトの作り方から理解し 発展の展望をきちんと考えて土台を構築し 全く知らない必要な基礎知識をきちんと学んで自分のものにしないと将来はないと考えて
長い月日をかけていくつかの本を読むことで皆さんと少しは会話ができるようになり 紹介いただいた沢山のドキュメントを読むことができるようになり 基礎を学ぶことが可能になりました

そして何より 本当に沢山の方々に手取り足取りレベルで助けていただいたことで やっと基礎レベルのスタート地点に立つことができたと思います

寺井カントリーアバターの集会の有志の方々
アバター改変なんもわからん集会の有志の方々
仲良くして教えてくれるフレンドさん達   皆様に心から感謝いたします

土台がだいたい出来て 再現した姿で皆さんの前に姿を現せるぐらいになったので 未完結ですが記事を公開します


躓いては教えていただき 学ぶにつれて0からやり直すこと数回
実際の作業量はこの記事を5往復するぐらいです

皆さんと同じ程度になれたら良いなという願望はありますが
私は上級者を目指しているわけではありません
皆さんと同じ時間を過ごせる程度や 生きていける程度で十分です
それまではまだまだ質問しますので教えて下さい


●この記事について
対象アバター:ファルリアちゃん
内容はあくまで自分の為のものです 伝える書き方をしていません
書いておかないと忘れてしまいますので記録して
新しくアバターをお迎えした際にも基礎になることも意識しています


公開時点でも未達の部分がたくさんあります
学びと進捗で引き続き編集していきます 方針変更をする可能性もあります

間違いやアドバイスがあれば教えていただけるととても助かります




【ファイル管理体制】

ぶいちゃをやってるだけで ものすごい数のファイルを扱いますよね
「ファイル管理もPCスキルの内」ですが 実際は難しいものです

ファイル管理は土台になる重要な要素です これがしっかりしてないと
改変が進んだ後でも いつでも足元をすくわれます

管理の内容は よぜさんnote記事を参考にしました

よぜさんの記事は参考になるものが多くてありがたいです
画像を1枚見ただけでもたくさんの事が学べます


●10_VRChat_Works   この中に全てが入る

以下 その内容

●10_project    アバターごとのブロジェクトをここに入れる
├(アバター名)  今はファルリアちゃんのみ
 ├Project本体   Masterが基本 バリエーションがあればここに増える

●20_必須Package
Projectに手作業でインポートするツールたち

VCCのManagePrefabからインポートするのは含まない

●30_UnityPakage
特に決まっていないがとりあえずAssetを置く場所
ダウンロードフォルダに転がしておかないようにする
汎用性を考慮してここにプールする
使用する時に”アバターごとのカスタムフォルダ”へコピーする

●40_Avatar
未着手のデフォルトのモデルそのものを置く場所

”アバターごとのカスタムフォルダ”が用意されたらそちらへ移動する
今は未着手のアバターがないので空っぽ

テーマカラーのカラーパレットを置く

●80_フルトラ用App
フルトラに必要なアプリケーションのインストールファイル

何らかの理由で再度立ち上げる時に必要になるので保存する


●90_その他・保存・バックアップ
├Project_BK  Projectのバックアップの保存場所

などなど  保存しておきたい物を置く場所

●(アバター名)_Custom
これが ”アバターごとのカスタムフォルダ”

そのアバターに関するファイルは全てここに入れる

●”アバターごとのカスタムフォルダ”の中身
デフォルトのアバター本体 と
このアバターの改変に使用したファイルなどをフォルダ分けして保存する

各フォルダ内には UnityPackageごとのフォルダがある

エクスプローラー内でテクスチャなどの操作と保存を行い
改変ファイルは同一の場所に保存して 冒頭に「C_」を追加してリネーム

保存した「C_」は 開いているUnityのProjectタブにD&Dして上書きしてリフレッシュするか 次の”Projectフォルダへの直リンクフォルダ”へCtrl+D&D

●Projectフォルダへの直リンクフォルダ
上記”アバターごとのカスタムフォルダ”の各フォルダ内には 改変にて発生したC_のファイルがある
C_のファイルはProjectに使用する物なので C_がある場所にはその適用先の"Project内のフォルダへの直リンクフォルダ"を作成する

C_を作成や編集した際には"Projectフォルダへの直リンクフォルダ"にCtrl+ドラッグでコピーする

C_編集の場合は 同様にコピーして上書きする




【Unity・Project側】

●PrefabVariantファミリーの構成

相談の過程で参考に教えていただいた構成を真似しました

①FBX(裸のFBX)
└②PrefabVariant(①をVRCアバターにセットアップした裸のPrefabVariant)★
 ├③PrefabVariant(②に衣装Aを着用してOverridesしたPrefabVariant)
 │└④PrefabVariant(③にアイテム追加してOverridesしたPrefabVariant)
 ├⑤PrefabVariant(②に衣装Bを着用してOverridesしたPrefabVariant)
 ├⑥PrefabVariant(②に衣装Cを着用してOverridesしたPrefabVariant)

★②が普段のベース

Overridesのベクトル図

●①→②→③→④
    ├→⑤
    ├→⑥

検証にて確認済み

私の場合 ファルリアちゃんでは ①無しで
②をPrefab[Origin]で作成して これを原点にします

私はFBXを操作出来ないのと モデルの更新は無いと思うので
FBXやモデルの更新の問題は無いものとします

他のアバターをお迎えしたときは①有りになるかも その時は下記リンク先ドキュメントを再確認


●PrefabVariantファミリー作成手順

基本操作

元になるPrefabをHierarchyに置く→Hierarchyに置いたの(GameObject)をリネームしてProjectタブにドラッグ→PrefabVariantを選択
→ProjectにPrefabVariantが出来る
これで元Prefabを親にするPrefabVariantが出来る

【注】ドラッグ元のHierarchyのGameObject名は変わらないが 参照しているのは作成したPrefabVariantになる (参考:下図)

私は紛らわしいと感じるので PrefabVariantを作成したらすぐにHierarchyのGameObjectをDeleteして Projectに出来たPrefabVariantをHierarchyに入れなおそうと思う

Hierarchyから「Falria_1.02」をドラッグして Prefab「Falria_1.02 Variant」を作った状態
GameObject名は「Falria_1.02」のままだが
参照しているPrefabは 作成した「Falria_1.02 Variant」になっている


ファルリアちゃんで上記②を原点とする PrefabVariantFamily作成の具体例 (検証時の内容)

・デフォルトのPrefabをHierarchyに置いて裸にする
・Hierarchyで「0 Falria_Sotai」にリネームしてProjectタブにドラッグ
 Original Prefabを選択  このPrefabがベースになる
・Projectタブにある「0 Falria_Sotai」をHierarchyに置いて
 「1 Falria ishou_A」にリネームして Projectタブにドラッグ
 PrefabVariantを選択 これに衣装Aを着せる
・Projectタブにある「1 Falria ishou_A」をHierarchyに置いて
 「1 Falria ishou_A+Item」にリネームして
 Projectタブにドラッグ PrefabVariantを選択
 衣装Aを着用したアバターにアイテムを追加する
・Projectタブにある「0 Falria_Sotai」をHierarchyに置いて
 「2 Falria ishou_B」にリネームして Projectタブにドラッグ
 PrefabVariantを選択 これに衣装Bを着せる

このダイアログで選択
Overridesの動作も確認済み

●その他

実験などからわかった参考情報

・HierarchyにあるGameObject(1 Falria ishou_Aなど)は
 OverridesからApplyしたら HierarchyからDeleteして構わない
 ApplyするとProjectにあるPrefabにも保存される

・OverridesからApplyしないでHierarchyからDeleteすると
 Overridesの内容はに保存されない Overridesの情報は失われる
・Overridesを無かったことにしたい場合は
 意図的にApplyしないでHierarchyからDeleteするのもアリ?

・別のPrefabを編集するときは
 Projectタブから別のPrefabをSceneに置いて操作する
・その都度Prefabを出し入れすれば Sceneファイルは1つでも可能
・BuluePointIDはPrefabに保存されるみたいなので
 Hierarchyから出し入れしても問題なし

・Sceneを2つHierarchyにロードしてプレイモードにしたら
 無限エラーになったことがあるので ロードするのは1つにする

・PrefabVariant作成の操作方法 その2:
 GameObject名を変更しないままHierarchyからProjectタブへドラッグして
 ProjectタブにPrefabVariantを作成した後に
 Projectタブに作成されたPrefabVariantのファイル名を変更しても大丈夫
 ファミリー関係がある他のPrefabとの関係は切れない
 Variant Family of ---- の関連先名も更新される (下図参考)

Projectタブ内でファイル名の先頭に数字を入れた後の状況


PrefabVariantファミリーを理解するのに紹介していただいた参考記事 2つ




【各衣装への対応 フォルダ/ファイル管理】

●体制

・1モデルあたり 1Project
・1衣装で 1PrefabVariant (バリエーションがあれば別PrefabVariant)
・アイテムなどはカテゴリ分けしてフォルダに保存し
 そこから各アバターPrefabに適用する
・編集したカスタムファイルは同じ場所に置いて
 わかりやすく ファイル名冒頭にC_をつけてリネーム

●Projectタブ Assetsフォルダ内のフォルダ構成

「0_Prefab」 > 改変PrefabVariantを置く場所
        ファイル名にナンバリングと衣装名を入れる
  「00-09」 ナンバリングしたPrefabVariantを10個保存
  「10-19」 (同上)
  直下にベースの素体Prefab[Origin]を置く
  別パターンのPrefab[Origin]が発生した場合はここに置く
「1_Cloth」 > インポートした衣装を置く場所
    フォルダ名の冒頭にPrefabのナンバーを入れる 例)00_
    複数のPrefabに使用したらナンバーを追加する 例)00_01_
    カスタムファイルは冒頭C_をつけて 元位置と同じ場所に
「2_Hair」 > インポートした髪型を置く場所
    フォルダ名の冒頭にPrefabのナンバーを入れる 例)00_
    カスタムファイルは冒頭C_をつけて 元位置と同じ場所に
「3_Item」 > インポートしたアイテムを置く場所
    それが何かフォルダ名の冒頭に名前を追加 例)Nail_ Ribbon_
    カスタムファイルは冒頭C_をつけて 元位置と同じ場所に
「4_Anim_Gimic」 > Exメニューに関するファイルを置く場所
   「00」~番号フォルダに 00~PrefabVariantに関するファイルを置く
    メニューファイル anim など

「9_Mdoel」 > オリジナルのアバターモデル
   「_Custom」フォルダを作成し
    PrefabOriginに含まれるカスタムファイルとギミックなどを置く

「99----------------------」 > フォルダ名で線引き 以下がツール

・「ツール類」 インポートした位置=Assets直下から動かさない
        動かすと支障があるツールがあった 無理しない
・「シーンファイル1つ」 Assets直下に置く
   ファイル名にかかわらず なぜかツール群の下に並ぶのでそのまま



【ツールのインポート】

自分用メモ note記事を参照


●インポートしたツールのフォルダ管理

Assets直下に入ってくる  フォルダ位置はそのままに保持する

フォルダを作ってまとめたいところですが 直下から移動すると動作しなくなるツールが一部あったので 無理しない



【ベース素体 Prefab[Origin]の作成】

ベースは自分のアイデンティティの要素
ここで作るベースPrefab[Origin]からPrefabVariantを作成することにより
衣装が変わってもアイデンティティを保っていく

デフォルトのファルリアちゃんをCtrl+Dでコピーしてリネーム
Hierarchyで操作する

●デフォルト衣装の削除 裸にする

Hierarchyにて
ベースに不要なメッシュとPhysBoneとPhysBoneColliderを削除する
具体的にはデフォルト衣装関連 →裸にする

削除作業について
・予めメッシュとPhysBoneの関係を調べて 削除するものを把握する
・メッシュを削除してから PhysBoneとPhysBoneColliderを削除する

(参考)メッシュより先にPhysBoneを削除すると メッシュが激しく破綻して 赤エラーが出た
簡単に検証したところ赤エラーを無視しても問題無かったが 予期せぬ内容が出る可能性を考えて順番を守ることにする

メッシュに関連するPhysBoneの特定にはツールを使用すると便利


(参考)必要時のためのメモ
PrefabVariantをPrefabOriginに変更する方法
HierarchyにPrefabVariantを置いてアバタールートを右クリック→UnpackCompletely(or必要回数分Unpack)→Projectタブにドラッグ→OriginalPrefabを選択   OriginなのでVariantのParent関係が切れる


●身体にある シュリンクのBlendShapeはオフにする

可能な限り身体をシュリンクしたくないという個人的な価値観です

衣装によってどうしても必要な場合は
衣装着用ギミックのAnimationでのブレンドシェイプ操作の対応を検討する またはシュリンクする


●両腕と両足にPhysBoneColliderを設置する

両腕のUpperArm直下に 髪の貫通防止のPhysBoneCollider
両足のUpperLeg直下に スカート貫通防止のPhysBoneCollider

【要点】
・服を脱いだ状態でPhysBoneColliderを設置する
 UpperArmは上腕の位置  UpperLegは太ももの位置

・両腕に作成した物を デフォルト髪のPhysBoneのCollision>Collidersに
 設定してプレイモードで髪に当たるか動作を確認する
 確認が終わったら設定を消す
・両足に作成したものは衣装を着た際に衣装のPhysBoneのCollision>
 Collidersに設定して動作確認する
 調整が必要な場合はPrefabVariant側で調整する

・不要な場合はPrefabVariant側で削除する
・もし大元側で変更したほうが良い場合はPrefab Origin側で調整する
 その際はそのColliderを使用している各アバターの再アップロードが必要

UpperArmの例

図:左腕の例

●デフォルト髪のメッシュとPhysBoneは削除しない

メッシュはPrefabVariant側で非表示とEditorOnlyにする
PhysBoneは削除しなくてもいい AAOで削除されるはず

理由:Originはベースとはいえ髪がないのはイヤ
デフォルト髪のメッシュがある状態でPhysBoneを削除するとメッシュがドーン!って破綻する 心臓に良くない
いずれデフォルトタイプの改変に利用したい


●AAOをアバタールートのコンポーネントに追加する

プレイモードなどのビルドアップ時に 使われていない&EditorOnlyのPhysBoneとPhysBoneColliderを削除してくれる

他にも軽量化してくれるらしい?  まだ理解してない

●MA Convert Constraintsをアバタールートのコンポーネントに追加する

VRCのアバター破壊に対応するために Originに入れる


●アイテクスチャ(目)

マットキャップだけ使用した

テクスチャは別途考える

ファルリアちゃん対応で瞳孔の位置が合うのが無い
ホライズ・ハーミットちゃん対応が合うと聞いたけど見つからない

デフォルトも気に入っているので色調整ぐらいでいいかなぁ (未実施)



●View Positionの設定  <試行段階>

球の先端が顔メッシュからちょっと出た位置が一般的だが
私はデフォルトより後退した位置にしたい

理由:顔周辺へのアプローチが視認できないと把握できない
流石に把握できないとセンスが働かないよ

<現・試行段階> 奥行きを眼球の位置に合わせる


●環境光の影響対策

アバターの色が環境光の影響を受けにくくする

Hierarchyにて右クリック>CreateEmptyで空のゲームオブジェクトを作成>コンポーネント不要>ルート直下に配置>リネーム
SceneではY方向(Transform)に動かして 喉元やその周辺に配置

各メッシュのAnchorOverrideの設定をこれにするために
アバタールートに MA Mesh Settings のコンポーネントを追加する
   設定モード=設定
   アンカーオーバーライド=上記で作成したオブジェクト
以降は衣装やアイテムにも自動で反映する


【Originに含む アイテム・ギミック】

入れるものや入れ方の詳細は 後述の項目を参照
 →●第2階層 Costume・Item_Gimicの仕込みと作成

●Originに含む アイテム/ギミック/カスタムファイルの保存場所

9_Model>_customフォルダ内に保存する

階層
9_Model
 ├1_Item_Gimic_Acce     導入するアイテム/ギミック/アクセサリ
 ├2_ExMenu_anim_Param_Layer ベース用ExMenuに関するもの
 ├3_sotai_custom       ベース素体のカスタムファイル

●ごろ寝システム

これだけは少々特殊なので ここに自分のケースを記載しておく

このシステムは統合と置き換えをすることで導入されるようだ
・PlayableLayerのBaseレイヤー    置き換え
・ExpressionsのMenuとParameters   統合して置き換え

置き換えられたBaseレイヤーとExMenuとParametersは OriginのPrefab名を冠したファイル名になり 保存場所はツールのフォルダ配下になる

私的には今後の管理にも影響があるのでリネームして コピーしたものを所定の保存場所に移動して再度適用する


なお商品ページ手動の説明にある
例)「Supine/Templates/SupineLocomotion」とは インポート後に発生するプロジェクトタブ内のフォルダを示している
例)→Assets/Supine/Templates/SupineLocomotionフォルダ という意味



【Exメニュー作成】

具体的に用意するのは必須の第1階層と 第2階層のデフォルトエモートだけ
それ以外はツールを活用して非破壊で追加する

理由:ツールを使用することで アイテムやギミックの操作をする第2階層をHierarchy内のオブジェクトとして保存しておける
そのためPrefabVariantとして継承可能

PrefabVariantに含む要素は PrefabVariant側でツールを使用してオブジェクトを追加するだけで簡単にメニューに追加できる


●第1階層

デフォルトをコピーして利用する
保存場所はベース素体フォルダ配下
9_Model>_Custom>「2_ExMenu_anim_Param_Layer」フォルダ
ファイル名:Ex1_ExMenu

削除するもの    :・Kemono_OFF (Costumeに移動/後述)
残すもの(既存)  :・DefaultEmote(SubMenu)
ツールから自動で入る:・Costume(SubMenu)
           ・Item_Gimmick(SubMenu)
           ・FaceEmo
           ・Light Limit Changer

最終的にEx1_ExMenuは DefaultEmote(SubMenu)のみになる
(SubMenuは下記Ex2_DefaultEmoteを参照する)

このEx1_ExMenuは 後述のごろ寝システムにより統合されて使用されなくなる
→統合後のものをEX1_ExMenu_withSuiminにリネームとコピーして この保存場所にペーストして改めて適用する
詳しくは後述のごろ寝システムを参照


●第2階層 Ex2_DefaultEmote

デフォルトをコピーしたものをリネームして利用する
保存場所 :9_Model>_Custom>「2_ExMenu_anim_Param_Layer」
ファイル名:Ex2_DefaultEmote


●第2階層 Costume・Item_Gimicの仕込みと作成

HierarchyにてCreateEmptyして 下図のように階層を作る

・ExMenu 2nd Layer  下記2つの階層のルート
 ・Costume     衣装オンオフ メニュー実体
 ・Item Gimic    アイテムとギミックのオンオフ メニュー実体
・Base Item     アイテムやギミック 実体ファイルの置き場所

操作方法などは別記事にまとめました

Originは下図のようにまとめた


●Parameter

デフォルトをコピーしたもの編集して ベース用に利用する
保存場所 :9_Model>_Custom>「2_ExMenu_anim_Param_Layer」
ファイル名:Base_Parameters

Base_Parametersの内容の操作

VRCEmote:VRCデフォルトエモート 残す
それ以外は削除

(参考)
・Arm○○:デスクトップモードで腕を動かす機能に使用するもの
      使用しないので削除
・KemonoToggle:デフォルトの耳のオン・オフ用
         別途仕込むので削除 

このBase_Parametersは 後述のごろ寝システムにより統合されて使用されなくなる
→統合後のものをC_Falria_Parameters_withSuiminにリネームとコピーして この保存場所にペーストして改めて適用する
詳しくは別記の●ごろ寝システムを参照

●FX_Layer

デフォルトをコピーしたもの編集して ベース用に利用する
保存場所 :9_Model>_Custom>「2_ExMenu_anim_Param_Layer」
ファイル名:C_Falria_FXLayer

・Layerについて
All Parts以外は削除する
デフォルト衣装関係   :削除
LipSync(ファルリア固有):削除
StopEyes        :削除
左/右Hand(表情操作):表情 FaceEmoで定義されるから不要

・Parameterについて
消しても良いが未着手

●Animation

アイテムのオン・オフなどに関するAnimationファイル
保存場所 :9_Model>_Custom>「2_ExMenu_anim_Param_Layer」
ファイル名:適当にネーミングする

後述の”口が開いたときだけ牙を出す”にて 保存場所として使用することになる

下記の記事でAnimationファイルに直接プロパティを追加する方法を学んだ
アイテムオン・オフの一連の改変操作が記事に記載されている
録画ボタンが必要なくなるので この方法で良いと思う
私はこっちのほうがやりやすい

(参考)アイテムにアーマチュアがない場合は 一般的な録画ボタンを押す操作が出来ないみたいなので この記事の操作が必須になる

●BlendShapeをオン/オフ制御する

BlendShapeで表示されているものをスイッチ制御する
衣装によってズロースなどが必要な場合はPrefabVariant側で対応する

パンツの例


【FaceEmo】

●FaceEmo (表情操作ツール・そのファイル管理)

表情を色々作って適用する

FaceEmoを使用する理由
複数の表情セットを作成して EXMenuからセットを選択して使用できる
複数のアバターPrefabに適用できる 毎回作る必要がない

●できれば破綻しないように

一番大きく口を開けた表情の場合はどうしても破綻するタイミングがあるようなので お口はおしとやかにする
これはFaceEmoを使用しなくても同様なので FaceEmoの仕様ではない


●表情の継承

Originで表情編集して適用後に OriginでOverridesでApplyすればVariantにも反映される

※マニュアル:同じシーン上のアバターに表情メニューを同時適用するにある 「複数アバターへの表情メニュー適用」の登録は不要
登録すると ”同時適用”と”Originからの継承”がダブってしまい
PrefabVariant側のHierarchyにFaceEmoPrefabが2つ入ってしまう

●顔以外のシェイプキーの追加 【必須】

顔以外のシェイプキーをFaceEmoで扱うために Face Emo Launcher Componentの「追加表情メッシュ」に+ボタンからブレンドシェイプがあるメッシュを登録する  登録しないとFaceEmoで扱われない
これはマニュアルに未記載

ファルリアちゃんの場合の追加メッシュは「EAR」が該当する
(顔のシェイプキーはメッシュ「Body」に入っていて 自動でFaceEmoで扱う対象になる)

EARを登録しなかった例:表情アニメーションclipにEARのシェイプキーがあっても 耳は動くが元に戻らない

OriginをHierarchyに常駐させたくないので
追加表情メッシュ=Earは FaceEmo使用時のつど気をつける

●デスクトップでの表情操作 早見表

デスクトップでログインして表情をテストする時の 操作早見表

shiftキー+ファンクションキーでハンドサインの操作ができる
shiftキーは左右独立している 左shift=左手 右shift=右手

表情操作 Shift+Fnキーの表  (許可を得て画像を拝借)
(VRハンドサイン)

●FaceEmo使用後はOverridesする

FaceEmo使用後にOverridesを見ると アバター直下にあるFaceEmoPrefabのTransformがズレたように見える
→ これをApplyすることでFaceEmoの操作が適用される

Originでこの操作をするとPrefabVariantにも適用される


●FaceEmo本体の話

(参考)設定データはHierarchyのシーン直下にあるFaceEmoオブジェクトに保存されているので削除してはいけない (下図)
もし削除した場合は復元が可能→マニュアル


●FaceEmo使用中と使用後にアバターの姿勢やポーズが変わったら

これは私のUnityの使い方が悪かった例として記録する
なお一時的にControllerを使用するのはアリらしい 削除を忘れなければ

誰かに同様のことが起きた時のための記録
unity操作中に素体の姿勢が斜めやAポーズになったら

・Overridesから ズレた全てのオブジェクトのTransformをRevertする
 斜め姿勢もAポーズも元に戻る

・AポーズからTポーズに戻すだけならツールを使用するのも可能
 VRCDeveloperTool にある HumanoidPoseResetter (ver1.2)
サイトより「アニメーションオーバーライドの設定等で変更されてしまったポーズを修正するツール」

メニュー>VRCDeveloperTool → HumanoidPoseResetter → TargetObjectに対象アバターを入れる → Reset Poseを押すこの操作をHierarchyにある2体に行ってリセットできた




【表情のアイデンティティ】

どの表情からでも 常時リップシンクで口が動くようにする

●FaceEmoでリップシンクする

必要な要点を記録する

●リップシンクしたい表情設定にて2つのチェックを入れる マニュアル
・リップシンク有効
・口変形キャンセル有効
(私の場合は全ての表情に設定する)

●Face Emo Launcher Componentにて
「口変形キャンセル用シェイプキー」を設定する  マニュアル
・口と舌のシェイプキー全てを登録する
(omegaとfangを除く:mouth_close_omega・mouse_fang1_L・mouse_fang1_R・mouse_fang2_L・mouse_fang2_R)

●FXレイヤーを編集する 次のいずれでも可
目的:FaceEmoではデフォルト表情は無効になるが FXレイヤーに関連する範囲にシェイプキー「vrc.v_**」が残っているとリップシンクが動作しないので駆逐する

(1)元のデフォルト表情アニメーションは使用しないので表情設定を削除してしまう
FXレイヤーにある Left HandとRight Handレイヤー → 全部のステート内のMotionをNoneにする

(2) FXレイヤーのLeft HandとRight Handレイヤーを削除する
(両手の指のハンドサインは問題なく動作した。)

現時点では2を採用

●上記の理由により 「アバターから表情パターンを読み込む」を実行した場合は 読み込まれた表情アニメーションを全部チェックして シェイプキー「vrc.v_**」を全て削除する

読み込んだ表情アニメーションファイルの保存場所はここ (下図)
Assets > Suzuryg > Face Emo > Imported > (読み込み日時フォルダ)


●基本コンセプト

リアル側の2本の立派な八重歯の存在を アバターで表現する

●表情セッティング

FaceEmoで表情を作る際の基礎セッティング

・口を閉じている表情に設定するシェイプキー
   mouth_close_omega = 25
・口を開けている表情に設定するシェイプキー
   mouse_fang1_L =100
   mouse_fang1_R =100

25だよ


【リップシンクで口が開いた時だけ牙を出す】

口を閉じているときは牙が見えなくてもomegaで表現できるのはよいが
このままではリップシンクで口が動いているときに牙が出ない
口が動いたときは牙が出るようにする必要がある

FXレイヤーでは実現不可能だった
また FXレイヤーとFaceEmoより後に処理が行われるようにする必要があり 
下記のように作成する


●アニメーションclipの作成

FaceEmoで牙が生えた表情AnimationClipをFaceEmoで作成して
それを利用する

ファイル名「Voice Fang」
・mouth_close_omega =25
・mouse_fang2_L =100
・mouse_fang2_R =100

●アニメーションコントローラーの新規作成

プロジェクトタブの任意の場所で右クリック→Create→Animator Controller
ファイル名「Voice Fang」

下図の通りに設定
要点:声を出したときには上記のアニメーションclipが再生される

●Hierarchyに仕込む

PrefabOriginのHierarchyに仕組みを入れる

Hierarchyに空のオブジェクトを作って FaceEmoPrefabより下に配置
Add ComponentからMA Merge Animatorを付ける
下図のように設定する

※「相対的」だと発動しなかった→「絶対的」で確実に発動するようにする


デバック風景1
デバッグ風景2



【髪と耳の色合わせ】

<想定したけど そうはいかなかった項目>
●テクスチャやPSDファイルをクリスタで開いてグレースケールにする
 乗算用レイヤーを用意して カラーをスポイトから色を取って塗る
●髪の色は耳の色がベースになる
 耳はベースに含まれる部分なので 髪の色は耳が基準になる
 つまり 髪型が耳の色に染まることになる

結局普通に色を変えたが テーマカラーをなるべく参考にした


●テーマカラーのカラーパレットの用意と管理

クリスタのclipファイルにて シンプルな色が付いた板を用意する
保存場所は ドライブ側:10_VRChat_Works\40_Avatar

計4色     (髪色2色はやりながら再検討)
1・紅色      RGB: R:196 G:26 B:65
2・髪色(雪色)  RGB: R:234 G:239 B:243
3・髪色(ピンク) RGB: R:255 G:239 B:249
4・真っ白     RGB: R:255 G:255 B:255

紅色と雪色の参考になったサイト
https://nippolle.net/category/jptraditionalcolors

クリスタ左下のカラーパレットのところで
描画色をRGB値から指定して 名前を付けて保存する
調整の過程でテーマカラーセットの再調整あるかも

・耳としっぽをテーマカラーで染めてみる
 全体:ピンク テーマカラーのピンクなるべく反映
 先端:紅色  薄い紅色にした

●lilltoonの色調整と保存

テクスチャを適用した後に lilltoon側の「色調補正」で色を合わせられる
保存操作にて 調整した状態の色のテクスチャが保存される

調整後に「焼き込み」ボタンを押す→pngファイルの保存ダイアログ→保存する→自動で保存したテクスチャが適用される

※この方法ではProject内にテクスチャが保存されるので
”アバターごとのカスタムフォルダ”にコピーしておくこと!




ピンク色については 本当は目指す髪色があります
どうやって発色したらいいのかわかりません





 

【 再現アバター作成 】

元の姿をPrefabVariantで再現した
Transformの値など わかる範囲で壊れたプロジェクトを参照する
それ以外は改めて設定する

●衣装 スカートのPhysBone設定の記録

PhysBoneの項目について ためになる情報があるnote記事
(軽量化に着手する時が来たら読む予定の記事)


今回新たに追加する機能もある

●デバッグ用アニメーション実行の仕込み

プレイモードにしただけでチェック用アニメーションを実行する方法

Assets>Check_Animフォルダに
チェック用アニメーションファイルを用意(画像参照)

・右クリック>Create>AnimatorController
・出来たControllerをリネームしてダブルクリック
・開いたAnimatorタブのBaseLayerのグリッド内に
 アニメーションファイルをドラッグすると オレンジ色ステートができる
・AvatarルートのAnimatorコンポーネントのControllerに
 作成したAnimatorControllerをドラッグ

以降はプレイモードにしただけで デバッグ用アニメーションが実行される

【注意】 使用が終わったらControllerの設定をDeleteして空にする!
入れっぱなしだとUnityでは不具合が起きやすいとのこと
詳細はFaceEmoの~ポーズが変わったらを参照


●MA Visible Head Accessory 自分の髪が見える

着用した髪型に適用する

マニュアルより 「このコンポーネントを付けることで、Head以下のGameObjectが一人視点で表示されるようにできます。」

撫でられても見えてないと状況がわからないし感覚を得るのは難しいので助かるかも
ViewPointの位置も重要な気がする

マニュアルより要約
・着用した髪型のHeadボーンの子オブジェクトにコンポーネントを追加するだけ 設定はない
・PhysBonesで操作されたオブジェクトの子では使えない(ルートには使える)
・前髪が邪魔になることがあるので要注意

どのオブジェクトにコンポーネントを追加するかは選択がちょっと難しいのでいろいろ試してみること

一人称の視点を確認するためのツール:AV3Emulator
使い方は自分用note記事に記載した
https://note.com/akari_vr_jp/n/nbe75eca9e91b#904b2aee-fea5-44ef-bd21-11657d8c08c6



●前髪の半透明化

前髪のテクスチャを編集し 透過用のグラデーションマップを作成する
・黒が透過の対象色
・白黒反転が必要な場合あり   下図参照
・一部を濃く編集することも可能 下図参照
・シェーダーの設定       下図参照


【改変のセッティングメモ】

徒然に要点を書いていく

●半透明越しに衣装や髪が消える!?  RenderQueueの設定

例)水面・スライム体・レース生地など越しで見ると消える

シェーダーのRenderQueueの数値によって描画の優先順位があるそうで
数値が小さい方が優先されるので 対策は数値を下げること

場所 liltoon>基本設定>基本設定>RenderQueue
透けない任意の概算の規定値  2100 (Geometry) とする

メモ
透けた参考値     2450 (?)
以下透けない
・デフォ 顔/身体/服  2000 (FromShader)
・デフォ 髪      2460 (FromShader)
・バスタオル衣装の設定 意外と低くない(購入者のみ知る)



だいたい固まってきたので改変してみる

改変1作目! YSSのライブ用にかなり頑張りました

今できることの全部を盛り込んで
自然な挙動になるようにできる限り細かい調整をしてみました

はい 寝間着ーー


バスタオル衣装できた! (未公開)



・指ペンのパーティクル数を減らしてRateを半分にした
 ぶいちゃ内でのDL容量がちょっびっと減った

 ======== 9/27 ここまで ========


未対応メモ

・unity2022から マテリアルにもvaliantがあると知った
  → 何かで使用すると思う

・案)耳の赤くないところのマスクを作ってはどうか?
  → 次回作あたりでやりたい

・睡眠用の表情を作って適用する

・配下Variantをごっそりアップロードしてくれるやつ 入れたい
Continuous Avatar Uploader
https://github.com/anatawa12/ContinuousAvatarUploader/blob/master/README.ja.md
●試験1回目成功  マニュアルより
・Project欄でアバターのPrefabを選択し、右クリックしてCreate/Continuous Avatar Uploader/Group of Variants from Prefab Group from Prefab Variants of the Prefabを選択することで、選択したプレハブの子孫のPrefab Variantを含むAvatar Upload Setting Groupを作成することができます。
・PC Windows アップ済みアバターはチェック=オン
・Versioning System チェック=オン  V1.

これをOriginに実施しUpload Allをクリック → チェックオンのVariantアバターのみが順次アップロードできたことを確認出来た
個別にアップも可能な様子
Variantを登録しておいて全部でも個別でもアップできそう

この内容を後日記載する

・liltoon 距離フェード 調べる
・ぶいちゃメニュー グラフィックス メモする

 ======== 9/28 ここまで ========


次の課題
ハロウィン衣装着用して そのVariantとして軽量化モデルを作る
次のライブは10/26



メモ
購入済み:ハロウィン・バスタオル・普段着・運動着
これから注目のショップ:むむ・るるく
(他にも 着ることを夢見て買ってある衣装がたくさんあるよっ!)
その前に下記の内容を消化が必要か?


・lilAvatarUtilsも見る

特にSaftyOnのところは髪と耳以外は真っ黒だった  何をしたらいいのだろうか?

 ・追々この記事も見る 使い方についてきちんと学んでいないので要復習


●ネイル

季節感やTPOもあると思うので今後のアバターPrefabVariant個々に着用を検討する  オンオフギミックはどうしようか?


================
改変アバターを数体作成すれば体制が安定してくると思う
その後に軽量化に取り組む
================



【その他】

●デフォルトのファルリアちゃん

デフォルトにアイデンティティの要素を取り入れたアバターも作成する
これも一つのアイデンティティだと思う

新たにPrefabOriginで作成する


●Quest対応

しない
難しいんでしょ? そんな余裕ない



【軽量化への対応】

軽量化するアバターの数は少ないと思われる
アバターを数体作成して 改変が軌道に乗ってから取り組む予定

<メモ> ツール検討

lilAvatarUtilsも見る


軽量化まで出来てケジメが付いたと言える


この記事が気に入ったらサポートをしてみませんか?