Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VRCSDKなしでもManual bake avatarが押せるようにする Ver. ndmf + MA1.8.0 + AAO1.5.1 #7

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

kaikoga
Copy link
Owner

@kaikoga kaikoga commented Sep 29, 2023

このPRに関する議論はこちらのDiscussionsへお願いします: bdunderscore#467


#1 の続編。

(これは本家がVRCSDKへの依存性を解消するまでの間メンテされるパッチです)

単にVRMでもModular Avatarを使いたい人向け

VRCSDKを入れなくてもModular AvatarとAAOが使えます。
Modular Avatar 1.8.0 と Avatar Optimizer 1.5.1 (いずれも予定/このバージョン番号は予告なく変更されます)をベースに改変されています。

一部の機能は動きません。一部のコンポーネントはVRCSDKが入ってないプロジェクトで使うと設定内容が破壊され、VRCSDKが入っているプロジェクトに戻しても復元されません。
VRCSDKが入っていないために使えないコンポーネントは名前に (Unsupported) がつきます。主にPhysBone系とかMenu系がそうなります。

インストール

自明な理由から、このModular AvatarのforkはOpenUPMなどのUPMリポジトリに登録されていません。
これを読んでいるということはVCC/VPMは利用できないはずなので、代わりにUPMのGit依存性でインストールします。
JSONファイルを編集する場合は、適当なテキストエディタで.jsonファイルを開いてください。

  1. Gitが必要になりますので、インストールされていない場合はGitをインストールしてください。
  2. Modular Avatarをインストールしたいプロジェクトの Packages/manifest.json に以下の項目を足してください。(カンマはいい感じに補ってください)
"com.anatawa12.avatar-optimizer": "https://github.com/kaikoga/AvatarOptimizer.git#vista",
"com.anatawa12.custom-localization-for-editor-extension": "https://github.com/anatawa12/CustomLocalization4EditorExtension.git#v1.1.0",
"nadena.dev.modular-avatar": "https://github.com/kaikoga/modular-avatar.git#vista",
"nadena.dev.ndmf": "https://github.com/bdunderscore/ndmf.git#1.2.1",
"net.kaikoga.ndmf-deps": "https://github.com/kaikoga/ndmf-deps.git#main",

空のプロジェクトにインストールする場合の手順

VRCSDKと一緒に本forkを使う場合の手順

  • "net.kaikoga.ndmf-deps" の行はVRCSDKが入っているプロジェクトでは入れないでください(VRCSDKが入ってる場合は上から4行だけ使います)
  • VCCでインポートしたModular Avatar / Avatar Optimizerが優先されます。本forkを利用する場合、VCC側のModular Avatar / Avatar Optimizerは外してください。

VRCSDK+本家MA+本家AOをセットアップしたアバタープロジェクトからVRCSDKを抜く場合の手順

  • Packages/vpm-manifest.json と、VCCでPackages 以下に追加されたVPMパッケージを手動で削除してください。
  • 「Project Settings」の「Script Define Symbols」に VRC_SDK_VRCSDK3 が設定されているはずですが、これが入っていると動かないツールがある(lilToonなど)ので削除することをお勧めします。

アップデート

Packages/package-lock.json を削除すると、Git依存性でインポートされたUPMパッケージの最新版が再インポートされます。
確率は低いですが、Git依存性でインポートされたUPMパッケージが他にもある場合、Gitプロジェクトが壊れることがあるので気をつけてください。

ハマリどころ

  • VRM0のMetaは素体に刺してもたぶん大丈夫です。
  • VRM1のVRMInstanceは素体に刺してもたぶん大丈夫ですが、その場合はVRM1のHumanoidも一緒に刺してください。
  • AAOのTrace And Optimizeを使うとVRM0のBlendShapeProxy / VRM1のExpressionは死にます。(BlendShapeをインデックス管理してるため)
    AAOがVRMに対応するまでは、表情に使うSkinnedMeshRendererのBlendShapeは最適化しないようにしてください。
  • VRM0 / VRM1のFirstPersonは壊れるのでBake後に刺すか、Renderersを空にしてください。
    • つまり合成前にVRM0のFirst Person Offset ( = View Position) を指定することはできません。運用でカバーしてください。
  • Spring Boneの合成や最適化は特に何もしていないので、使えたらラッキーと思ってください。(素体側に刺しておけば大丈夫な気がします)
  • VRMで使う場合、 (Unsupported) ってついてない MA / AAO の一部コンポーネントも動きません。Constraintを使う系はダメです。

技術的詳細

DLLへの依存性はndmf-depsに切り出しました。

ndmf の改変

  • MAやAAOからVRCAvatarDescriptorを取り除く対応に伴い、いくつかのユーティリティメソッドを RuntimeUtil 経由で公開しています。

MA の改変( AAO も方針は一緒)

  • VRCSDKがインストールされているときだけ Version Defines の仕組みで MA_VRCSDK3_AVATARS コンパイルフラグ(lilToonに命名規則を合わせました)がセットされます
  • アバターへの参照をVRCAvatarDescriptorで表現している箇所は、ndmfのBuildContextかAnimatorかTransformのうち、いずれか動く方に置き換えました
    • Transformで取り回すよりはAvatarReference型をndmfで定義してラップしたほうがいい気もしています
  • アバターへの参照 以外 のVRCSDKへの依存を MA_VRCSDK3_AVATARS で囲います
    • (VRCSDKによって)VRCプロジェクトではScripting Define Symbolsに設定されているはずの VRC_SDK_VRCSDK3 は参照しません。
  • Runtimeではコンポーネントは残りますが、VRCのデータ型に依存した設定項目は消えます
  • EditorではVRC依存の解消が難しいパスやインスペクタは削除しています

@kaikoga kaikoga changed the title VRCSDKなしでもManual bake avatarが押せるようにする Ver. ndmf + MA1.8.0 VRCSDKなしでもManual bake avatarが押せるようにする Ver. ndmf + MA1.8.0 + AAO1.5.0 Sep 30, 2023
@kaikoga kaikoga changed the title VRCSDKなしでもManual bake avatarが押せるようにする Ver. ndmf + MA1.8.0 + AAO1.5.0 VRCSDKなしでもManual bake avatarが押せるようにする Ver. ndmf + MA1.8.0 + AAO1.5.1 Oct 1, 2023
@kaikoga kaikoga force-pushed the vista branch 2 times, most recently from b369c21 to eaa5de6 Compare October 5, 2023 16:48
@kaikoga
Copy link
Owner Author

kaikoga commented Oct 8, 2023

ndmf 1.2.1 に必要な実装が入ったので参照するndmfをndmf 1.2.1に変更

@kaikoga
Copy link
Owner Author

kaikoga commented Oct 8, 2023

modular-avatar のディレクトリ構成変更に追従( Packages/manifest.json を修正してください)

@kaikoga
Copy link
Owner Author

kaikoga commented Oct 26, 2023

AvatarOptimizerはNon-VRCSDK対応まで完了(つまりkaikoga/AvatarOptimizerのvistaの内容が全て反映)したため、1.6の安定版が出たら追従する

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant