# 工具

Spine中的工具位于主工具栏中：

![](/img/spine-user-guide/tools/toolbar.png)

在视口中的任意位置单击鼠标右键将在当前工具和上一个选定工具之间切换。这样使用多个工具就更有效率，因为比单击工具栏按钮快得多。切换工具也可使用默认热键：

<table class="layout"><tr><td>
	<table>
	<tr><td>姿势</td><td>B</td></tr>
	<tr><td>创建</td><td>N</td></tr>
	<tr><td>权重</td><td>G</td></tr>
	</table>
</td><td style="width:1em"></td><td>
	<table>
	<tr><td>旋转</td><td>C</td></tr>
	<tr><td>平移</td><td>V</td></tr>
	<tr><td>缩放</td><td>X</td></tr>
	<tr><td>剪切</td><td>Z</td></tr>
	</table>
</td></tr></table>

# 选择

Spine使用的不是专用的选择工具，而是智能选择系统。只需单击要选择的项目即可在视口中选择该项目。使用大多数工具时，在未选中的项目上开始拖动既会选中该项目，又会开始操作它。

要选择多个项目，可按住`ctrl`(Mac上为`cmd`)并单击各个项目。要框选，可按住`ctrl`(Mac上为`cmd`)并拖动。如果未选择任何内容，则可以通过在空白区域中拖动来进行框选。使用鼠标中键拖动将始终框选，而无需从空白区域开始。

## 取消选择

清除选择通常是不必要的，但可以通过按`空格键`、`escape键`或双击视口中的任意位置来完成。取消选择，然后在空白区域中拖动进行框选可能非常有用。

## 选择历史记录

需要选择最近选择过的对象是很常见的。重新找到并选择它们非常慢，因此Spine会记住你的选择，可以使用`page down`和`page up`在它们之间导航。这极大地减少了在视口中进行乏味的搜索和在层级树视图中滚动。

## 选择分组

可以通过按`ctrl+1`(Mac上为`cmd+1`)来存储选择，其中`1`可以是数字键0-9中的任意一个数字。稍后可以通过按数字键而不按住`ctrl`(或`cmd`)来调用选择。当经常需要相同的选择时，选择分组可以节省大量时间。例如，对于类人骨骼，可以为躯干、头部、手臂和腿部存储分组。

# 变换工具

`旋转`、`平移`、`缩放`和`剪切`工具的工作原理相似。通过拖动鼠标调整所选项目。拖动应从空白区域或项目本身开始。如果拖动从一个不同的项目开始，则该项目将被选中并进行调整。

在空白区域中拖动进行调整可以减少长时间使用鼠标设置动画带来的疲劳。调整迅速而精确，不需与小控制柄精确交互。

## 输入数字

每个变换工具都有一个数值显示，其值取决于选定的轴。可以键入新值，按Enter或Tab生效。

![](/img/spine-user-guide/tools/transform.png)

相对值可以输入以`+`开头的数字，例如`+123`。相对负值也必须以加号开头，例如`+-123`。

可以通过在数字上滚动鼠标滚轮或上下拖动来更改该值。按住`Shift`同时使用鼠标滚轮或拖动可以较小的增量调整值。

箭头键可用于更改选定变换工具的值。可在按住`Shift`的同时使用箭头键以较小的增量调整值。

## 轴

`本地`、`父级`和`世界`轴决定了旋转、平移和缩放所显示的数值，以及视口中显示的轴向。从而使你可以更好地控制项目的变换方式。

![](/img/spine-user-guide/tools/axes.png)

下面将说明所选轴如何影响每个变换工具。

## 旋转工具

旋转骨骼的轴心点始终是骨骼的原点。拖动时按住“Shift”可将旋转限制为15度增量。

**轴:**
* `本地`: 数值为相对于父项的逆时针旋转度数，其中0与父项的X轴指向相同的方向。
* `父级`: 选择`父级`轴不影响旋转。显示为本地旋转。
* `世界`: 数值为逆时针世界旋转度数，0向右，90向上，180向左，270向下。

对于骨骼，设置模式下的旋转限制为0-360度，指示骨骼的指向。在动画模式下，本地旋转可以超出该范围，指示旋转方向和骨骼将进行的完整旋转次数。但是，请注意，当选择`世界`轴时，即使在动画模式下，旋转也被限制为0-360度，因为它指示骨骼在世界坐标中的指向。在这种情况下，在键入旋转值时，`世界`轴按钮会亮显为橙色以示提醒。

## 平移工具

可以拖动视口中`平移`工具图标上的X或Y控制柄，以将平移限制在单个轴上。

**轴:**
* `本地`: 数值为使用项目的本地轴到项目父项的距离。X轴指向项目的旋转方向。
* `父级`: 也是到父项的距离，但使用父项的本地轴。X轴指向父项的旋转方向。
* `世界`: 数值为到世界原点的距离。

用 `本地`轴或 `父级`轴移动多个骨骼，可有效地将骨骼朝着不同方向移动相同距离。比如，同时延长双臂。

![](/img/spine-user-guide/tools/translate.png)

此处，通过选中`父级`轴，然后拖动`平移`工具图标上的红色X轴箭头，令下臂沿着父项X轴移动。

## 缩放工具

可以拖动视口中`缩放`工具图标上的X或Y控制柄将缩放限制在单轴。

**轴:**
* `本地`: 数值为要应用的本地缩放值。X轴指向项目的旋转方向。
* `父级`: 选择`父级`轴不影响缩放值。显示为本地缩放值。
* `世界`: 数值为项目和所有父级骨骼的组合缩放值。

始终使用项目的本地轴应用缩放。用于缩放的X轴(红色)始终指向项目的旋转方向。

不能直接编辑世界缩放值。当聚焦缩放文本框时，数值将更改为本地，并且输入的值将用作本地缩放。在这种情况下，在键入缩放值时，`本地`轴按钮会亮显为橙色以示提醒。

翻转是通过将一个或两个轴缩放到-1来实现的。

### 缩放示例

![](/img/spine-user-guide/tools/scale-uniform.png)

在这里，spineboy的躯干被缩小了。躯干的子骨骼继承其父骨骼的缩放，也会按比例缩小。

![](/img/spine-user-guide/tools/scale-flipped.png)

此处，spineboy的躯干在Y轴(绿色)上缩放为-1。这会导致Y轴指向相反的方向，而不会更改其大小。

![](/img/spine-user-guide/tools/scale-nonuniform.png)

在这里，spineboy的躯干被缩小了，但只在Y轴上。当X和Y缩放具有不同的值时，称为非均匀缩放。子骨骼一如既往地继承缩放，但由于父缩放沿父骨骼的Y方向挤压它们，因此子骨骼将被剪切(歪斜)。

![](/img/spine-user-guide/tools/scale-shear.png)

Y轴通常与X轴成90度角。此处选择了spineboy的手臂，以显示躯干骨骼的缩放剪切了子手臂骨骼，从而改变了X轴和Y轴之间的角度。

## 剪切工具

<callout>剪切可以应用于整个骨骼层次，并且比使用变形关键帧或网格权重更容易应用。此外，剪切在Spine Essential版中可用，而网格和权重需要Spine Professional版。</callout>

可以拖动视口中`剪切`工具图标上的X或Y控制柄来调整X轴和Y轴之间的角度，从而使附件倾斜。

与缩放类似，剪切会导致子骨骼和附件变形，最常用于动画中的少许自然挤压和拉伸(例如，请参见[spineboy的头](/img/spine-user-guide/tools/shear-example.gif))。剪切变形与缩放变形不同，有助于防止动画看起来僵硬或机械化。

![](/img/spine-user-guide/tools/shear.jpg)

## 姿势工具

`姿势`工具可以同时调整骨骼平移和旋转，无需切换工具即可实现快速骨骼操作。虽然大多数其他工具的工作方式是选择骨骼，然后在空白区域拖动以操纵骨骼，但“姿势”工具需要拖动骨骼上的控制柄。

要平移骨骼，请将鼠标移到骨骼的原点上以显示平移图标，然后拖动。选择多个骨骼时，只会平移拖动的骨骼。

要旋转骨骼，请将鼠标移动到骨骼上的任何位置(其原点除外)，使目标图标显示在骨骼的末梢，然后拖动。骨骼将旋转以指向目标。选择多个骨骼时，将使用IK(反向运动学)旋转所有骨骼，直到最后一个骨骼的末梢到达目标。

与其他工具不同，在空白处单击会取消选择，在空白处拖动会进行框选，从而可以轻松选择多个骨骼。

### 姿势示例

![](/img/spine-user-guide/tools/pose.png)

这里的尾巴是由`姿势`工具调整的。

可以调整没有共同父级的多组骨骼，而不会丢失选择。

![](/img/spine-user-guide/tools/pose-multiple.png)

这里手臂和腿都被选中。可以拖动任何选定骨骼以仅调整该肢体，而不会丢失对未调整的骨骼的选择。

## 骨骼长度工具

在设置模式下，当`旋转`、`平移`或`缩放`工具处于活动状态时，将鼠标放在选定骨骼的顶部可以调整骨骼的长度。可以同时调整多个骨骼。也可以使用骨骼的[长度属性](/spine-bones#长度)以数字方式调整骨骼长度。

![](/img/spine-user-guide/tools/bone-length.png)

这里在调整剑骨骼的长度。

如果在尝试选择其他骨骼时出现骨骼长度工具，请先[取消选择](#取消选择)。

拖动同时按住`alt`(Mac上为`option`)可将子骨骼移动相同的量。

# 其他工具

## 权重工具

`权重`工具与权重视图结合使用，可以设置骨骼对网格顶点的影响。有关详细信息，请参阅[权重视图](/spine-weights)。

## 创建工具

<callout>网格[线框](/spine-meshes#线框)可以启用，以便在创建骨骼时可以看到网格顶点。</callout>

`创建`工具可创建新骨骼，只能在设置模式下完成。在创建新骨骼之前，首先选择将成为父骨骼的骨骼。接下来，单击可创建零长度骨骼，或拖动以创建骨骼并设置其长度。

![](/img/spine-user-guide/tools/bones.png)

<callout>选择创建骨骼的位置时，请记住骨骼在旋转时围绕其原点旋转。<br><br>在Spine中，骨骼的创建位置没有限制。子骨骼的原点不要求位于父骨骼的末梢。</callout>

要轻松修复位置不正确的骨骼，请选择该骨骼，然后按住`alt`(Mac上为`option`)并拖动或单击以重新创建该骨骼。任何子骨骼或附件都不会受到影响。

创建骨骼后，将选择新骨骼。若要创建新骨骼的同级骨骼，必须再次选择父骨骼。如果在创建骨骼时按住了`Shift`，则不会选择新骨骼，这样可以更轻松地添加多个同级骨骼。

### 创建工作流程

创建骨骼、命名骨骼以及移动骨骼下的附件是一个乏味的过程。Spine提供了一个工作流程来减少所需的工作量。

<callout>一些图片编辑器[脚本](/spine-images#脚本)(如Photoshop脚本)可以创建骨骼，以便在将JSON数据导入到Spine中时，骨骼已经存在。</callout>

首先，创建附件以用作放置骨骼位置的参考。若要创建骨骼，请选择将成为父骨骼的骨骼，然后按住`ctrl`(在Mac上为`cmd`)并单击或拖动以选择要在新骨骼上添加的一个或多个附件。接下来，松开`ctrl`并单击或拖动可创建新骨骼。

通过执行此过程，选定附件的插槽将移动到新骨骼，并使用选定第一个附件的插槽命名新骨骼。这极大地减少了设置骨架所需的时间。

# 补偿

通常，当调整骨骼的变换时，任何附件和子骨骼也会受到影响。补偿允许在不影响附件或子骨骼的情况下调整骨骼。例如，这可用于移动骨骼以更改其旋转位置，而无需移动附件或子骨骼。

![](/img/spine-user-guide/tools/compensate.png)

<callout>为避免混淆，请务必在不再需要补偿时将其关闭。应用补偿时，按钮会闪烁橙色。</callout>

要移动骨骼而不影响其附件，请首先启用图片补偿。这会以相反的量变换附件，因此它们看起来完全没有更改。这在设置模式和动画模式下都有效，但在动画模式下，区域附件不支持补偿。

要在不影响子骨骼的情况下移动骨骼，请首先启用骨骼补偿。这会以相反的量变换子骨骼，因此它们看起来完全没有变化。在动画模式下，必须为骨骼补偿对每个子骨骼所做的更改设置关键帧。关键帧之间的插值仍可能导致子骨骼移动。

当骨骼缩放不均匀(即X缩放与Y缩放不同)时，由于附件位置的存储方式，图片补偿可能无法调整附件，使其看起来不移动。

# 自动关键帧

![](/img/spine-user-guide/dopesheet/autokey.png)

请参见[自动关键帧](/spine-keys#自动关键帧)。

# 视口选项

视口选项面板可以方便地查看骨骼和附件的禁用选择、可见性和名称标记。

![](/img/spine-user-guide/tools/options.png)

第一列控制是否可以选择骨骼、区域和网格附件以及其他附件。这可以通过防止意外选择来简化某些任务。仍然可以通过在层级树中单击项目来选择这些项目。

第二列控制骨骼、区域和网格附件以及其他附件的可见性。在设置动画时隐藏骨骼以减少混乱通常很有用。隐藏骨骼后，它们仍可被选中，并在鼠标光标下时显示。

第三列控制骨骼、区域和网格附件以及其他附件的名称标签的可见性。名称标签增加了复杂骨骼的杂乱程度，但可以更容易地找到特定的骨骼或附件。可以点击名称标签来选择该项目。

# 标尺

<callout>在Spine的未来版本中，标尺将添加参考线。</callout>

通过单击视口中[缩放滑块](/spine-getting-started#缩放)上方的标尺按钮可以显示标尺。标尺显示鼠标位置并有助于对齐。标尺单位采用世界坐标，与尚未缩放的图片的像素相对应。

![](/img/spine-user-guide/tools/rulers.jpg)

# 复制/粘贴

骨骼变换、附件变换和顶点位置可以通过选择它们并按`ctrl+C`(在Mac上为`cmd+C`)进行复制。稍后可选择相同或不同的骨骼、附件或顶点并按`ctrl+V`(在Mac上为`cmd+V`)粘贴复制的信息。

复制时，将存储世界位置和本地位置。粘贴时，必须选择`世界`或`本地`轴来应用世界或本地位置。

#### 骨骼变换

粘贴骨骼变换可以设置骨骼旋转、平移、缩放和剪切。应用复制的骨骼变换时会使用骨骼层次结构。这对于使一个肢体与另一个肢体匹配，或者将一个姿势的全部或部分从一个动画帧复制到另一个动画帧非常有用。

#### 附件变换

粘贴附件变换可以设置附件旋转、平移和缩放。这也可以通过将附件拖放到层级树中的另一个附件上来实现。

#### 顶点位置

粘贴顶点位置适用于网格、路径、边界框和剪裁附件。只要选择了相同数量的顶点，就可以将顶点位置粘贴到不同的附件。此外，在复制和粘贴之前选择顶点的顺序应该与你希望应用位置的顺序一致。

![vertex-copy](/img/blog/3.7-vertex-copy-paste.gif)

# 视频

第1部分:

[Bilibili](https://www.bilibili.com/video/BV1P54y147oV/)
<iframe src="//player.bilibili.com/player.html?bvid=BV1P54y147oV&autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>!!

[youtube:5zaNa7t_7N0&list=PLwGl7Ikd_6GRFo7d0uRu_fN2RIlvkxW7b]

第2部分:

[Bilibili](https://www.bilibili.com/video/BV1pV411t767/)
<iframe src="//player.bilibili.com/player.html?bvid=BV1pV411t767&autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>!!

[youtube:tXP4rz6LIVw&list=PLwGl7Ikd_6GRFo7d0uRu_fN2RIlvkxW7b]

[下一节: 关键帧](/spine-keys)
[上一节: 图片](/spine-images)
[Spine用户指南: 目录]