> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing/ke-chuan-dai-wu-pin/spring-bones.md).

# 弹簧骨骼

使用 Spring Bones 为穿戴物添加动态物理效果

### 什么是弹簧骨骼？

弹簧骨骼（也称为抖动骨骼或物理骨骼）是添加到可穿戴物品中的额外骨骼，它们会根据头像移动和重力动态运动，而不是由动画片段驱动。它们通过让头发、耳环、披风、腰带、马尾以及其他悬挂配饰自然摆动、弹跳和回落，为这些元素赋予生命，使头像在行走、奔跑或转身时显得更生动。

弹簧骨骼是 **不是** 基础头像骨架的一部分。它们是在 Blender（或任何 3D 软件）中添加到头像基础骨骼上的额外骨骼，物理行为会在上传后于 Builder 中配置。

此实现遵循 [VRM Spring Bone 标准](https://vrm.dev/en/vrm1/springbone/)，这是在 VRM 和 MMD 等格式中广泛采用的头像物理约定。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-155bf4c615cd79a1c25c1289fbc36565c913499b%2F01_spring_bones_workflow.png?alt=media)

### 弹簧骨骼的工作原理

一个 **弹簧链** 是一串共同模拟物理效果的骨骼，并且至少需要两个骨骼：实际的弹簧骨骼和末端骨骼。单独的一个弹簧骨骼不会产生任何运动——模拟需要弹簧骨骼头部来驱动物理效果，而末端骨骼的头部将定义几何终点。更长的链条（3 个以上骨骼）会带来更平滑、更自然的运动，非常适合更长的头发或披风。

1. **弹簧骨骼父级** ——链条中的第一个骨骼。它拥有物理配置（刚度、重力、阻尼等）。通过在名称中包含 `springbone` （不区分大小写）来识别。
2. **子弹簧骨骼** ——它是层级结构中前一个骨骼的子级。它继承父级的物理参数，并形成这条链。
3. **弹簧骨骼末端** ——链条中的最后一个骨骼。它定义链条的几何终点，但不会受到模拟影响，也不会变形任何网格。

弹簧骨骼的链条或层级应当是 **线性的**，这意味着每个骨骼只能有一个子级。拥有两个或更多子级的骨骼可能会出现意外行为。

![一条漂亮且线性的弹簧链。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-647d9bf916f9848eb8e59c0ac59ebc2fe07deaea%2FSpring_Chain.png?alt=media)

![拥有 2 个或更多子级的骨骼会出现意外行为。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f824360b21f0e1fc92a1a337479f35a08f7f694f%2FForked_Chain.png?alt=media)

### 层级结构

为了让弹簧骨骼正常工作，它们必须父级到头像的原始骨骼之一。例如，对于头发和耳环，层级顶部的骨骼应当父级到 ***Avatar\_Head***。对于围巾，把链条父级到 ***Avatar\_Neck*** 是个不错的选择。对于裙子，也许 ***Avatar\_Hips*** 或 ***Avatar\_LeftUpLeg/Avatar\_RightUpLeg*** 可以派上用场。

需要注意的是，这种层级结构的工作方式。

* *Hair\_springBone\_1* （弹簧骨骼父级）：这是链条顶部的骨骼，它具有物理配置
* *Hair\_springBone\_2* （子弹簧骨骼）：这是层级中前一个骨骼的子级，并继承该配置。
* *Hair\_springBone\_end* （弹簧骨骼末端）：它是链条中的最后一个骨骼，仅作为终点。

### 命名约定

所有弹簧骨骼 **必须** 包含子字符串 `springbone` （不区分大小写）在其名称中。该子字符串可以出现在任何位置：

* *SpringBone\_hair\_left*
* *hair\_springbone\_l*
* *springbone\_earring.R*

为了保持工作流程整洁，建议使用以下格式： **BodyPart/WearableName\_springBone**

示例： *Hair\_springBone\_1*, *Earring\_springBone.L* 等等……只要遵循 Blender（或你偏好的软件）对左右侧的命名约定，你可以自由使用最适合自己的格式。

{% hint style="warning" %}
注意！

没有 `springbone` 骨骼名称中的该子字符串。即使是末端骨骼也必须使用它。
{% endhint %}

### 限制

每个可穿戴物品都必须遵守以下弹簧骨骼限制：

* 最大 **6** 条弹簧链 / 每个可穿戴物品
* 最大 **12** 个弹簧骨骼总数（所有链条中骨骼数量之和）
* 最大链深度为 **6** 个骨骼

## 在 Blender 中创建弹簧骨骼

弹簧骨骼是在 Blender 中为基础头像骨架创建的额外骨骼。物理参数稍后会在 Builder 中配置——你现在只需要设置骨骼层级。

要创建新骨骼，请选择头像的 Armature，并在 **编辑模式**下，确保光标位于你想创建骨骼的位置，然后按下 **Shift+A**。另一种方法是通过按下 **Shift+D**复制现有骨骼。创建链条的第一个骨骼后，按下 **E** 将其挤出并创建链条的其余部分。

![按 Shift+A 在光标所在位置创建骨骼。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a7353847fead3ecb60e9dbc49d9449e914e0efca%2FCreate_Bones.gif?alt=media)

需要注意的是，弹簧链不必连接到骨骼父级，因此你可以将其放在网格上的任何位置。不过，弹簧链 **必须** 是连接的，不能对任何弹簧骨骼进行偏移。

创建骨骼后，请按照上面提到的命名约定重命名，并确保将链条父级到正确的骨骼。虚线会显示链条的父级。如果没有虚线，说明该链条没有父级。在 **编辑模式**中，先选择子级，然后选择父级并按下 **Ctrl+P** > **保持偏移**.

![先选择子级，再选择父级，然后按 Ctrl+P 来为骨骼建立父子关系。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6c10f20fb0392fe39a125e59e1202e638b24ef71%2FParenting_Bones.gif?alt=media)

要重命名骨骼，请在编辑模式或姿态模式中选中它，进入骨骼属性选项卡，并按照命名约定重命名。对链条中的所有骨骼都这样做。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-acb6f900f22bcf0cf7c7af4df54410f62607497c%2FRename_Bones.png?alt=media)

{% hint style="info" %}
提示！

要确保骨骼位置正确，请在 **对象模式** 下选择网格，并在 **编辑模式**中选择你想放置骨骼的区域的顶点（可以是一个循环或一组顶点）> 按下 **Shift+S** > **光标到所选。**

返回到 **对象模式**，选择骨架 > 前往 **编辑模式** > 选择目标骨骼 > **Shift+S** > **选择到光标**.
{% endhint %}

![使用 Shift+S 将骨骼放置到网格中的正确位置。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c3a786c4bfe1487f0312dd69ca6492ea660fa310%2FCreate_Bones2.gif?alt=media)

### 为网格蒙皮

蒙皮是将网格绑定到骨架的过程，使它们能够一起移动。为此，我们需要定义每根骨骼对顶点的影响程度（权重）。权重越高，骨骼对网格的变形越大。要进行此操作，请前往 **对象模式**，先选择网格，按下 **Shift** 并选择骨架，再按下 **Ctrl+P**。有两种做法，可以选择 **使用空组** 或 **使用自动权重**.

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a2b003483ddbc0d4f75ed73ad0d18cfd9db5e154%2FParenting_Mesh.gif?alt=media)

#### 使用自动权重

顾名思义，使用此方法时，Blender 会尝试通过为骨架中的每个骨骼创建顶点组并为每个组分配自动权重来自动设置蒙皮权重。它在某些情况下可能有效，但也可能需要一些调整。你可以通过点击 **数据** 选项卡中。

如果你确定某些骨骼不需要影响网格，你可以直接点击 **锁定图标** 来锁定你想保留的组，点击下拉菜单并选择 **删除所有未锁定组** 将其从对象中移除。例如，如果你在处理头发，为脚和手创建组就毫无意义。在这种情况下，删除除头部或弹簧骨骼之外的所有内容，就像下面的示例一样。另外，请确保删除弹簧链末端骨骼的组。

![删除顶点组。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6f81dc7daa452a13d7d0dc82235ebefa5f457fad%2FDeleting_Groups.gif?alt=media)

#### 使用空组

使用此方法时，Blender 会为骨架中的每个骨骼创建所有顶点组，但默认权重为零。你需要在编辑模式中手动分配权重，或在权重绘制模式中绘制权重。这能让你更精确地控制每个组影响的内容，并且对硬表面或需要完全分配给某个组的对象尤其有帮助。无论如何，一旦你分配好权重，就需要在姿态模式中测试，然后在权重绘制中微调。

![使用空组进行父级绑定。](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-ff94e0142f6a4926a619e5fe99cec63c8ca9a1c4%2FEmpty_Groups_Compressed.gif?alt=media)

#### 绘制权重

要测试蒙皮后的网格，请选择骨架并进入 **姿态模式**，设置一个关键帧，然后旋转骨骼创建另一个姿态并再设置一个关键帧。这样你就可以检查网格在运动时的变形情况。设置好姿态后，返回到 **对象模式**，选择网格并进入 **权重绘制**.

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-527c8bb63094ba652a3fb1d5352e93a74488708c%2FSetting_Poses_Compressed.gif?alt=media)

在 **权重绘制**，在工具选项卡中你会找到不同的画笔来调整蒙皮权重。选择你想编辑的顶点组（如果它们被锁定，只需解锁即可编辑其影响），然后使用画笔添加或移除影响。黑色表示零影响，而红色表示该组完全影响网格。启用 **叠加显示** 中的线框会让你更容易看清正在绘制的内容。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c27ffa783f5617d5f0808b2dd6a42abf154b212a%2FWeight_Paint_Compressed.gif?alt=media)

使用添加、减去或平滑画笔来获得想要的结果。也要测试不同的极端姿态，看看网格如何变形，以及是否还有没有权重的顶点。如果你对结果满意，就该导出了！

### 导出

在导出之前，确保删除测试姿态时创建的任何动画片段。进入姿态模式，按下 **一个** 然后按下 **Ctrl+R**，然后 **Ctrl+S** 最后 **Ctrl+G** ，以删除骨架上的任何变换。然后返回对象模式，将显示模式从视图层切换到 Blender 文件，展开 Actions，右键单击并删除动画文件。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c58ca65a7d3cb67af9da18772399df3285da1506%2FDelete_Action.gif?alt=media)

如果场景中还有其他对象，例如头像网格，请通过点击 Outliner 中的眼睛图标关闭其可见性。然后，前往 **文件** > **导出** > **gltf 2.0 (.glb, .gltf)**。在导出设置中，展开 Include，并在 **限制为** 中勾选 **可见对象**。点击 Export 后，你就可以将文件上传到 Builder 了！

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f2b0d6c5f3c5b785a902bf9bb4128611ce7f0cae%2FExport_Settings.png?alt=media)

## 在 Builder 中配置弹簧骨骼

上传包含 `springbone`命名骨骼的可穿戴物品后，Builder 会自动检测它们并显示 **弹簧骨骼** 配置面板。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-d87462e1ac78ef9158a3291eeb44cb49fb2e979e%2F03_spring_bones_panel.png?alt=media)

你可以在此面板中为每个弹簧根骨骼配置物理参数。Builder 中的头像预览会立即反映你的更改，因此你可以实时微调其行为。

{% hint style="info" %}
你不能在 Builder 中添加新的弹簧骨骼。骨骼必须已经存在于上传的 `.glb` 文件中，并使用正确的命名约定。Builder 只允许你为已检测到的弹簧骨骼配置物理参数。
{% endhint %}

### 参数参考

#### 刚度力

|         |       |
| ------- | ----- |
| **范围**  | 0 到 4 |
| **默认值** | `2.0` |

控制骨骼恢复到静止姿态的强度。这是恢复力——可以把它看作弹簧的“硬度”。

* **0**：骨骼完全不会回到静止状态——它只会在重力下无力地垂挂。
* **较低的值** （例如 0–1）：骨骼较松、下垂，能自由摆动。适合长而飘逸的头发或轻型悬挂饰品。
* **较高的值** （例如 3–4）：骨骼较硬，会保持在原始位置附近并迅速弹回。适合短发或刚性配饰。

#### 重力强度

|         |       |
| ------- | ----- |
| **范围**  | 0 到 2 |
| **默认值** | `0`   |

控制每一帧作用在骨骼上的重力大小。

* **0**：没有重力影响——骨骼只受运动惯性和刚度影响。
* **较低的值** （例如 0.3–0.8）：轻微的重力拉力，适合大多数配饰。
* **较高的值** （例如 1.5–2.0）：较强的重力拉力，会使骨骼明显下垂。

#### 重力方向

|         |                          |
| ------- | ------------------------ |
| **格式**  | X、Y、Z 向量                 |
| **默认值** | `X: 0, Y: -1, Z: 0` （向下） |

设置世界空间中的重力方向。默认情况下，重力向下拉（Y = -1），模拟自然重力。

| X  | Y  | Z  | 效果           |
| -- | -- | -- | ------------ |
| 0  | -1 | 0  | 向下（自然重力，默认）  |
| 0  | 1  | 0  | 向上（漂浮/超自然效果） |
| 1  | 0  | 0  | 向左           |
| -1 | 0  | 0  | 向右           |
| 0  | 0  | 1  | 向前           |
| 0  | 0  | -1 | 向后           |

你可以组合多个轴（例如， `X: 0.5, Y: -0.5, Z: 0`）来表示对角方向。这对于模拟类似风的效果或为超自然角色创建漂浮感很有用。

#### 阻尼力

|         |       |
| ------- | ----- |
| **范围**  | 0 – 1 |
| **默认值** | `0.5` |

控制骨骼多快失去动量并稳定下来。可以把它看作空气阻力或阻尼。

* **较低的值** （例如 0–0.2）：骨骼会长时间自由摆动后才稳定下来，就像摩擦很小的摆锤。
* **较高的值** （例如 0.7–1.0）：骨骼在运动后几乎立即稳定下来，给人一种沉重或被抑制的感觉。
* **1**：骨骼几乎不会移动——最大减速。

#### 中心骨骼（可选）

|         |            |
| ------- | ---------- |
| **格式**  | 骨骼名称（下拉菜单） |
| **默认值** | 无          |

一个可选的参考骨骼，用于计算弹簧骨骼相对于头像某个点的运动，而不是相对于世界空间。这可以防止头像四处移动（行走、奔跑）时弹簧链过度摆动。

**没有中心骨骼时**，弹簧会在世界空间中计算惯性——头像每迈出一步，骨骼都会像整个世界在移动一样作出反应，从而在移动过程中产生夸张的摆动。

**有中心骨骼时**，模拟会使用该骨骼的空间作为参考坐标系，因此只有头像的 *局部* 运动（转头、弯身）才会触发弹簧反应。

请根据可穿戴物品在身体上的位置选择中心骨骼：

| 可穿戴物品位置      | 推荐的中心骨骼        |
| ------------ | -------------- |
| 头部（头发、耳环、头饰） | `Avatar_Head`  |
| 上半身（披风、项链）   | `Avatar_Spine` |
| 下半身（腰带、裙装配饰） | `Avatar_Hips`  |

{% hint style="warning" %}
中心骨骼 **不能** 属于任何弹簧链。它应该是基础头像骨架中的骨骼。
{% endhint %}

## 常见用途与推荐数值

这些是建议的起始值。你可以使用 Builder 的实时预览按需调整。

| 使用场景      | 刚度        | 重力强度      | 重力方向     | 阻尼        | 中心             | 备注                   |
| --------- | --------- | --------- | -------- | --------- | -------------- | -------------------- |
| 长发 / 马尾   | 1.0 – 2.0 | 0.3 – 0.8 | 0, -1, 0 | 0.3 – 0.5 | `Avatar_Head`  | 链条中的骨骼越多 = 运动越平滑     |
| 短发        | 3.0 – 4.0 | 0 – 0.3   | 0, -1, 0 | 0.4 – 0.6 | `Avatar_Head`  | 更高的刚度会让头发更贴近头部       |
| 耳环        | 0.5 – 1.5 | 0.5 – 1.0 | 0, -1, 0 | 0.4 – 0.6 | `Avatar_Head`  | 短链（2–3 个骨骼），较低刚度以便下垂 |
| 披风 / 斗篷   | 1.0 – 2.0 | 0.5 – 1.0 | 0, -1, 0 | 0.3 – 0.5 | `Avatar_Spine` | 使用多条平行链条增加宽度         |
| 腰带 / 悬挂饰物 | 1.5 – 2.5 | 0.3 – 0.8 | 0, -1, 0 | 0.5 – 0.7 | `Avatar_Hips`  | 较高阻尼适合更重的物件          |
| 漂浮 / 幽灵效果 | 1.0 – 2.0 | 0.5 – 1.0 | 0, 1, 0  | 0.3 – 0.5 | `Avatar_Spine` | 向上的重力，营造超自然外观        |

## 限制

在处理弹簧骨骼时，请记住以下限制：

* **无碰撞体**：弹簧骨骼不会与头像身体或其他骨骼发生碰撞。链条在极端姿态下可能会穿过身体网格。未来版本可能会加入碰撞体支持。
* **无跨可穿戴物品交互**：每个可穿戴物品的弹簧链都是独立的。不同可穿戴物品之间的链条不会互相影响。
* **无全局风力**：没有场景级风力。你可以通过调整 `gravityDir` 为对角方向，来近似实现风力效果。
* **远程头像的性能**：为了节省性能，距离本地玩家较远的头像会禁用弹簧骨骼模拟。附近的头像会正常显示弹簧骨骼物理效果。
* **替代客户端兼容性**：带有弹簧骨骼的可穿戴物品与替代客户端和旧版 Explorer 向后兼容，但弹簧骨骼元素将保持静态。在某些情况下，可能会有轻微的视觉问题。

## 技术参考

弹簧骨骼物理使用两个协同工作的独立工件：

1. **该 `.glb` 文件** 仅包含骨骼名称（带有 `springbone` 标记）及其层级。模型文件中不存储任何物理参数。
2. **可穿戴物品的项目元数据** (`wearable.data.springBones`）以 JSON 形式保存所有物理参数。

当你在 Builder 中配置参数时，它们会保存到可穿戴物品的项目元数据中—— `.glb` 文件不会因参数编辑而被修改。

你无需直接与这种格式交互——读写工作由 Builder 处理。本节仅供参考。

### `.glb` 节点层级（示例）

模型文件仅包含骨骼名称和父子关系：

```json
{
  "asset": {"version": "2.0"},
  "nodes": [
    {"name": "Avatar_Head", "children": [1, 2]},
    {"name": "SpringBone_earring_r", "children": [3]},
    {"name": "SpringBone_hair_left", "children": [4]},
    {"name": "springbone_earring_r_tip"},
    {"name": "SpringBone_hair_left_tip"}
  ]
}
```

### 物品元数据（`wearable.data.springBones`)

物理参数存储在可穿戴物品的元数据中，并以 GLB 内容哈希作为键：

```json
{
  "version": 1,
  "models": {
    "bafkreialsvt77jvpy673cnugp5ggnxfaalfncufweayuk3jbxskh3pelkm": {
      "SpringBone_earring_r": {
        "stiffness": 0.5,
        "gravityPower": 1.0,
        "gravityDir": [0, -1, 0],
        "drag": 0.6,
        "isRoot": true,
        "center": "Avatar_Hips"
      },
      "SpringBone_hair_left": {
        "stiffness": 2.0,
        "gravityPower": 0.8,
        "gravityDir": [0, -1, 0],
        "drag": 0.4,
        "isRoot": true
      }
    }
  }
}
```

* `models` 以 GLB 内容哈希作为键。男性和女性表现形式共享同一 `.glb` 的可穿戴物品会只有一个条目。
* 每个骨骼条目都使用 `.glb` 中的精确节点名称（区分大小写）。
* 末端骨骼（例如， `springbone_earring_r_tip`) 不需要元数据条目——它们仅作为几何端点。

### 元数据参数

| 参数           | 类型   | 默认值          | 描述                           |
| ------------ | ---- | ------------ | ---------------------------- |
| `刚度`         | 浮点数  | `2.0`        | 指向静止姿态的恢复力。范围：0–4。           |
| `重力强度`       | 浮点数  | `0`          | 重力的大小。范围：0–2。                |
| `gravityDir` | 三维向量 | `[0, -1, 0]` | 世界空间中的重力方向。                  |
| `阻尼`         | 浮点数  | `0.5`        | 阻尼/减速系数。范围：0–1。              |
| `是否为根节点`     | 布尔值  | —            | 此节点是否为弹簧链的根节点。必须为 `真` 用于根骨骼。 |
| `中心`         | 字符串  | —            | 可选。用于相对惯性计算的参考骨骼名称。          |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing/ke-chuan-dai-wu-pin/spring-bones.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
