docs: overview for outfit creators

This commit is contained in:
bd_ 2024-06-22 17:59:00 -07:00
parent 14c9da940f
commit 04fc7ac69a
19 changed files with 502 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -0,0 +1,262 @@
# Advice for Outfit Creators
This page is intended to provide an overview for creators of outfits who want to ensure that their outfits are
compatible with Modular Avatar. Generally, Modular Avatar has been designed to work with pre-existing conventions
seen in outfits designed for avatar use, but there is the occasional outfit which does something a bit different.
This page may help you understand what Modular Avatar expects, and how to ensure that your outfit works with it.
## Compatible vs Preset
Before we get started, we should clarify that there are two different levels of support for Modular Avatar. At the
minimum, you can ensure that the bone naming conventions and placement of PhysBones components are compatible with
what Modular Avatar expects, making your outfit "Modular Avatar Compatible". Most outfits will naturally end up
compatible, but this document will walk you through the detailed requirements, in case you're having trouble.
Modular Avatar Compatible outfits don't actually have any Modular Avatar components, so you don't _need_ to use
Modular Avatar to install them, and can use some other outfit installation system instead (or do it manually, of
course).
You can go a step further and provide a prefab with Modular Avatar components already set up, which we call a
"Modular Avatar Preset". This can let you provide additional features for your customers, and reduce the steps needed
to set things up and the risk for mistakes being made. For example, you can set up blendshapes to automatically sync
with the base mesh, and/or hide parts of the base mesh that are covered by clothing. However, doing so will require
that your customers have Modular Avatar installed to use your prefab. You can of course prepare multiple prefabs, one
with Modular Avatar components and one without, to cater to both audiences.
Please note that "Modular Avatar Compatible" outfits are not eligible for using the Modular Avatar logo. See the
[Logo Usage guidelines](logo-usage.md) for details.
## How to check for compatibility/debugging tips
Before we dive in, let's look at the typical workflow for setting up a "Modular Avatar Compatible" outfit. Most users
will put the outfit inside the avatar GameObject, then right click and choose `Modular Avatar -> Setup Outfit`. If
successful, the necessary Modular Avatar components will be added and the avatar will be ready to go.
To check that everything is set up properly, there's a few options:
### Edit mode sync
When you setup outfit, the outfit will be configured to sync with the base avatar's bones in edit mode. Rotate some
of the base bones to verify that the outfit is following it properly.
### Testing in play mode
Modular Avatar will merge the avatar in play mode, so you can see how it'll look at upload time. You can use tools like
Avatar 3.0 Emulator or Gesture Manager to get a more accurate preview.
### Manual Bake
You can also have Modular Avatar simply process the avatar in edit mode, and show the results. Just right click the
avatar and choose `Modular Avatar -> Manual Bake Avatar`. A clone of the avatar will be created with the outfit
applied, and you can see how it turned out.
## Setup Outfit
### How does it work?
Setup Outfit is generally designed to work with most pre-existing outfits, and to set things up with reasonable
defaults. Let's take a closer look at what it does:
#### Identify bones
<div style={{float: "right", "max-width": "45%"}}>
![Example of bone name matching](name-matching-example.png)
*The highlighted portions of the bone names are compared by Setup Outfit to locate the outfit's bones.*
</div>
Setup Outfit first tries to locate certain bones in the outfit, which it uses as a reference point
for processing. Specifically, it looks for a bone that looks like `OutfitRoot -> [Armature] -> Hips`, where `Hips` needs
to contain the name of the base avatar's hip bone. It's OK for some additional text to come before and after the hips
bone name, but that needs to be consistent across all bones in the outfit. Note that the `Armature` game object can have
any name.
If the outfit's bone naming does not conform to these rules, Setup Outfit will try to match the bone names in the outfit
and avatar against a list of common bones names, and if successful, will rename the outfit bones to match the base
avatar. It's best to avoid this mode as it can be less reliable; we recommend matching the outfit bones to the base
avatar precisely.
#### T-pose/A-pose conversion
<div style={{"align": "center"}}>
![Example of T-pose/A-pose conversion](apose-tpose.png)
</div>
Sometimes, outfits and base avatars might not be in the same pose. This can be the case if the avatar was modeled in a
T-pose, but the outfit was modeled in an A-pose. Setup outfit will rotate the arms to match their _positions_ to the
base avatar.
#### Creating a Merge Armature component
<div style={{float: "right", "max-width": "45%"}}>
![Example of Merge Armature component](merge-armature.png)
</div>
Setup Outfit will create a Merge Armature component, on the armature object. This component will contain the text
that came before/after the bone names identified in the previous step (the prefix and suffix), as well as a reference
to the avatar armature. This is what actually merges the bones onto the base avatar.
Setup Outfit has some logic to try to deal with outfits that might have an upper chest bone that is not in the base
avatar as well; this is handled by using multiple Merge Armature components.
Merge Armature will attempt to avoid creating duplicate bones; it'll merge the outfit bones into the base avatar where
possible. In particular, bones which contain components (other than Transform) will _not_ be merged, and will instead
be moved to be a child of the corresponding base avatar bone.
#### Creating a Mesh Settings component
<div style={{float: "right", "max-width": "45%"}}>
![Example of Mesh Settings component](mesh-settings.png)
</div>
Setup Outfit will also create a mesh settings component. This will configure a default light probe anchor, set to be
consistent with the base avatar's meshes, and a reasonable bounding box, for all meshes in the outfit.
<div style={{"clear": "both"}}></div>
### Before/after
Here's an example of an outfit before and after merging:
<div style={{"display": "flow-root"}}>
<div style={{"float": "left", "max-width": "45%"}}>
![Before merging](before-merge.png)
*Before merging*
</div>
<div style={{"float": "right", "max-width": "45%"}}>
![After merging](after-merge.png)
*After merging*
</div>
</div>
As you can see, most of the outfit bones have been merged, but some remain due to PhysBones configurations. Any bones
not
present in the base avatar are also preserved. The additional text after each bone name avoids name collisions when
multiple outfits are added.
### Animation corrections
Merge Armature performs a number of adjustments to animations in the avatar. In particular, it:
- Adjusts animation paths to correspond to moved bones
- Arranges for animations that toggle on/off the original outfit as a whole to toggle on/off all of the objects from
that outfit, after they've been scattered throughout the avatar.
This means that users can usually just use whatever animation setup tool they prefer to toggle on/off outfit root
objects, and this will automatically turn on/off not only the meshes, but also any PhysBones components as well.
### Differences from Bone Proxy
If you're familiar with Bone Proxy, you might be wondering how Merge Armature differs. Bone Proxy differs in a few ways:
- Bone Proxy moves a single object to be under another object somewhere in the avatar. It does not merge bones at all.
- If you target a humanoid bone with Bone Proxy, it will do so in a way that does not depend on the name of the bone.
This allows you to create generic gimmicks that work with any avatar.
- Bone Proxy lets you select how position and rotation is handled with the object; you can have an object snap to the
avatar's hands, for example, regardless of where they are.
- Bone Proxy does not perform the same adjustment of on/off animations as with Merge Armature; while it'll correct
animation paths, animations which toggle the parent of the Bone Proxy on/off won't affect the bone proxy object and
its children.
Bone Proxy can be useful when you're creating an accessory that targets a single bone. For example, a hairpin could use
a Bone Proxy locked to the Head bone. This would make it easier to use on different avatars than it was originally set
up with.
### Things that are OK to do
There are a number of things that Setup Outfit and Merge Armature support that might be surprising. Here are a few
examples.
#### Prefixes and suffixes
As mentioned before, you can put a prefix or suffix before/after bone names. This is OK as long as you use exactly the
same prefix or suffix on all merged bones. Any bones that don't have this prefix or suffix won't be merged with base
avatar bones. Note that uppercase and lowercase matters here.
#### Different bone axis
<div style={{"display": "flow-root"}}>
<div style={{"float": "left", "max-width": "45%"}}>
![Example of axis difference](different-axis-base.png)
<p>*Base avatar shoulder*</p>
</div>
<div style={{"float": "right", "max-width": "45%"}}>
![Example of axis difference](different-axis-outfit.png)
*Outfit shoulder*
</div>
</div>
Different 3D modeling software can use different axis conventions; sometimes the X axis will stick out of the shoulder,
sometimes it might be Y or Z. Merge Armature will handle this automatically; it's not necessary to match the base avatar
in rotation, as long as the position matches.
#### Armature object naming
Setup Outfit doesn't actually care what the `Armature` object (parent of the hips object) is named. It's just looking
for the outfit hips.
#### A vs T pose conversion
It's OK for your outfit to have a different arm pose than the base avatar. If you do this, there are some important
notes:
- A/T pose conversion will only happen if your arm lengths are exactly the same as the base avatar. If the length
differs
by more than a tiny amount, this conversion will be skipped.
- Setup Outfit determines the direction to rotate based on the difference in bone positions. Thus, if your bone
positions
are off slightly, it might result in unwanted rotation.
### Things to avoid
#### PhysBones on humanoid bones
Some outfits have VRC PhysBones components on humanoid bones, such as hips or chest. This is not recommended; while it
can work in some cases, there are a number of outfits that accidentally have PhysBones that are copied from the base
avatar, and Modular Avatar tries to delete these in this case. This can result in unpredictable behavior.
What is recommended here is to ensure that any PhysBones components are on GameObjects that either are not present in
the base avatar, or are outside of the Merge Armature component's game object. This will ensure consistent behavior.
#### Exactly the same naming as the base avatar
If all of your bones, as well as the Armature object, have _exactly_ the same names as the base avatar, this can trigger
some annoying Unity bugs. Setup Outfit tries to avoid this by renaming the Armature object, by adding a `.1` to its
name.
However, it's best to just avoid this from the start; renaming either the armature object or the hips object will avoid
these issues.
## Modular Avatar Presets
Now that we've talked about the minimum requirements for supporting Modular Avatar, let's talk about what it means to
have a Modular Avatar preset. Typically, this means you've prepared a prefab where Setup Outfit is already run. Your
customers can now simply add this prefab to their avatar, and the outfit will be ready to do. It's OK if they run Setup
Outfit again; it'll see that things are already configured and skip processing.
Outfits configured this way may be eligible to use the Modular Avatar logo in their advertising. See the [Logo Usage
Guidelines](/distributing-prefabs/logo-usage.md) for detailed requirements.
You can however go a step further and set up additional things to make things more convenient for your customers.
Here's some examples.
### Shrink/hide shapekeys
:::warning
This is an unreleased feature, which is planned to be released with Modular Avatar 1.10.0
:::
Many avatars have shape keys which can be used to shrink and hide parts of the base mesh, to avoid clipping into the
outfit. Modular Avatar has a feature which can be used to automate this process. By configuring the
[Shape Changer](../../reference/shape-changer.md) component, Modular Avatar will automatically shrink or hide shape keys
when the corresponding object is enabled. This will also respond to animations which turn on/off parts of the outfit,
and can even outright _delete_ portions of the mesh, if the Shape Changer object is always enabled.
### Blendshape Sync
Some avatars have blendshapes which change the size of various portions of the body. You can use the Blendshape Sync
component to automatically adjust the outfit's blendshapes to match those of the base avatar. This can be useful for
breast size blendshapes, for example.

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,239 @@
# 衣装制作者へのアドバイス
このページは、自作の衣装などをModular Avatarに対応させたいクリエイターに必要なウハウを集めたものです。
基本的には、Modular Avatarは既存の衣装の設計に合わせて動作するように設計されていますが、たまには仕様から逸脱するものもあります。
このページにはModular Avatarが期待している設計と、その設計に合わせるための詳細な要件をまとめています。
## 「対応」 vs 「設定済み」
始める前に、まずはModular Avatar向けの衣装には二つの対応レベルがあるということを理解しておきましょう。
最低限、ボーンの命名規則やPhysBonesコンポーネントの配置がModular Avatarが期待するものと互換性があることを確認することで、
「Modular Avatar対応」の衣装と言えます。ほとんどの衣装は自然と互換性があるため、詳細な要件を確認する必要はありませんが、
問題が発生している場合はこのドキュメントを参照してください。
「Modular Avatar対応」の衣装にはModular Avatarコンポーネントが含まれていないため、Modular Avatarを使用してインストールする必要はなく、
代わりに他の衣装インストールシステムを使用することもできます(もちろん手動で行うこともできます)。
さらに一歩進んで、Modular Avatarコンポーネントがすでに設定されたプレハブを提供することができます。これを「Modular
Avatar設定済み」と呼びます。
これにより、お客様にさまざまな便利機能やギミックを提供し、設定手順を簡素化し、導入に間違いが起きるリスクを減らすことができます。
たとえば、ブレンドシェイプを素体と自動的に同期させたり、衣装で隠れている素体の一部を非表示にしたりすることができます。
ただし、これにはお客様がModular Avatarをインストールしている必要があります。もちろん、複数のプレハブを準備し、Modular
Avatarコンポーネントが
含まれているものと含まれていないものの両方を提供することもできます。
「Modular Avatar対応」の衣装にはModular Avatarのロゴを使用することができないのでご注意ください。
詳細については[ロゴ使用ガイドライン](logo-usage.md)を参照してください。
## 互換性の確認/デバッグのヒント
詳細を語る前に、「Modular Avatar対応」衣装を導入するための典型的なワークフローを見てみましょう。
ほとんどのユーザーは、衣装をアバターのGame Object内に配置し、右クリックして`Modular Avatar -> Setup Outfit`を選択します。
成功すると、必要なModular Avatarコンポーネントが追加され、アバターが準備完了になります。
正しく設定されているかどうかを確認するためには、いくつかのやり方があります。
### エディットモードでの姿勢同期
Setup Outfitをすると、衣装はエディットモードでも素体のボーンと姿勢を同期するように設定されます。いくつかの素体ボーンを回転させて、
衣装が正しく追従しているか確認してください。
### プレイモードでの確認
Modular Avatarはプレイモードでアバターをマージするので、そこでアップロード時の姿を確認できます。
Avatar 3.0 EmulatorやGesture Managerなどのツールを使用すれば、より正確なプレビューになります。
### Manual Bake
また、エディットモードでアバターを処理し、結果を表示することもできます。アバターを右クリックして`Modular Avatar -> Manual Bake Avatar`
を選択すると、
衣装が適用されたクローンが作成され、その結果を確認できます。
## Setup Outfit
### どういう仕組みなの?
Setup Outfitは、ほとんどの既存の衣装を認識し、基本的にな設定を行うように設計されています。その詳しい挙動を確認しましょう。
#### ボーンの認識
<div style={{float: "right", "max-width": "45%"}}>
![ボーン名照合の例](name-matching-example.png)
 *色で囲った部分をSetup Outfitが比較することで、衣装のボーンを特定しています。*
</div>
Setup
Outfitは、まず衣装内の特定のボーンを探し、それを処理の基準点として使用します。具体的には、`OutfitRoot -> [Armature] -> Hips`
のようなボーンを探します。
ここで`Hips`は素体のヒップボーンの名前を含む必要があります。ヒップボーン名の前後に任意のテキストがあっても構いませんが、全てのボーンで一貫している必要があります。
また、`Armature`のゲームオブジェクトの名前は何でも構いません。
衣装のボーンの命名がこれらのルールに従わない場合、Setup Outfitは衣装のボーン名と素体のボーン名を一致させるために、一般的なボーン名のリストと照合し、
一致するものがあれば衣装のボーン名を素体のボーン名に変更します。この方式は非対応衣装向けで、ボーン名一致に比べると安定性が低くなるため、
可能な限りボーン名を正確に一致させることをお勧めします。
#### T-pose/A-pose 変換
<div style={{"align": "center"}}>
![T-pose/A-pose変換の例](apose-tpose.png)
</div>
衣装と素体のボーンが同じポーズになっていない場合があります。例えば、素体がTポーズで制作されているが、衣装がAポーズで制作されている場合です。
Setup Outfitは、ボーンの位置を基準にして腕を回転させ、ポーズを合わせます。
#### Merge Armature コンポーネントの作成
<div style={{float: "right", "max-width": "45%"}}>
![Merge Armature コンポーネントの例](merge-armature.png)
</div>
Setup Outfitは、ArmatureオブジェクトにMerge Armatureコンポーネントを作成します。このコンポーネントには、ボーン名の前後にあるテキスト
(接頭辞・接尾辞)と、素体のアーマチュアへの参照が含まれます。このコンポーネントの影響で衣装のボーンがアバターのボーンにマージされます。
衣装にUpper Chestがあるが、素体にはない場合、Setup Outfitは複数のMerge Armatureコンポーネントを使用して対処します。
Merge Armatureは、ボーンの重複を回避するために、可能な限り衣装のボーンを素体のボーンに統合します。ただし、Transform以外のコンポーネントを含むボーンは統合されず、
代わりにアバターの対応するボーンの子に移動されます。
#### Mesh Settings コンポーネントの作成
<div style={{float: "right", "max-width": "45%"}}>
![Mesh Settings コンポーネントの例](mesh-settings.png)
</div>
Setup Outfitは、自動的にMesh Settingsコンポーネントを作成します。これにより、衣装内のすべてのメッシュに対してlight probe
anchorを素体に
合わせて設定したり、合理的なバウンズ設定も行っています。
<div style={{"clear": "both"}}></div>
### 処理前と処理後
Manual Bake処理前後の例を以下に示します。
<div style={{"display": "flow-root"}}>
<div style={{"float": "left", "max-width": "45%"}}>
![処理前](before-merge.png)
*処理前*
</div>
<div style={{"float": "right", "max-width": "45%"}}>
![処理後](after-merge.png)
*処理後*
</div>
</div>
見ての通り、ほとんどの衣装ボーンが統合されていますが、PhysBonesの設定により一部のボーンが残っています。また、素体に存在しないボーンはそのまま残されています。
各ボーン名の後に追加されたテキストは、複数の衣装を追加した場合の名前の衝突を回避するためのものです。
### Animation 修正
Merge Armatureは、アバター内のアニメーションに対していくつかの調整を行います。具体的には以下のような処理を行います。
- 移動したボーンに対応するアニメーションパスを調整します
- 衣装全体をON/OFFするアニメーションがある場合、そのアニメーションがバラバラとなった衣装全体のオブジェクトをON/OFFするように調整します。
これにより、ユーザーは通常、好きなアニメーション設定ツールを使用して衣装のルートオブジェクトをON/OFFにさせることができるし、
その時メッシュだけでなくPhysBonesコンポーネントもON/OFFに切り替わります。
### Bone Proxyとの違い
Bone Proxyに精通している場合、Merge Armatureとの違いが気になるかもしれません。Bone ProxyとMerge Armatureの違いは以下の通りです。
- Bone Proxyは、ボーンを統合することなく、1つのオブジェクトをアバターの別のオブジェクトの下に移動させます。ボーンの統合は行いません。
- Bone Proxyは、アバターのヒューマイドボーンをターゲットにする場合、ボーンの名前に依存しない方法で保存されます。
これにより、任意のアバターで動作する汎用的なギミックを作成できます。
- Bone Proxyは、オブジェクトの位置と回転の処理方法を選択できます。例えば、どこに手があってもアバターの手にオブジェクトを移動させることができます。
- Bone Proxyは、Merge Armatureと違ってON/OFFアニメーションの調整を行いません。Bone Proxyはアニメーションパス自体を修正しますが、
Bone Proxyがついているオブジェクトの親をON/OFFしても、Bone Proxyオブジェクトとその子には影響しません。
Bone Proxyは、1つのボーンをターゲットにするアクセサリを作成する際に便利です。例えば、ヘアピンはHeadボーンにロックされたBone
Proxyを使用することができます。
Bone Proxyを使用することで、元々設定されていたアバター以外でも簡単に使用できるようになります。
### 意外と大丈夫な設計
対応してなさそうなのに、Setup OutfitとMerge Armatureが意外と対応しているケースがいろいろあります。以下にいくつか例を挙げます。
#### ボーン名の前後にテキストを追加
前述の通り、ボーン名の前後に接頭辞や接尾辞を追加することができます。これは、全ての統合されるボーンに対して同じ接頭辞や接尾辞を使用している限り、問題ありません。
同じ接頭辞や接尾辞を使用していないボーンは、基本アバターのボーンと統合されません。このとき、大文字と小文字は区別されるのでご注意ください。
#### ボーンの軸が異なる場合
<div style={{"display": "flow-root"}}>
<div style={{"float": "left", "max-width": "45%"}}>
![軸違いの例](different-axis-base.png)
<p>*素体の肩ボーン*</p>
</div>
<div style={{"float": "right", "max-width": "45%"}}>
![軸違いの例](different-axis-outfit.png)
*衣装の肩ボーン*
</div>
</div>
3D モデリングソフトによって、軸の規則が異なることがあります。たとえば、X軸が肩から出ていることもあれば、Y軸やZ軸が出ていることもあります。
Merge Armatureはこれを自動的に対応します。基本アバターの回転を合わせる必要はなく、位置さえ合っていれば問題ありません。
#### Armature オブジェクトの命名規則
実は、Setup Outfitは`Armature`オブジェクト(ヒップボーンの親)の名前を気にしません。ヒップボーンのみを見ています。
#### A/T ポーズの変換
素体と衣装の腕の姿勢が異なっても大丈夫です。ただし、以下の点に注意してください。
- ボーンの長さが素体と完全に一致している場合のみ、A/Tポーズ変換が行われます。長さがわずかでも異なる場合、この変換はスキップされます。
- Setup Outfitは、ボーンの位置の差に基づいて回転方向を決定します。ボーンの位置がわずかにずれていると、意図しない回転が発生する可能性があります。
### 注意点
#### ヒューマノイドボーンでの PhysBones コンポーネント
一部の衣装には、HipsやChestなどのヒューマイドボーンに PhysBones コンポーネントが付いているものがあります。これは推奨されません。
一部のケースでは機能するかもしれませんが、多くの衣装には誤ってベースアバターからコピーされた PhysBones が含まれているため、
Modular Avatarはこれを認識し削除しようとします。これにより予期せぬ動作が発生する可能性があります。
代わりに、素体に存在しない GameObject、あるいは Merge Armature コンポーネントのゲームオブジェクトの外に PhysBones コンポーネントを
配置したほうが安定した動作になります。
#### 素体と完全に一致した命名規則
ボーンだけでなく、Armatureオブジェクトも素体と完全に同じ名前の場合、厄介な Unity のバグが発生する可能性があります。
これを避けるために、Setup Outfitは Armature オブジェクトの名前に `.1` を追加してリネームします。
しかし、最初からこれを避けるのがベストです。Armatureオブジェクトの名前を変えるか、ボーン名に接頭辞や接尾辞を追加することで、
この問題を回避できます。
## Modular Avatar 設定済みの衣装
Modular Avatarをサポートするための最低限の要件について話しましたが、Modular Avatar設定済みの衣装を持つことは何を意味するかについて話しましょう。
通常、Setup Outfitがすでに実行されたプレハブを用意していることを意味します。お客様はこのプレハブをアバターに追加するだけで、
衣装が導入完了となります。もちろん、Setup Outfitを再度実行しても問題ありません。すでに設定されていることを認識し、処理をスキップします。
このように設定された衣装は、広告にModular Avatarロゴを使用することができる場合があります。
詳細な要件については[ロゴ使用ガイドライン](/distributing-prefabs/logo-usage.md)を参照してください。
ただし、さらに一歩進んで、お客様にとってより便利な設定を行うことができます。以下にいくつかの例を示します。
### 縮小・非表示用のシェープキー
:::warning
この機能は、Modular Avatar 1.10.0 でリリース予定の未公開機能です。
:::
多くのアバターには、素体メッシュの一部を縮小したり非表示にしたりするためのシェープキーが含まれています。これにより、衣装が素体メッシュに
めり込むことを防ぐことができます。Modular Avatarには、この処理を自動化する機能があります。
[Shape Changer](../../reference/shape-changer.md)コンポーネントを設定することで、Modular Avatarは対応するオブジェクトが有効になると、
シェープキーを自動的に縮小または非表示にします。また、アニメーションによって衣装の一部がオン/オフになる場合にも応答し、
Shape Changerオブジェクトが常に有効であれば、メッシュの一部を削除することさえできます。
### ブレンドシェイプ同期
一部のアバターには、体のさまざまな部分のサイズを変更するブレンドシェイプが含まれています。このような場合、衣装のブレンドシェイプを
自動的に操作して、基本アバターと一致させることができます。例えば、胸のサイズを変更するブレンドシェイプがある場合、
この機能を使用して衣装のブレンドシェイプを自動的に調整することができます。

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -12,6 +12,7 @@
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
},
"dependencies": {