> 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-dong-zuo/biao-qing-dong-zuo/props-and-sounds.md).

# 道具和声音

向表情动作中添加道具和声音的指南。

为了让你的 Decentraland 动作表情更上一层楼，你可以为它们添加道具（3D 几何体）和/或声音，让动作表情变得更加有趣和吸引人！在本指南中，你将找到正确导出它们所需了解的一切！

{% hint style="info" %}
**💡 提示**：安装 [Decentraland Tools Blender 插件](https://extensions.blender.org/add-ons/decentraland-tools/)。它包含一些实用功能，可帮助你编辑和导出 3D 模型、可穿戴物品和表情动作。
{% endhint %}

## **基础与限制**

要开始为你的动作表情添加道具，重要的是使用 [Decentraland 模板文件](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/BaseMale_Rig_1.0.blend) 它包含头像的骨骼绑定，以及地面参考，以确保你的作品始终处于允许的空间边界内。

**目前，道具动画仅适用于骨架/骨骼动画，这意味着 \_transform 动画**\_\*\* 不允许。\*\*

带有道具的动作表情必须全部一起导出到一个单独的 *.glb* 文件中（Avatar\_Armature + Props\_Armature 及其动画）。

* 总大小不得超过 3 MB。
* 道具总三角面数不得超过 3k。
* 道具最多只能使用 2 个材质和 2 张贴图。
* 道具骨架的骨骼数不得超过 62 根。
* 动作表情必须包含一个头像动画和一个道具动画。 *目前不允许使用多个动画。*
* 两个动画（头像和道具）必须具有相同的关键帧长度。
* 动画不得超过 300 帧或 10 秒。
* 空间边界为 4 平方米。道具和粒子应保持在头像文件中提供的参考立方体内。关于头像移动，请查看 [地面参考和动画区域](/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing-dong-zuo/biao-qing-dong-zuo/creating-emotes.md#ground-reference-and-animation-area)。部分。

## **命名约定：**

必须严格遵守命名约定，动作表情才能正常工作！否则它们在构建器中和世界里都无法正确播放。

#### 骨架命名约定：

**用于头像：**

`骨架`

**用于道具：**

`Armature_Prop`

#### 动画命名约定：

**用于头像：**

`AnimationName_Avatar`

* 示例： `TennisServe_Avatar`, `GunShoot_Avatar`

**用于道具：**

`AnimationName_Prop`

* 示例： `TennisServe_Prop`, `GunShoot_Prop`

## **开始上手**

在开始你的动画之前，你必须为道具创建一个骨骼绑定。如果你不熟悉这个过程，请查看 [创建骨架](/creator/content-creator-zh/3d-jian-mo-yu-dong-hua/create-a-rig.md) 以了解如何操作。

确保道具对象和骨架在 Blender 中的原点都位于 0,0 位置。此外，对道具对象和骨架应用变换，确保它们的缩放固定为 1,1,1。这一点对于避免在世界中使用或在动画过程中道具行为出现任何潜在问题至关重要。

#### 让道具跟随头像骨架

某些道具可能需要附着到特定身体部位，例如网球拍要绑在手上。这可以通过添加约束来实现。为此，在 ***Pose Mode***&#x4E2D;，选择道具骨骼（例如网球拍对应的骨骼），按下 ***CTRL + Shift + C*** ，然后选择 ***Child of*** ，或者直接点击 ***骨骼约束属性*** 选项卡，并在下拉菜单中选择 ***Child of***.

*按下以下组合键添加约束： `Ctrl + Shift + C` 。*

然后，在 ***目标***&#x4E2D;，选择头像骨架，并在 ***骨骼*** 中选择你希望道具跟随的骨骼。要保持道具的原始位置，在添加约束后点击 ***Set Inverse*** 。如果影响值为 1，道具将完全跟随所选骨骼；如果为 0，约束将被禁用。你可以在影响值上设置关键帧，以便在整个动画过程中将其打开或关闭。要这样做，只需在光标停留在 ***影响值***.

***Chlid of** 约束菜单上时按 I。通过关键帧控制影响值的开关。*

{% hint style="info" %}
**💡动画提示！** 如果你使用滑块来关闭 Influence，道具将不会保持其先前位置，这会让保持动画流畅变得困难。为了避免手动修正位置，不要使用滑块，而是点击 Influence 旁边的 X，为其设置一个关键帧，并为所有变换属性再设置一个关键帧。这样，道具就会保持与 Influence 打开时相同的位置！
{% endhint %}

{% hint style="info" %}
**💡动画提示**

不要让道具从一开始就可见！为了避免提前暴露即将发生的内容并产生突兀的过渡，请在动画开始时将道具缩放到 0.001，并且只在你希望它出现时将其设为 1。记得在动作结束时再缩小回 0。这样会让过渡更流畅、更酷！
{% endhint %}

### 动画槽

Blender 4.4 引入了一个新功能：动画槽。根据 Blender 文档，“槽的目的是让一个动作能够为多个数据块存储不同的动画数据”。简而言之，槽使得将多个事物的动画存储在同一个 Action 中成为可能。这会如何影响 Emotes 2.0？

Blender 4.4 新功能：动画槽。

虽然头像和道具可以共享同一个动作剪辑，但由于 Emotes 2.0 中的命名规范和动画剪辑数量，这种方式不会生效。因此，对应流程如下：

1. 为头像创建一个动画剪辑，或者重命名提供的剪辑（***Starting\_Pose***）。它已经有一个动画槽，但你可以继续使用它（***Avatar\_Animation***）或者创建一个新的。
2. 重命名动画剪辑 ***AnimationName\_Avatar***
3. 为道具创建一个动画剪辑并将其重命名为 ***AnimationName\_Prop***
4. 点击 ***新建*** 按钮为其创建一个动画槽（它将获得一个自动名称： ***Armature\_Prop***)
5. 像在之前的 Blender 版本中一样进行动画制作。

为道具动画创建一个动作剪辑和一个槽。

## **NLA 轨道**

为了导出所有动画，剪辑应添加到 NLA 轨道中。确保头像只有一个动画剪辑，道具也只有一个动画剪辑， **它们必须具有完全相同的帧数。**

在 ***对象模式***，选择头像骨架，转到 ***Pose Mode***，在浏览动作菜单中选择相应的动画剪辑，点击 ***Action*** ，然后点击 ***Push Down*** 选项。

然后，再切换回 ***对象模式***，选择道具骨架，转到 ***姿态模式***，在浏览动作菜单中选择相应的动画剪辑，点击 ***Action*** ，然后点击 ***Push Down*** 选项。

将动作推入 NLA 轨道。

{% hint style="warning" %}
⚠️ 将动作推入时要小心。确保你选中了带有相应动画的目标骨架。不要在选择另一个骨架之前只是切换动画并把它推下去，否则你会给一个骨架分配两个动作，而另一个骨架一个也没有。
{% endhint %}

NLA 轨道应如下所示：每个骨架一个动画。

{% hint style="info" %}
**🔥 优化提示**

**在这一步之前，请务必备份你的项目。**

如果你的道具有多个不同对象，可以将它们合并成一个网格。只需选择这些对象并按下快捷键 ctrl + J 即可。

这有助于减少游戏中的绘制调用，使动作表情性能更好。

不过请注意，这对粒子无效。

*选择对象并按下 `Ctrl+J` 将它们合并。*
{% endhint %}

## **导出**

Emotes 2.0 的导出方式与普通动作表情相同。确保只有头像骨架、道具骨架和道具网格可见，并隐藏其他所有内容。

导出时仅保留头像骨架、道具骨架和道具网格可见。

导出时，前往 File > Export > glTF2.0 (.glb, .gltf)

在导出设置中，展开 Include，并在 Limit to 中切换 Visible Objects。然后展开 Data 选项卡，展开 Armature，并启用 Export Deformation Bones Only。

|   |   |
| - | - |

点击 Export 即可完成！

## **为动作表情添加音频**

### 音频片段的格式与限制

* 为你的动作表情导出声音的正确格式是 `.mp3` 和 `.ogg`.
* 音频片段必须与动作表情时长相同。
* 虽然音频本身没有大小限制，但带有道具和声音的动作表情不能超过 3mb。

{% hint style="info" %}
**📔 注意**：如果动作表情包含声音（mp3 或 ogg），则必须与 .glb 一起压缩为 zip。之后，只需将 .zip 拖放到构建器中即可。更多细节请见： [上传带声音的动作表情](/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing-dong-zuo/guan-li-he-ji/uploading-emotes.md#uploading-emotes-using-a-zip-file)
{% endhint %}

{% hint style="info" %}
**💡 注意！** 请注意，动作表情中使用的音频片段必须是原创知识产权（IP），拥有再现权，并且符合 [内容政策](https://decentraland.org/content/)标准。
{% endhint %}

### 编辑声音

你可以通过不同方式为动作表情添加声音：

1. **直接在 Blender 中编辑声音**

为动作表情添加声音的一种方法是使用 Blender 提供的视频序列编辑器。

要开始添加声音，请转到 *编辑器类型 > 视频序列器。*

将你的声音拖放到通道界面中。

按下快捷键 `N` 查看更多用于处理声音的选项，例如显示波形、将声音设为单声道或更改音量。

{% hint style="info" %}
如果你想做淡入和淡出，只需通过为音量属性添加从 0 到 1 以及反向的关键帧即可。
{% endhint %}

完成声音编辑后，你可以通过转到 *渲染 > 渲染音频*来导出。在导出选项中，你需要在 `.mp3` 或 `.ogg` 格式 *容器* 部分中选择，然后是 *Mixdown*. **只有帧范围内的音频会被导出。**

2. **渲染动画并使用音频编辑软件添加声音**

虽然直接在 Blender 中编辑声音很方便，但灵活性并不高，因为该软件并非主要面向声音编辑。可用工具非常基础。如果你想让声音更专业一些，我们建议使用你喜欢的专用音频编辑软件。

你可以使用多种软件，例如 [Audacity](https://www.audacityteam.org/) （免费且开源）、Adobe Audition、Ableton Live 或 ProTools。使用专用音频编辑软件将为你提供更丰富的工具、功能和声音效果，让你增强音效并使其更具专业感。

要渲染你的动作表情，你只需在 Blender 场景中添加一个相机，并将其摆放到能尽可能清晰看到所有元素的位置，以便之后有一个良好的参考来添加声音。

在渲染动作表情时，重要的是只包含动作表情的帧范围，而不要更多。选择适合你需求的宽高比，并选择你想保存视频或图像序列的输出文件夹。

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

*在渲染之前，务必使用低采样率渲染，以节省渲染时间！*
{% endhint %}

完成这一步后，使用你的视频作为参考，通过你偏好的音频编辑软件创建相应的声音。 **确保视频序列与动画的帧率一致，即每秒 30 帧（fps）**


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing-dong-zuo/biao-qing-dong-zuo/props-and-sounds.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
