diff --git a/docs/api/component/index.mdx b/docs/api/component/index.mdx
new file mode 100644
index 000000000..10c2a9cca
--- /dev/null
+++ b/docs/api/component/index.mdx
@@ -0,0 +1,13 @@
+import DocCardList from "@theme/DocCardList";
+
+# Component
+
+runtime component 関連について。
+
+| | runtime only | component |
+| --------- | ------------------- | ---------------------------------------------------------- |
+| gltf(glb) | RuntimeGltfInstance | (通常の Unity SkinnedMeshRenderer) |
+| vrm-0.x | RuntimeGltfInstance | VRMMeta, VRMFirstPerson, VRMLookAtHead, VRMBlendShapeProxy |
+| vrm-1.0 | RuntimeGltfInstance | Vrm10Instance |
+
+
diff --git a/docs/api/runtime_resource_management.md b/docs/api/runtime_resource_management.md
index f2a7f09dc..61f3cd841 100644
--- a/docs/api/runtime_resource_management.md
+++ b/docs/api/runtime_resource_management.md
@@ -1,11 +1,10 @@
-# Runtime のリソース管理について
+# GameObject.Destory で vrm 関連リソースを破棄します
-Runtime Import で `Texture`, `Material`, `Mesh` などのリソースを Root の `GameObject.OnDestroy`
-と同時に `UnityEngine.Object.Destroy` したい。
+:::tip RuntimeGltfInstance は runtime 専用
+Editor import(Prefab や ScriptedImporter)では Attach されません。
+:::
-## RuntimeGltfInstance
-
-`RuntimeGltfInstance.OnDestroy` で破棄を実行するようにした。
+`RuntimeGltfInstance.OnDestroy` で関連リソースを破棄します。
```
ImporterContext
@@ -24,30 +23,3 @@ RuntimeGltfInstance
[Own]List
[Own]List
```
-
-> VRM-0.X では `RuntimeGltfInstance` にリソースを委譲している。
-
-## Vrm10Instance
-
-```
-Vrm10Importer
- [Own]HumanoidAvatar
- [Own]Vrm10Object
- [Own]List
-
-👇 Vrm10Importer.LoadAsync
-
-RuntimeGltfInstance
- [Own]HumanoidAvatar
- [Own]VrmObject
- [Own]List
-```
-
-### FirstPerson
-
-```
-👇 Vrm10Instance.FirstPerson.SetupAsync
-
-RuntimeGltfInstance
- [Own]List.Add(headless)
-```
diff --git a/docs/release/112/v0.121.0.md b/docs/release/112/v0.121.0.md
index 8b0666c08..e6a0d01f3 100644
--- a/docs/release/112/v0.121.0.md
+++ b/docs/release/112/v0.121.0.md
@@ -6,17 +6,21 @@ https://github.com/vrm-c/UniVRM/milestone/84
https://github.com/vrm-c/UniVRM/issues/2248
:::
-:::note TODO Ability to freeze pose with GLTF export
+:::info Ability to freeze pose with GLTF export
- https://github.com/vrm-c/UniVRM/issues/2041
- :::
-:::note TODO ボーン変形を持たない SkinnedMeshRenderer を VRM1.0 でエクスポートするとローカル座標が反映されない
+:::
+
+:::info ボーン変形を持たない SkinnedMeshRenderer を VRM1.0 でエクスポートするとローカル座標が反映されない
- https://github.com/vrm-c/UniVRM/issues/2119
- :::
+- [SkinnedMeshRenderer.rootBone](/univrm/error/skinnedmeshrenderer_rootbone/)
+
+:::
:::note TODO
- https://github.com/vrm-c/UniVRM/issues/2169
- :::
+
+:::
diff --git a/docs/univrm/error/skinnedmeshrenderer_rootbone.md b/docs/univrm/error/skinnedmeshrenderer_rootbone.md
new file mode 100644
index 000000000..ac76d7c52
--- /dev/null
+++ b/docs/univrm/error/skinnedmeshrenderer_rootbone.md
@@ -0,0 +1,53 @@
+# SkinnedMeshRenderer.rootBone
+
+2 つの機能があるようで、可視判定 BoundingBox の中心制御と boneWeight が無いときの transform に影響します。
+たぶん、3 種類の挙動があります。
+
+| bone weight | rootBone | |
+| ----------- | -------- | ---------------------------------------- |
+| | | SkinnedMeshRenderer.transform の上に乗る |
+| ✅ | | bone weight に従う |
+| | ✅ | rootBone の上に乗る |
+| ✅ | ✅ | bone weight に従う |
+
+## UniVRM の SkinnedMeshRenderer.root は正しく読み書きできません
+
+:::danger UniGLTF では、SkinnedMeshRenderer.rootBone をサポートしません
+glTF に対応する項目が無くて、正しく読み書きできないためです。
+:::
+
+:::warning glTF の skin.skeleton は似て非なる別の機能です
+https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_skin_skeleton
+:::
+
+## 問題が起きやすい例
+
+- 頭に BoneWeight を付与していない
+- 頭に BlendShape がある
+- SkinnedMeshRenderer が 頭に attach されている => 無問題
+- SkinnedMeshRenderer が root 付近に atttach されていて、rootBone に頭が指定されてい => 該当
+
+## 対策
+
+### DCC での対策
+
+- 頭に BoneWeight を付与してください
+
+### UniVRM での対策
+
+**bake** してください。
+
+- vrm-0.x は正規化時に解決されます。
+- glTF は、exportOption `freezeMesh` を有効にしてください( `from 0.121` )
+- vrm-1.0 は、exportOption `freezeMesh` を有効にしてください( `from 0.121` )
+
+:::info export と別に MeshUtility の Mesh 統合で同じ機能を使うことができます
+:::
+
+## 参考
+
+- [skin.skeleton と SkinnedMeshRenderer.RootBone 違う機能なのでは? · Issue #730 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/730)
+
+- [SkinnedMeshRenderer.rootBone の boneWeight==0 の頂点を動かす機能を打ち消す · Issue #1675 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/1675)
+
+- [ボーン変形を持たないSkinnedMeshRendererをVRM1.0でエクスポートするとローカル座標が反映されない · Issue #2119 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/2119)
diff --git a/sidebars.ts b/sidebars.ts
index a48b5d996..027018f34 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -70,6 +70,7 @@ const sidebars: SidebarsConfig = {
"univrm/error/multiple_scripted_importers",
"univrm/error/could_not_include",
"univrm/error/null_reference_exeption",
+ "univrm/error/skinnedmeshrenderer_rootbone",
//
"univrm/error/report_error",
],
@@ -292,6 +293,7 @@ const sidebars: SidebarsConfig = {
link: { type: "doc", id: "api/runtime-import/index" },
items: [
"api/runtime-import/gltfdata",
+ "api/0_95_dispose",
"api/runtime-import/RuntimeGltfInstance",
"api/runtime-import/import_glb",
"api/runtime-import/import_vrm0",
@@ -364,14 +366,20 @@ const sidebars: SidebarsConfig = {
{ type: "doc", id: "api/vrm1_controlrig" },
],
},
+ {
+ type: "category",
+ label: "Component",
+ link: { type: "doc", id: "api/component/index" },
+ items: [
+ { type: "doc", id: "api/runtime_resource_management" },
+ ],
+ },
{
type: "category",
label: "Other",
items: [
{ type: "doc", id: "api/api_update" },
{ type: "doc", id: "api/0_36_update" },
- { type: "doc", id: "api/runtime_resource_management" },
- { type: "doc", id: "api/0_95_dispose" },
{ type: "doc", id: "api/0_95_highlevel" },
{ type: "doc", id: "api/how_to_impl_extension" },
{ type: "doc", id: "api/coordinate" },