> 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/biao-qing/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 平方米。道具和粒子应保持在 Avatar 文件中提供的参考立方体内。有关头像移动，请查看 [地面参考和动画区域](/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing/biao-qing/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-he-dong-hua/create-a-rig.md) 以获取如何操作的更多信息。

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

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

某些道具可能需要附着到特定的身体部位，例如网球拍在手上。只需添加约束即可实现。为此，在 ***姿态模式***&#x4E2D;，选择道具骨骼（例如网球拍的那个），按 ***CTRL + Shift + C*** 在键盘上，然后选择 ***Child of*** ，或者只需点击 ***骨骼约束属性*** 选项卡，并在下拉菜单中选择 ***Child of***.

*按下 `Ctrl + Shift + C` 在键盘上添加一个约束。*

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

***Child of** 约束菜单上方时按 I 给 influence 打关键帧，以切换其开关。*

{% 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 轨道中。确保头像只有一个动画剪辑，道具也只有一个动画剪辑， **它们必须具有完全相同的帧数。**

在 ***对象模式***，选择头像骨架，进入 ***姿态模式***，在 Browse Action 菜单中选择相应的动画剪辑，点击 ***Action*** ，然后点击 ***Push Down*** 选项。

然后，切换回 ***对象模式***，选择道具骨架，进入 ***姿势模式***，在 Browse Action 菜单中选择相应的动画剪辑，点击 ***Action*** ，然后点击 ***Push Down*** 选项。

将动作推送到 NLA 轨道。

{% hint style="warning" %}
⚠️ 将动作推送到下方轨道时要小心。确保你先选择了带有相应动画的目标骨架。不要只是更改动画后，在选择另一个骨架之前就将其推送下去，否则你会把两个动作分配给同一个骨架，而另一个骨架没有任何动作。
{% endhint %}

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

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

**在这一步之前，请确保为你的项目做一个备份。**

如果你的道具由不同对象组成，你可以将它们合并为一个单独的网格。只需选中这些对象并按快捷键 ctrl + J 即可。

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

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

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

## **导出**

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

导出时仅显示头像骨架、道具骨架和道具网格。

要导出，请转到 文件 > 导出 > glTF2.0 (.glb, .gltf)

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

|   |   |
| - | - |

点击导出，就完成了！

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

### 音频剪辑的格式与限制

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

{% hint style="info" %}
**📔 注意**：如果表情动作包含声音（mp3 或 ogg），则必须与 .glb 一起压缩为 zip。之后，只需将 .zip 拖放到构建器中即可。更多细节请见： [上传带声音的表情动作](/creator/content-creator-zh/chuan-dai-wu-yu-biao-qing/guan-li-collection/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 再从 1 到 0 设置关键帧即可。
{% endhint %}

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

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 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/biao-qing/props-and-sounds.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.
