docs: add initial documentation for Replace Object

This commit is contained in:
bd_ 2023-07-30 01:58:20 +09:00
parent 4240a4f4cf
commit 3f5a52859f
2 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,40 @@
# Replace Object
The Replace Object component allows you to completely replace the contents of a GameObject on the parent avatar.
## When should I use it?
The Replace Object component is useful when you want to replace an object on the parent avatar with a different object.
For example, you might want to replace the PhysBones configuration of the base avatar, or replace its body mesh entirely
with a different mesh.
## When should I not use it?
An object can only be replaced by one other object. As such, when you use Replace Object, you will limit the
compatibility of your asset with other assets that might also want to use Replace Object.
## Detailed operation
### Handling of child objects
Replace Object only replaces the specific object that was specified. The child objects of both the original and the
replacement object will both be placed under the replacement object.
### Object naming
Replace Object does not change the name of your replacement object; if its name is different from the original object,
then the final object name will be different. However, Replace Object _does_ update any animation paths that reference
the original object to reference the replacement object instead.
Because Replace Object is performed fairly late in avatar processing, in most cases this does not make much of a
difference. However it may matter if - for example - you are replacing the `Body` mesh and want to maintain MMD world
compatibility (or, conversely, want to add MMD compatibility to an existing avatar).
### Handling of component references
Replace Object will attempt to fix any references to components on the old object to point to the new object instead.
If there is more than one of the same component on the old object, then references will be matched against the component
with the same index in the new object (or nulled out if the new object doesn't have enough of that component type).
Replace Object will not perform fuzzy matching; if, for example, you replaced a Box Collider with a Sphere Collider,
references to the old Box Collider will become null.

View File

@ -0,0 +1,39 @@
# Replace Object
Replace Objectコンポーネントを使うことで、任意のGameObjectの内容を完全に置き換えることができます。
## どんな時に使うべきか?
Replace Objectコンポーネントは、オブジェクトを別のオブジェクトに置き換えたい時に便利です。
たとえば、ベースアバターのPhysBones構成を置き換えたり、ボディメッシュを別のメッシュに置き換えたりすることができます。
## 使うべきでない時は?
オブジェクトは、複数のオブジェクトに置き換えることができません。Replace Objectを使って、
他のアセットがReplace Objectも使っている場合は競合してしまうため、互換性が損なわれることになります。
## 詳細仕様
### 子オブジェクトの扱い
Replace Objectは、指定されたオブジェクトのみを置き換えます。元のオブジェクトと置き換えオブジェクトの子オブジェクトは、
両方とも置き換えオブジェクトの下に配置されます。
### オブジェクト名
Replace Objectは、置き換えオブジェクトの名前を変更しません。そのため、置き換えオブジェクトの名前が元のオブジェクトと異なる場合、
最終的なオブジェクト名も異なることになります。ただし、Replace Objectは、元のオブジェクトを参照するアニメーションパスを、
置き換えオブジェクトを参照するように更新します。
Replace Objectは、アバター処理の最後のほうに実行されるため、ほとんどの場合はあまり問題になりません。ただし、
ボディメッシュを置き換えてMMD互換性を維持したい場合などは、問題になる可能性があります。逆に、既存のアバターにMMD互換性を追加したい場合はこの
仕様をあえて応用することもできます。
### コンポーネント参照の扱い
Replace Objectは、古いオブジェクトのコンポーネントへの参照を、新しいオブジェクトへの参照に置き換えようとします。
古いオブジェクトに同じコンポーネントが複数ある場合、参照は新しいオブジェクトの同型内で同じ順番のコンポーネントに置き換えます。
もし新しいオブジェクトに同じコンポーネントが足りない場合は、参照はnullになります。
Replace Objectは、曖昧なマッチングは行いません。たとえば、Box ColliderをSphere Colliderに置き換えた場合、
古いBox Colliderへの参照はnullになります。