diff --git a/.docs/content/docs/developers/component-api/index.ja.md b/.docs/content/docs/developers/component-api/index.ja.md new file mode 100644 index 000000000..b52cebcc9 --- /dev/null +++ b/.docs/content/docs/developers/component-api/index.ja.md @@ -0,0 +1,34 @@ +--- +title: Component Scripting API +--- + +# Component Scripting API + +Avatar Optimizer v1.7.0以降、アバターにAvatar Optimizerのコンポーネントを追加・設定するためのComponent APIを提供しています。 +このAPIを使用することで、Avatar Optimizerのコンポーネントを追加するツールやコンポーネントを作成することができます。 + +## Component APIが利用可能なコンポーネント {#supported-components} + +現時点では、すべてのコンポーネントがComponent APIで利用出来るわけではありません。 +Component APIが利用可能なコンポーネントの一覧は以下の通りです。 + +- `RemoveMeshInBox` - コンポーネントの追加と設定変更がサポートされています +- `RemoveMeshByBlendShape` - コンポーネントの追加と設定変更がサポートされています +- `TraceAndOptimize` - デフォルト設定での追加はサポートされていますが、設定変更はサポートされていません + +将来のバージョンで追加されるデフォルトで有効な機能との互換性を保つために、コンポーネントの設定変更を行う場合には注意が必要です。 +詳細については以下のドキュメントを参照してください。 + +## はじめに {#getting-started} + +Component APIを使用するには、assembly definitionファイルで`com.anatawa12.avatar-optimizer.runtime`を参照する必要があります。 +Avatar Optimizerはランタイムで動作しないため、ランタイムビルド向けで`com.anatawa12.avatar-optimizer.runtime`に依存してはいけません。\ +`com.anatawa12.avatar-optimizer.runtime`にあるいくつかのクラスは、将来のバージョンでランタイム向けビルドから除外される可能性があります。 +言い換えると、ランタイム向けのアセンブリで`com.anatawa12.avatar-optimizer.runtime`を使用するのは避けることをお勧めします。エディタ向けのアセンブリでのみ使用するようにしてください。 + +次に、コンポーネントの設定を変更する場合は、将来のバージョンで追加される機能との互換性を確保するために`void Initialize(int version)`メソッドを呼び出す必要があります。 +([動作の安定性](../../basic-concept/#behavior-stability)で説明されているように、)デフォルト設定は変更される可能性があります。\ +デフォルト設定は、`GameObject.AddComponent()`メソッドで追加されるコンポーネントに影響します。 +従って、Avatar Optimizerの将来のバージョンとの互換性を保つためには、使用するデフォルト設定のバージョンを指定して`Initialize`メソッドを呼び出す必要があります。 +デフォルト設定のバージョンは、`Initialize`メソッドのドキュメントに記載されているはずです。\ +`Initialize`メソッドを呼び出さなかった場合、コンポーネントが予期しない動作をしたり、将来的にエラーが発生したりする可能性があります。 diff --git a/.docs/content/docs/developers/component-api/index.md b/.docs/content/docs/developers/component-api/index.md new file mode 100644 index 000000000..e7b3f0a10 --- /dev/null +++ b/.docs/content/docs/developers/component-api/index.md @@ -0,0 +1,34 @@ +--- +title: Component Scripting API +--- + +# Component Scripting API + +Since Avatar Optimizer v1.7.0, Avatar Optimizer provides Component API to add Avatar Optimizer components to the Avatar. +By using this API, you can create tools or components that add Avatar Optimizer components. + +## Components that supported by Component API {#supported-components} + +Currently, not all components are supported by Component API. +Here is the list of components that are supported by Component API. + +- `RemoveMeshInBox` - Adding and configuring component is supported +- `RemoveMeshByBlendShape` - Adding and configuring component is supported +- `TraceAndOptimize` - Adding with default configuration is supported but configuring is not supported + +For components that supports configuring, to keep compatibility with future features that enabled by default, +you need extra attention for the configuration. See document below for more details. + +## Getting Started + +To use Component API, you have to reference `com.anatawa12.avatar-optimizer.runtime` assembly in your assembly definition file. +Since Avatar Optimizer does not work on the runtime, you should not depends on `com.anatawa12.avatar-optimizer.runtime` assembly for runtime build.\ +We may remove some classes from `com.anatawa12.avatar-optimizer.runtime` on runtime build in the future. +In other words, it's recommended to avoid use of `com.anatawa12.avatar-optimizer.runtime` in runtime assembly, you should use it only in editor assembly. + +Second, If you want to configure components, you have to call `void Initialize(int version)` method to ensure the compatibility with future features. +The default setting of Avatar Optimizer can be changed in the future (as described in [Behavior Stability](../../basic-concept/#behavior-stability)).\ +The default setting of Components will be affected to the components added with `GameObject.AddComponent()` method. +Therefore, to keep behavior compability with future versions, you have to call `Initialize` method with the version of default configuration you want to use. +The default configuration version should be described in the document of the `Initialize` method.\ +Without calling `Initialize` method, component will behave unexpectedly or you may get error in the future. diff --git a/.docs/content/docs/faq/index.ja.md b/.docs/content/docs/faq/index.ja.md index 2a779ff83..9535d94e0 100644 --- a/.docs/content/docs/faq/index.ja.md +++ b/.docs/content/docs/faq/index.ja.md @@ -6,12 +6,12 @@ weight: 2 # よくある質問 {#faq} Avatar Optimizerに関するよくある質問のリストです。 -他に質問がある場合は、[GitHub Discussions]または[Fediverse]でお気軽にお尋ねください。 +他に質問がある場合は、[GitHub Discussions]または[Fediverse (Misskey / Mastodon)][Fediverse]でお気軽にお尋ねください。 ## `AAO Trace and Optimize`コンポーネントを使用すると、アバターの振る舞いや見た目が変わる {#avatar-behavior-or-appearance-changed-when-using-aao-trace-and-optimize-component} `AAO Trace and Optimize`コンポーネントを使用して、アバターの振る舞いや見た目が変わってしまった場合は、(アバターがAvatar Optimizerの他のコンポーネントのバグ挙動に依存していない限り、)全てバグです。 -[GitHub Issues]や[Misskey][Fediverse] (Mastodon)、[Twitter]などから報告をお願いします。 +[GitHub Issues]や[Fediverse (Misskey / Mastodon)][Fediverse]、[Twitter]などから報告をお願いします。 ## メッシュが視界の中にあるのに非表示になってしまう {#mesh-is-invisible-even-though-it-is-in-the-field-of-view} @@ -53,6 +53,47 @@ BlendShapeに対してアニメーションされるメッシュを統合する この問題のissue: [#568](https://github.com/anatawa12/AvatarOptimizer/issues/568) +## OSCギミックで使用されているPhysBone / Contact Receiverが動作していない {#physbones-contact-receivers-that-are-used-in-the-osc-based-gimmick-are-not-working} + +`AAO Trace and Optimize`コンポーネントは、アバターの振る舞いを変えないように慎重に設計されています。 +しかし、技術的な理由から、`AAO Trace and Optimize`コンポーネントはPhysBone / Contact ReceiverコンポーネントがOSCギミックで使用されているかどうかを判断することができません。 + +最近のアバターは、PhysBone / Contact Receiverコンポーネントを使用した独自のギミックを持っていることがあるため、これらのコンポーネントを削除し忘れることがよくあります。 +そのため、`AAO Trace and Optimize`は、そのようなコンポーネントがOSCギミックで使用されていないと仮定して、それらが他の用途で使われていなければ削除します。 + +もちろん、仮定が正しいとは限らないため、PhysBone / Contact ReceiverコンポーネントをOSCギミックに使用している場合には、それらが使用されていると分かるようにアバターを調整してもらわなければならないかもしれません。\ +`AAO Trace and Optimize`は、アバター内のAnimatorにあるパラメーターと同じパラメーターが使用されているPhysBone / Contact Receiverコンポーネントを削除しないようになっています。 +そのため、OSCギミックで使用されるパラメーターを、Animator Controllerのパラメーター一覧やExpression Parameterに追加することで、これらのコンポーネントが削除されないようになります。 + +また、改善のための議論の材料として、OSCギミックで使われているPhysBoneやContact Receiverが削除された場合には、それらに設定されているパラメータ名を教えていただけると助かります。 +将来的に、有名なOSCギミックによって使用されるパラメーターの一覧を実装して、それらのパラメータが使用されている場合はコンポーネントを保持するような形を取るかもしれませんし、他の方法で対処するかもしれません。\ +以下のissueや[Fediverse (Misskey / Mastodon)][Fediverse]、[Twitter]などでお気軽にお知らせください。 + +この問題のissue: [#1090](https://github.com/anatawa12/AvatarOptimizer/issues/1090) + +## ビルド前のハードリミットチェックのせいでアバターをアップロードできない {#i-cannot-upload-the-avatar-because-of-pre-build-hard-limit-check} + +Avatar Optimizerなどの非破壊的なアバター改変ツールを使うと、元々ハードリミットを超えているようなアバターでも、ビルド後にはハードリミットを超えないようになることがあります。 +しかし、VRCSDKのコントロールパネルにあるアップロードボタンは、シーン上のアバターがハードリミットを超えている場合には押せないようになっています。\ +そのような場合でも、以下のような方法を使って、ビルド前のハードリミットチェックを飛ばしてアップロードすることができます。 +(ビルド後のハードリミットチェックも存在するため、ビルド後にハードリミットを超える場合は以下の方法でもアップロードに失敗します。) + +- `Manual bake avatar`で生成したアバターをアップロードする。\ + + アバターのGameObjectを右クリックして出てくるメニューの`NDM Framework`から`Manual bake avatar`をクリックすると、非破壊ツールによる処理を手動で適用することができます。 + `Manual bake avatar`は初めにアバターを複製し、その複製に対して非破壊ツールの処理を適用させるため、元のアバターは変更されないままになります。 +- Sayamame-beansの[Upload without pre-check]を使用してアップロードする。 + + [Upload without pre-check]は、ビルド前のハードリミットチェックをスキップしてアップロードするためのツールです。 +- kurotuの[VRCQuestTools]を使用する + + [VRCQuestTools]は、アバターをAndroid / Quest対応アバターに変換するためのツールです。\ + このツールには、ビルド前チェックをスキップしてアバターをAndroid向けにビルドするための[VQT Avatar Builder]という機能が含まれています。 + +[Upload without pre-check]: https://github.com/Sayamame-beans/Upload-without-preCheck?tab=readme-ov-file#upload-without-pre-check +[VRCQuestTools]: https://kurotu.github.io/VRCQuestTools/ +[VQT Avatar Builder]: https://kurotu.github.io/VRCQuestTools/docs/references/main-menu/show-avatar-builder + ## Avatar Optimizerの開発を支援したい {#i-want-to-support-the-development-of-avatar-optimizer} Avatar Optimizerの開発を支援したい場合、[GitHub Discussions]でのフィードバックや[GitHub Issues]でのバグ報告、機能追加の要望、またプルリクエストなどを歓迎しています。 diff --git a/.docs/content/docs/faq/index.md b/.docs/content/docs/faq/index.md index 2ce65d346..1d55760d0 100644 --- a/.docs/content/docs/faq/index.md +++ b/.docs/content/docs/faq/index.md @@ -6,14 +6,14 @@ weight: 2 # Frequently Asked Questions {#faq} Here is the list of frequently asked questions about Avatar Optimizer. -If you have some other questions, please feel free to ask on the [GitHub Discussions] or on [Fediverse]. +If you have some other questions, please feel free to ask on the [GitHub Discussions] or on [Fediverse (Misskey / Mastodon)][Fediverse]. I'm usually use Japanese, but you can ask me with English. ## The behavior or appearance of the avatar is changed when using `AAO Trace and Optimize` component {#avatar-behavior-or-appearance-changed-when-using-aao-trace-and-optimize-component} If the behavior or appearance of the avatar is changed when using `AAO Trace and Optimize` component, it is always a bug unless you depend on bugs in other components of Avatar Optimizer. -Please report it on [GitHub Issues], [misskey][Fediverse] (mastodon), [Twitter], etc. +Please report it on [GitHub Issues], [Fediverse (Misskey / Mastodon)][Fediverse], [Twitter], etc. ## Mesh is invisible even though it is in the field of view {#mesh-is-invisible-even-though-it-is-in-the-field-of-view} @@ -55,6 +55,50 @@ If there is a conflict, a warning will be displayed, so please check the warning Issue of this problem: [#568](https://github.com/anatawa12/AvatarOptimizer/issues/568) +## PhysBones / Contact Receivers that are used in the OSC-based gimmick are not working {#physbones-contact-receivers-that-are-used-in-the-osc-based-gimmick-are-not-working} + +The `AAO Trace and Optimize` component is carefully designed to not change the behavior of the avatar. +However, for technical reasons, the `AAO Trace and Optimize` component cannot detect some PhysBone / Contact Receiver components are used in the OSC-based gimmick or not. + +Some modern avatars have their own gimmicks based on PhysBone / Contact Receiver components, so those components will be forgotten to remove in most cases. +Therefore, `AAO Trace and Optimize` will assume that such components are not for OSC-based gimmick, and remove them if they are not used for other ways. + +Of course, this assumption is not always the case, so if you are using PhysBone / Contact Receiver components for the OSC-based gimmick without Animator or Expressions, +please configure your avatar to detect them as used in the avatar.\ +`AAO Trace and Optimize` will not remove them if they are used in the Animator in the avatar. +So, by adding parameters used in the OSC-based gimmick to the parameter list of Animator Controller or Expression Parameters, +such components will not be removed. + +In addition, for future discussion, if your OSC-based gimmick is removed by `AAO Trace and Optimize`, +could you let us know the name of parameter used in the OSC-based gimmicks? +I may implement list of parameters likely to be used by OSC and keeping components for those parameters, or other ways to prevent removing them in the future. +Please feel free to contact on the GitHub issue below, [Fediverse (Misskey / Mastodon)][Fediverse] or [Twitter]. + +Issue of this problem: [#1090](https://github.com/anatawa12/AvatarOptimizer/issues/1090) + +## I cannot upload the avatar because of pre-build hard limit check {#i-cannot-upload-the-avatar-because-of-pre-build-hard-limit-check} + +Avatar Optimizer and some other non-destructive avatar modification tools may make your avatar not exceed the hard limit of VRChat. +However, the upload button on the VRCSDK Control Panel will be disabled if the hard limit is exceeded with on-scene Avatar. +You may use the following methods to skip pre-build hard limit check. +Please note that those methods will not skip the post-build hard limit check. + +- Manual bake avatar before uploading the avatar. + + You can use `NDM Framework/Manual bake avatar` on the context menu of the Avatar GameObject to apply non-destructive tools before uploading the avatar. + This will clone your avatar and apply non-destructive tools to the cloned avatar, so your original avatar will not be modified. +- Use [Upload without pre-check] by Sayamame-beans. + + [Upload without pre-check] is a tool that allows you to upload the avatar without pre-build hard limit check. +- Use [VRCQuestTools] by kurotu. + + [VRCQuestTools] is a tool to easily convert your avatar to Android / Quest compatible avatar.\ + As a part of the tool, [VQT Avatar Builder] allows you to upload the avatar without pre-build hard limit check for Android build. + +[Upload without pre-check]: https://github.com/Sayamame-beans/Upload-without-preCheck?tab=readme-ov-file#upload-without-pre-check +[VRCQuestTools]: https://kurotu.github.io/VRCQuestTools/ +[VQT Avatar Builder]: https://kurotu.github.io/VRCQuestTools/docs/references/main-menu/show-avatar-builder + ## I want to support the development of Avatar Optimizer {#i-want-to-support-the-development-of-avatar-optimizer} If you want to support the development of Avatar Optimizer, feedback on [GitHub Discussions], bug reports, feature requests, etc. on [GitHub Issues], and pull requests are welcome. diff --git a/.docs/content/docs/reference/merge-toonlit-material/index.ja.md b/.docs/content/docs/reference/merge-toonlit-material/index.ja.md index 73787041b..8383cb810 100644 --- a/.docs/content/docs/reference/merge-toonlit-material/index.ja.md +++ b/.docs/content/docs/reference/merge-toonlit-material/index.ja.md @@ -13,6 +13,9 @@ weight: 25 他のシェーダーのサポートも追加する可能性があります。(サードパーティシェーダーでも対応します) もし対応して欲しいシェーダーがあれば、[issue][issue]を書いてください。 +このコンポーネントは新しいマテリアルを作成するため、このコンポーネントで統合されたマテリアルを使用しているマテリアルスロットは`AAO Merge Skinned Mesh`コンポーネントで統合されません。 +別々のメッシュで使用されているマテリアルを纏めて統合したい場合は、`AAO Merge Skinned Mesh`コンポーネントのあるGameObjectと同じGameObjectに`Merge ToonLit Material`コンポーネントを追加する必要があります。 + ## 設定 {#settings} `統合したマテリアルを追加`をクリックして、統合後のマテリアルを追加します。 diff --git a/.docs/content/docs/reference/merge-toonlit-material/index.md b/.docs/content/docs/reference/merge-toonlit-material/index.md index f4a5efc4f..6b5fa1d17 100644 --- a/.docs/content/docs/reference/merge-toonlit-material/index.md +++ b/.docs/content/docs/reference/merge-toonlit-material/index.md @@ -13,6 +13,9 @@ This component currently only supports `VRChat/Mobile/Toon Lit` because I believ but I may add support for other shaders. (also for third-party shaders) If you want other shader support, please write a [issue][issue] +This component will create new materials thus material slots which have the materials created by this component will not be merged by `AAO Merge Skinned Mesh` component. +You should add `Merge ToonLit Material` to the GameObject which has `AAO Merge Skinned Mesh` component if you want to merge materials from multiple renderers. + ## Settings Click `Add Merged Material` to add merged material. diff --git a/.docs/content/docs/reference/trace-and-optimize/index.ja.md b/.docs/content/docs/reference/trace-and-optimize/index.ja.md index 38ea0a184..c5d77e31a 100644 --- a/.docs/content/docs/reference/trace-and-optimize/index.ja.md +++ b/.docs/content/docs/reference/trace-and-optimize/index.ja.md @@ -26,7 +26,8 @@ Trace and Optimizeは「**見た目に絶対に影響させてはならない** - `BlendShapeを自動的に固定・除去する`\ アニメーションなどで使われていないか、常に同じ値になっているBlendShapeを自動的に固定・除去します。 - `使われていないObjectを自動的に削除する`\ - アニメーションなどを走査して、使われていないObject(GameObjectやコンポーネントなど)を自動的に削除します。 + アニメーションなどを走査して、使われていないObject(GameObjectやコンポーネントなど)を自動的に削除します。\ + また、切り替えるものと一緒に使われていて、他の方法で使われていないPhysBooneコンポーネントを自動的に切り替えるようにします。 - `endボーンを残す`\ 親が削除されていないendボーン[^endbone]を削除しないようにします。 - `PhysBoneの設定を最適化する`\ diff --git a/.docs/content/docs/reference/trace-and-optimize/index.md b/.docs/content/docs/reference/trace-and-optimize/index.md index 8a58dd409..9227bf9e7 100644 --- a/.docs/content/docs/reference/trace-and-optimize/index.md +++ b/.docs/content/docs/reference/trace-and-optimize/index.md @@ -27,7 +27,8 @@ Currently the following optimizations are applied automatically. - `Automatically Freeze BlendShape`\ Automatically freezes BlendShapes which are always the same value or unused in animation, etc. - `Remove unused Objects`\ - By scanning animation etc., automatically removes unused Objects (e.g. GameObjects, Components). + By scanning animation etc., automatically removes unused Objects (e.g. GameObjects, Components).\ + In addition, this will automatically toggle PhysBone Components if they are only used by toggled objects. - `Preserve EndBone`\ Prevents removing end bones[^endbone] whose parent is not removed. - `Optimize PhysBone Settings`\ diff --git a/.docs/content/docs/tutorial/basic-usage/index.ja.md b/.docs/content/docs/tutorial/basic-usage/index.ja.md index e325d3cf9..0b77ad2e7 100644 --- a/.docs/content/docs/tutorial/basic-usage/index.ja.md +++ b/.docs/content/docs/tutorial/basic-usage/index.ja.md @@ -17,6 +17,9 @@ title: 基本的な使い方 - 揺らす対象として存在するメッシュ[^mesh]が常に無効になっているPhysBoneなどのように、揺らす必要のないPhysBoneが有効になっている場合は計算負荷が余分に発生してしまいます。 - アニメーションしたりPhysBoneで揺らしたりすることのないボーンの統合 - 服のボーンを素体のボーンに入れ子状にして着せるような場合には、それ自身を動かすことがないボーンが多く発生します。そのようなボーンは余分な負荷を発生させてしまいます。 +- 一緒に切り替えていたり、切り替えることがなかったりするメッシュ同士の統合 + - アバターに服が1着しかない場合、体、髪、服などを別々のメッシュにしておく必要はないかもしれません。 + - 切り替え可能な複数の服がある場合でも、体、髪、下着などを別々のメッシュにしておく必要はないかもしれません。 AvatarOptimizerでは、アバターのルートに`AAO Trace And Optimize`コンポーネントを追加するだけで、これらの最適化を自動で行うことができます! @@ -32,13 +35,10 @@ AvatarOptimizerでは、アバターのルートに`AAO Trace And Optimize`コ AAO: Avatar Optimizerは非破壊改変ツールであり、Playモードに入るときかアバターをビルドするときに処理が行われるため、アップロードを行うのに特別な手順は必要ありません。 通常と同じように、VRCSDKのControl Panelからアバターをアップロードしてください。 -ただし、Android(Quest)向けアップロードを行う場合などにおいて、Avatar Optimizerの最適化等によって制限の範囲内に収まるにも関わらず、VRCSDKのビルド前チェックの時点で制限を超過していてアップロードボタンが押せなくなっている場合には、以下の方法が使用できます。 +ただし、Android(Quest)向けアップロードを行う場合などにおいて、Avatar Optimizerの最適化等によって制限の範囲内に収まるにも関わらず、 VRCSDKのビルド前チェックの時点で制限を超過していてアップロードボタンが押せない場合があります。\ +ビルド前チェックをスキップする方法はいくつかあります。詳しくは[よくある質問][skip-hard-limit-faq]を参照してください。 -- `Manual bake avatar`を使用して生成したアバターをアップロードする。\ -(アバターのGameObjectを選択した後、Unityウィンドウ上部のToolsから、`NDM Framework`の中にある`Manual bake avatar`を押す) -- Sayamame-beansによる[Upload without pre-check]を使用してアップロードする。 - -[Upload without pre-check]: https://github.com/Sayamame-beans/Upload-without-preCheck?tab=readme-ov-file#upload-without-pre-check +[skip-hard-limit-faq]: ../../faq/#i-cannot-upload-the-avatar-because-of-pre-build-hard-limit-check {{< hint info >}} @@ -71,6 +71,8 @@ AAO: Avatar Optimizerは非破壊改変ツールであり、Playモードに入 ![remove mesh by BlendShape](./remove-mesh-by-blendshape.png) + diff --git a/.docs/content/docs/tutorial/basic-usage/index.md b/.docs/content/docs/tutorial/basic-usage/index.md index bec5f3ef1..3752e2d12 100644 --- a/.docs/content/docs/tutorial/basic-usage/index.md +++ b/.docs/content/docs/tutorial/basic-usage/index.md @@ -17,6 +17,9 @@ There are several optimizations which can be performed automatically for Avatars - If there are enabled PhysBones which do not need to be swayed (e.g., the swaying target mesh[^mesh] is always disabled), extra computational cost is caused. - Merging bones which is not animated or swayed with PhysBones - If the clothes bones are nested into the body bones, there will be many bones which are never moved locally. Such bones cause extra cost. +- Merging meshes which are toggled together or never toggled + - If your avatar has only one cloth, it might not be necessary to have separated meshes for body, hair, and clothes. + - Even if you have multiple switchable clothes, it might not be necessary to have separated meshes with body, hair, and underwear. With AvatarOptimizer, these optimizations can be performed automatically by simply adding `AAO Trace And Optimize` component to the Avatar Root! @@ -33,12 +36,10 @@ AAO: Avatar Optimizer is a non-destructive avatar modification tool, and process Therefore, no special steps are required for uploading. Upload your avatar via VRCSDK Control Panal as usual. -However, even though the hard limit will not be exceeded through Avatar Optimizer optimization, etc., -the upload button cannot be pressed because the limit has been exceeded at the time of the VRCSDK pre-build check, the following methods can be used. +However, even though the hard limit will not be exceeded through Avatar Optimizer optimization, etc., the upload button cannot be pressed if the limit has been exceeded at the time of the VRCSDK pre-build check.\ +You can skip the pre-build check with several ways. Please refer [faq][skip-hard-limit-faq] for more details. -- Upload the avatar generated with `Manual bake avatar`.\ -(Select the GameObject of the avatar, then press `Manual bake avatar` in `NDM Framework` from Tools at the top of the Unity window) -- Upload using [Upload without pre-check] by Sayamame-beans. +[skip-hard-limit-faq]: ../../faq/#i-cannot-upload-the-avatar-because-of-pre-build-hard-limit-check [Upload without pre-check]: https://github.com/Sayamame-beans/Upload-without-preCheck?tab=readme-ov-file#upload-without-pre-check @@ -73,6 +74,9 @@ In the first case, increase the value a little, in the second case, decrease it ![remove mesh by BlendShape](./remove-mesh-by-blendshape.png) +