Skip to content

Commit

Permalink
Merge pull request #1083 from anatawa12/docs-improvements
Browse files Browse the repository at this point in the history
docs: many improvements
  • Loading branch information
anatawa12 authored Jun 9, 2024
2 parents d6f8c49 + b707081 commit dbf5c19
Show file tree
Hide file tree
Showing 10 changed files with 187 additions and 17 deletions.
34 changes: 34 additions & 0 deletions .docs/content/docs/developers/component-api/index.ja.md
Original file line number Diff line number Diff line change
@@ -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<T>()`メソッドで追加されるコンポーネントに影響します。
従って、Avatar Optimizerの将来のバージョンとの互換性を保つためには、使用するデフォルト設定のバージョンを指定して`Initialize`メソッドを呼び出す必要があります。
デフォルト設定のバージョンは、`Initialize`メソッドのドキュメントに記載されているはずです。\
`Initialize`メソッドを呼び出さなかった場合、コンポーネントが予期しない動作をしたり、将来的にエラーが発生したりする可能性があります。
34 changes: 34 additions & 0 deletions .docs/content/docs/developers/component-api/index.md
Original file line number Diff line number Diff line change
@@ -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<T>()` 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.
45 changes: 43 additions & 2 deletions .docs/content/docs/faq/index.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -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}

Expand Down Expand Up @@ -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]でのバグ報告、機能追加の要望、またプルリクエストなどを歓迎しています。
Expand Down
48 changes: 46 additions & 2 deletions .docs/content/docs/faq/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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}

Expand Down Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ weight: 25
他のシェーダーのサポートも追加する可能性があります。(サードパーティシェーダーでも対応します)
もし対応して欲しいシェーダーがあれば、[issue][issue]を書いてください。

このコンポーネントは新しいマテリアルを作成するため、このコンポーネントで統合されたマテリアルを使用しているマテリアルスロットは`AAO Merge Skinned Mesh`コンポーネントで統合されません。
別々のメッシュで使用されているマテリアルを纏めて統合したい場合は、`AAO Merge Skinned Mesh`コンポーネントのあるGameObjectと同じGameObjectに`Merge ToonLit Material`コンポーネントを追加する必要があります。

## 設定 {#settings}

`統合したマテリアルを追加`をクリックして、統合後のマテリアルを追加します。
Expand Down
3 changes: 3 additions & 0 deletions .docs/content/docs/reference/merge-toonlit-material/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion .docs/content/docs/reference/trace-and-optimize/index.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ Trace and Optimizeは「**見た目に絶対に影響させてはならない**
- `BlendShapeを自動的に固定・除去する`\
アニメーションなどで使われていないか、常に同じ値になっているBlendShapeを自動的に固定・除去します。
- `使われていないObjectを自動的に削除する`\
アニメーションなどを走査して、使われていないObject(GameObjectやコンポーネントなど)を自動的に削除します。
アニメーションなどを走査して、使われていないObject(GameObjectやコンポーネントなど)を自動的に削除します。\
また、切り替えるものと一緒に使われていて、他の方法で使われていないPhysBooneコンポーネントを自動的に切り替えるようにします。
- `endボーンを残す`\
親が削除されていないendボーン[^endbone]を削除しないようにします。
- `PhysBoneの設定を最適化する`\
Expand Down
Loading

0 comments on commit dbf5c19

Please sign in to comment.