Compatibility Notes with VRCFury VRCFuryとの互換性について #860
Replies: 5 comments
|
I have updated this announcement with NDMF 1.3.0 release. NDMF 1.3.0のリリースに伴い、このお知らせを更新しました。 |
|
VRCFury 1.712.0 breaks NDMF again so I updated the announcement to suggest use 1.711.0. VRCFury 1.712.0でまたNDMFが破壊されたため、1.711.0を使用するようにアナウンスを更新しました。 |
|
I have updated announcement as we have been informed that there is no problem with VRCFury 1.712.0 and VRCFury 1.715.0 is less problematic. VRCFury 1.712.0に関して問題なく、VRCFury 1.715.0のほうが問題がないとの情報があったため更新しました。 |
|
I have updated documentation with latest NDMF and VRCFury information. |
|
I’ve updated the discussion with information about compatibility issues related to VRCFury’s automatic renaming fixes and AAO, based on a recent report. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
日本語が下にあります。
In English
This is notes about compatibility with VRCFury.
This information is heavily depends on version of NDMF and VRCFury.
Current information is based on NDMF 1.4.2 and VRCFury 1.859.0.
Since this information can be changed at any time, I put this on discussions. Please check the latest information.
If you have questions, Please ask in Q&A category.
Short notes for VRCFury users
Run Preprocess Avatar Hookis enabled. It was not enabled by default for old Av3Emulator.Technical information
General information with non-NDMF tools
First, I do not guarantee compatibility with non-destructive tools that do not use NDMF, especially when starting Play Mode.
In general, for actual build time,
IVRCSDKPreprocessAvatarCallback.callbackOrderworks well for guaranteeing compatibility (processing ordering).For example, some shaders optimizes their shader or material in
IVRCSDKPreprocessAvatarCallback.OnPreprocessAvatarand it works well with AAO.If you're using Av3Emulator, thanks to the feature in Av3Emulator that calls
IVRCSDKPreprocessAvatarCallbackwhen play mode,IVRCSDKPreprocessAvatarCallback.callbackOrderworks well even in play mode.If you're old user of Av3Emulator, please make sure
Run Preprocess Avatar Hookis enabled. It was not enabled by default for old Av3Emulator.Improvements in NDMF 1.3.2 and VRCFury 1.712.0
Starting with NDMF 1.3.2 and VRCFury 1.712.0 or later, both NDMF and VRCFury were changed to use
IVRCSDKPreprocessAvatarCallbackfor entering Play Mode.Both NDMF and VRCFury will calls
IVRCSDKPreprocessAvatarCallbackwhen entering Play Mode incallbackOrderorder.In addition, for environments with Av3Emulator, NDMF and VRCFury will automatically enable
Run Preprocess Avatar Hookso thatIVRCSDKPreprocessAvatarCallbackis called when entering Play Mode.This makes AAO works correctly on Play Mode.
Improvements in NDMF 1.3.0
In NDMF 1.3.0, NDMF changed something to improves compatibility with VRCFury.
In NDMF 1.3.0, NDMF skips Optimizing phase when entering Play Mode including called by VRCFury as a hack.
This makes VRCFury's gimmick work properly with AAO during Play Mode.
However, as a result, AAO become not applied in Play Mode unless you use Av3Emulator.
VRCFury problems (until NDMF 1.3.0)
There was two big problems for compatibility with VRCFury.
Those problems are worked around in NDMF v1.3.0 so those problems are no longer a problem.
First, VRCFury has ordering difference between Play Mode and Build.
NDMF executes the process during initializing the scene and VRCFury executes after scene initialization.
So VRCFury is executed after NDMF when entering Play Mode.
However, VRCFury has lower
callbackOrderthan NDMF Optimizing phase.So, VRCFury is executed before NDMF Optimizing when entering Build.
This makes VRCFury's gimmick may not work properly when entering Play Mode.
Second, VRCFury calls NDMF in incorrect way and timing.
Since VRCFury 1.648.0, VRCFury calls NDMF in their process as a hack.
However, the call completely breaks the Avatar since it executes Optimizing phase before executing VRCFury process.
This made VRCFury's gimmick may not work properly with AAO.
Plesase refer issue on VRCFury for more details
VRCFury 'fixes' may cause unexpected behavior
VRCFury applies some 'fixes' to the avatar if any of VRCFury component is added on the avatar.
However, some of such fixes will cause unexpected behavior if combined with AAO: Avatar Optimizer.
One known problem is compatibility with automatic renaming of objects in VRCFury.
VRCFury silently renames 2nd (or later) GameObjects with exactly same name by adding
(1)or others.This itself does not break thing in most case, but may cause problem with AAO Merge Skinned Mesh (MergeSMR) and mmd world compatibility.
By adding MergeSMR on new
Bodymesh with originalBodyas a source as shown below, you can merge multiple meshes with keeping MMD world compatibility.However, with VRCFury runs before AAO, VRCFury renames
Bodywith MergeSMR toBody (1).As a result, Avatar Optimizer will merge mesh to
Body (1)so mmd world compatibility will be lost.日本語 (Japanese)
VRCFuryとの互換性についての情報です。
この情報はNDMFとVRCFuryのバージョンに大きく依存しています。
現在の情報はNDMF 1.4.2とVRCFury 1.859.0をベースにしています。
この情報はいつでも変更される可能性があるため、ディスカッションに書きました。最新の情報を確認してください。
もし質問があればQ&Aカテゴリで質問してください
VRCFuryユーザー向けの情報
Run Preprocess Avatar Hookが有効であることを確認してください。古いAv3Emulatorでは規定で有効ではありませんでした。技術情報
NDMFを使わないツールとの一般的な情報
まずはじめに、私はNDMFを使わない非破壊ツールとの互換性について、特にPlay Mode開始時について保証しません。
一般には、実際のビルド時には、
IVRCSDKPreprocessAvatarCallback.callbackOrderが互換性(処理順序)を保証してくれます。例えば、多くのシェーダーは
IVRCSDKPreprocessAvatarCallback.OnPreprocessAvatarでシェーダーまたはマテリアルを最適化し、AAOとうまく動作します。Av3Emulatorを使用してる際には、Av3Emulatorのプレイモードに入るときに
IVRCSDKPreprocessAvatarCallbackを呼び出す機能のおかげで、IVRCSDKPreprocessAvatarCallback.callbackOrderによる互換性(処理順序)の保証がうまく動作します。もしAv3Emulatorの古いユーザの場合、
Run Preprocess Avatar Hookが有効であることを確認してください。古いAv3Emulatorでは規定で有効ではありませんでした。NDMF 1.3.2とVRCFury 1.712.0での改善
NDMF 1.3.2とVRCFury 1.712.0以降から、NDMFとVRCFuryはPlay Modeに入るときに
IVRCSDKPreprocessAvatarCallbackを使用するように変更されました。NDMFとVRCFuryのどちらも、Play Modeに入るときに
IVRCSDKPreprocessAvatarCallbackをcallbackOrderの順序で呼び出します。また、Av3Emulatorを使用している環境では、NDMFとVRCFuryはPlay Modeに入るときに
IVRCSDKPreprocessAvatarCallbackが呼び出されるように自動的にRun Preprocess Avatar Hookを有効にします。これにより、Play ModeでAAOが正しく動作します。
NDMF 1.3.0 での改善
NDMF 1.3.0では、NDMFはVRCFuryとの互換性を改善するための変更しました。
NDMF 1.3.0では、VRCFuryによるハック呼び出しを含めて、Play Modeに入るときにOptimizingフェーズをスキップします。
したがって、Play Mode中にVRCFuryのし掛けがAAOと併用時に正しく動作するようになりました。
しかし、その結果、Av3Emulatorを使用しない場合にはPlay ModeではAAOが適用されません。
VRCFury固有の問題 (NDMF 1.2.0まで)
VRCFuryとの互換性には2つの大きな問題がありました。
NDMF 1.3.0ではこれらの問題に対する回避策が入りました。そのためこれらの問題は今は発生しないと考えられます。
はじめに、VRCFuryはPlay ModeとBuildで順序が異なりました。
NDMFはシーンの初期化中に処理を実行し、VRCFuryはシーンの初期化後に実行します。
そのため、Play Modeに入るときにはNDMFの後にVRCFuryが実行されます。
しかし、VRCFuryはNDMFのOptimizingフェーズよりも低い
callbackOrderを持っています。そのため、Buildに入るときにはNDMFのOptimizingの前にVRCFuryが実行されます。
したがって、Play Modeに入るときにVRCFuryの機能が正しく動作しない可能性があります。
次に、VRCFuryはNDMFを間違った方法とタイミングで呼び出します。
VRCFury 1.648.0以降、VRCFuryはハックとして、自分の処理中にNDMFを呼び出します。
しかし、VRCFuryの処理を実行する前にOptimizingフェーズを実行するようにするため、この呼び出しは完全に間違っています。
したがって、VRCFuryの機能がAAOと併用時に正しく動作しない可能性がありました。
詳細はVRCFuryのissueを参照してください。
VRCFuryの'修正'が意図しない動作を作る可能性があります
VRCFury は、アバターに VRCFury コンポーネントが追加されると、いくつかの'修正'を自動的に適用します。
しかし、これらの修正の一部は、AAO: Avatar Optimizerと併用した場合に、予期しない動作を引き起こすことがあります。
既知の問題の一つが、VRCFury によるオブジェクト名の自動リネームとの互換性です。
VRCFury は、まったく同じ名前を持つ 2 個目以降の GameObject に対して、(1) などを付けて自動的にリネームします。
この動作自体は、ほとんどの場合は問題になりませんが、AAO のMerge Skinned Mesh(MergeSMR)機能や、MMD ワールドとの互換性において問題を引き起こす可能性があります。
以下のように、元の
Bodyをソースとして、新しいBodyメッシュに MergeSMR を追加することで、MMD ワールドとの互換性を保ったまま複数のメッシュを統合できます。しかし、AAO より先に VRCFury が実行されると、VRCFury は MergeSMR が付いた
BodyをBody (1)にリネームしてしまいます。その結果、Avatar Optimizer は
Body (1)に対してメッシュを統合することになり、MMD ワールドとの互換性が失われてしまいます。All reactions