Anima2d是一个非常酷、快速、精致的二维动画插件,使用非常简单。但是你找到了文件的中文版本[黑色问号]了吗?我的big B站一定处于时尚前沿,所以我愤怒地翻了一份完整的文件,并在我的big B站展示了它。这篇文章从头到尾都是直接编码的。可能有点粗糙。当你有时间的时候改变它。让我们聚在一起,先用它。
2. 关于Anima2D
使用Unity5.X时,Anima2D是最先进且完整的2D骨骼动画解决方案。使用Anima2D,你将可以在Unity中为你的游戏创建2D骨骼的人物和背景。
Anima2D扩展Unity通过,添加2D骨骼层级结构(2D Bone Hierarchies),一个强大的可完全控制网格生成的SpriteMesh编辑器 和2D反向力学(2D Inverse Kinematics)。Anima2D严格按工作流开发,且无缝集成到Unity。
3. 特点
骨骼层级结构
使用Bone2D组件来创建骨骼层级结构。创建骨骼从来没有如此的简单:仅仅是创建,设定父子关系和连接Anima2D的骨骼。通过拖拽它的gizmo来控制骨骼的旋转。
网格编辑器
从Sprites中创建Meshs复合体。网格可以在网格编辑器窗口中进行调整。你可以增加和删除点,洞(holes),边和边的约束来得到想要的三角形划分。
自动的权重设置
Anima2D自动的为你计算骨骼权重。我们使用现阶段最先进的算法来给你绝大多数情况下立即可用的权重设置。
权重设置工具
使用集成的权重设置工具编辑和调整你的权重设置。它允许通过添加或减少骨骼的影响来编辑单个或多个顶点,平滑临近的点并且自动设置默认值。
反向力学
Anima2D引入了一个易用的2D反向力学系统(IK),其允许为四肢和任意长度的骨头创建一致的姿势(consistent poses)。IK在Scene视图中也能正常工作!
动画创作
Anima2D为在Unity的Animation窗口制作动画进行了专门的设计。在录制模式下进行移动,旋转骨骼或者IK物体,并且当你完成动画编辑后将烘焙你的动画到骨骼中去。
姿势(Pose)管理器
保存和加载骨骼的姿势通过单击Pose Manager组件。Poses被保存到一个单独的asset文件中,并且在录制模式下仍然可以导入。
骨骼控制元件
使用骨骼控制元件来操作想要调节骨骼的位置和旋转,即使其在Scene视图中是被隐藏或者锁定的。控制元件可以用于创建动画(animations)并且也会为被影响的骨骼创建新的关键帧。
Sprite优化器
Anima2D将会覆盖原始的Unity Sprite的几个结构。以此来进行,简化你原始的Sprite,减少overdraw,减少顶点数,和其他优化。
自动的网格划分
少量的点击可以创建新的sprite,并且进行自动优化。仅需要选择图片区域,设置所需参数,Anima2D将会完成余下的工作。
完整的自重叠控制
配置绑定点的Z-Order来定义如果发生自重叠(self-overlaping)是网格中的哪部分应该前面,哪部分在后面。
图集(Atlases)
得益于重写几何结构的特性,Anima2D完全兼容Unity原生的图集。你的骨骼图片将总可以打成图集纹理。
减少draw-calls
如果你的骨骼图片使用相同的纹理图集,你可以在运行时把他们结合成一个单一的骨骼网格,以此来减少draw-calls并且提高你游戏的性能。
洋葱式蒙皮(Onion skin)
当创建它时,将可以看见你动画的前置和后续帧。
Avatar遮罩
创建你动画部件(animated elements)的Avatar Mask,并且在Mecanim的不同层中使用它。
源代码引入
Anima2D自带完整的源代码
Unity集成
我们关心易用性和可集成性。我们为秉承Unity式的设计理念做出了努力,迭代工具直到它变得易用但又强大。支持完整的卸载。资源预览。拖拽和丢放到Scene视图。你将 忘记你正在使用一个插件。
5怎么使用
本章我们将给你展示怎么使用Anima2D进行,sprite骨骼蒙皮,添加反向力学,创建骨骼动画。
5.1 sprite的骨骼蒙皮
1.创建一个SpriteMesh
首先我们需要创建一个从Unity Sprite中创建一个SpriteMesh。SpriteMesh是一个可被编辑和蒙皮的特殊Sprite。
为了做到这点,在进入你工程视图中sprite的文件夹,在sprite上点击右键,并在菜单中选择Create -> Anima2D -> SpriteMesh。
Project View context menu
如果你想为纹理(texture)中所有的sprite创建spriteMesh,则在texture上右键点击操作。
重要提示:每个sprite只保留一个spritemesh。不要在视图复制你的spritemesh资源文件。
另一种方式是在一个有SpriteRender组件的GameObject上点击右键,并选择2D Object -> SpriteMesh。这将吧SpriteRender替换为SpriteMeshInstance,插件将生产对应的assets。
Create SpriteMesh from Hierarchy
当SpriteMesh被创建时,Anima2D将添加一个新的类似于sprite的asset。
Assets created from the original Sprite.
2.编辑SpriteMesh
创建spritemesh后你可能想要修改默认的三角形划分来满足你的蒙皮需求。为此,先在菜单选择中通过Window -> Anima2D -> SpriteMesh Editor打开spritemesh editor,并且在工程视图中选择之前创建的asset。sprite将在编辑器中等待修改(更多详细信息请阅读第六章)
SpriteMesh Editor using the sprite’s default triangulation
在spritemesh editor中你有多个选项去手动编辑你的spritemesh,来满足你的需求:
Move vertices:直接左键点击和拖拽已存在的点到你想要的地方。
Add vertices:通过在图片上双击来增加新的点。
Delete vertices:左键点击选中不需要的点,然后按键盘上的Delete / Backspace键。
Clear selection:右键点击任何位置。
Split edges:先清除选中。然后按住Shift键并左键点击来拆分封闭的边。
Add edges:先选中一个点。然后按住Shift键并在另一个点上点击左键。否则将创建一个的点。
Remove edges:选中你想移除的边并按下键盘上的Delete / Backspace键。
Add holes:有时你可能想在你的游戏中避免显示mesh的一部分。为此你可以使用hole。你可以通过按下Hole按钮,并在你想添加hole的地方双击来添加一个封闭的区域。
也可以自动的创建拓扑结构。点击Slice按钮切换到Slice工具(更多详情请阅读第六章)。
Slice tool .
一旦调整到你理想的结构,就按右上角的Apply按钮保存该修改。原始的Sprite将被修改成当前编辑的结构。
3.创建一个SpriteMeshInstance
SpriteMeshInstance与SpriteRender组件非常相似,但是SpriteMeshInstance使用SpriteMesh而不是Sprite,并且SpriteMeshInstance组件持有一个骨骼列表。你应该在SpriteMeshInstance上使用于SpriteRender相同的材质(materials)。
当使用没有蒙皮信息的SpriteMesh是,骨骼列表是可以编辑的。
SpriteMeshInstance with no skinning information
否则骨骼列表将被不可修改,并且告诉你哪根骨骼需要设置允许蒙皮(enable skinning)。
SpriteMeshInstance with skinning information.
仅通过从工程视图(Project View)拖放一个SpriteMesh到场景(Scene)就可以完成SpriteMeshInstance的创建。
4.创建一个骨骼的层级结构
Bone2D是一个有长度属性并且可以与其子Bone2D连接成链的物体。创建一个骨架仅需的操作有:设置父子关系,解除父子关系,复制,重命名等。
在hierarchy框中点击右键并且在弹出菜单中选择2D Object -> Bone,另一种方法是使用快捷方式Alt + Shift + B。当你选中一个骨骼有选择创建一个骨骼时,他们尝试自动连接成链。
New bone
你需要通过指定Child字段(编辑器中即名为Child的Transform选项)来创建一个骨链。有子骨骼的骨骼将会指定子骨骼的方向,并且调整子骨骼的长度来使得其末节点与子骨骼的位置重叠。
Bone with a linked child bone
为SpriteMeshInstance设置骨骼
一旦你的场景里有了SpriteMeshInstance和骨骼层级结构,选择SpriteMeshInstance并且拖拽骨骼层级结构到Set bones字段。然后你将能看到一个该实例(instance)将要使用的骨骼的列表。
A SpriteMeshInstance with bones.
另一个添加骨骼的方式是通过拖拽骨骼到列表的字段来手动编辑骨骼列表。
再次打开SpriteMesh Editor窗口,并且选择你的SpriteMeshInstance。这次骨骼将出现在编辑器中。
SpriteMesh Editor showing the referenced bones from the current SpriteMeshInstance
6.绑定骨骼
一旦骨骼出现在编辑器中,点击Bind按钮将自动的计算骨骼的权重。骨骼一定要在Mesh中。选择Overlay复选框来可视化这个过程。
SpriteMesh Editor showing a colored overlay representing the vertex weights.
你可以通过使用Weight Editor增加或减少骨骼对选中点的影响程度(更多详情请阅读5.2章)
权重可以通过点击Smooth按钮来进行平滑。你还可以通过选中一组点对他们进行平滑。
点击Auto按钮来重新计算权重。这对在绑定过程中创建新点是有助的。
点击Apply按钮来结束修改,并且你的SpriteMeshInstance将进行自动重置,并可进一步进行蒙皮。现在设置完成,你的mesh将会随着骨骼的旋转和移动进行相应的变形。
5.2 使用反向力学
使用反向力学,应在hierarchy中选中一个骨骼并选择2D Object -> IK Limb or 2D Object -> IK CCD。一个带有相应IK组件的游戏物体将被创建。移动新创建的游戏物体来观察IK对骨骼姿态的改变。
IK Limb需要一个双骨骼链条,并且其更适用于角色四肢。它使用了直接的余弦定理的解决方案。
Inverse Kinematics controlling the robot’s limbs.
IK CCD可以通过使用Cyclic Coordinate Descent solver来协调所有的骨链长度。
CCD Inverse Kinematics with a long bone chain.
IK组件有一个Weight字段可以具体的设置IK对最终动作的影响。
5.3保存和加载动作
一旦我们有了角色rig,我们可以通过添加PoseManager组件到对象并且点击Create new pose按钮来保存骨骼的位置动作。着将保存所有的子骨骼姿态到一个单独的asset文件中。通过点击理想动作的Load按钮来恢复至该动作。点击Save按钮来覆盖这个动作。
PoseManager component.
5.4 创建控制
Controls是一个显示手柄的对象,其可以改变骨骼的位置的旋转。Controls被用于显示骨骼的子集结构中需要运动,隐藏,或者锁定其他同级结构。这种方式你可以使用更简洁的界面来穿件的动画。
为了创建控制器,在hierarchy中右键点击骨骼,并选择2D Object -> Control。你也可以参考后面的操作手册来设置骨骼。
Controls.
选择Rotation Tool来切换到旋转手柄。
5.5 创建动画
最后我们可以开始使用Unity的Animation窗口来创建动画。本节我们将解释怎么创建动画并使用IK,怎么烘焙动画到骨骼中。
1.创建一个动画文件
打开动画窗口(Window -> Animation),选择你角色的根GameObject,并在动画开窗口下来菜单中选择[Create New Clip],来创建一个新的动画片段和动画控制器(clip and AnimatorController)。
Creating animations using Unity’s Animation Window
2.创建使用IK的动画
当你的角色有复杂层级结构时,直接通过移动骨骼来创建动画将变得复杂。幸运的是IK使你可以通过设置每个骨链的目标位置来设置你角色的姿势。
Animation created using IK objects.
移动和旋转IK对象来创建一个新的关键帧,并通过大多数的IK曲线来创建你的动画。这种方式你可以处理个更少的曲线,并且用更少的关键帧来更快的处理复杂的运动。
3. 烘焙动画到骨骼
既然你使用IK物体来创建动画,那么是时候为所有被影响的骨骼创建曲线了。这种方式我们将可以避免运行时高昂的计算成本。但另一方面,这个过程将要添加很多关键帧,并且会增加所需的储存大小。
Animation baked to bones.
为了烘焙动画到骨骼,你需要再Animation窗口中选择相应的animation,然后选择Window -> Anima2D -> Bake Animation。在进行这个过程之前,我们推荐你在其他位置复制保存一个animation的副本。这样的话你可以以后修改和比替换和这个烘焙结果。你现在可以禁用IK对象来测试你新烘焙的动画。
当然也可以使用IK来记录骨骼的关键帧。这在制作简单的动画是有用的,因为你为了它们尽可能小而不像选择烘焙。
如果是这样的话,设置你IK组件中的Record开关,所有被你IK影响的骨骼都会被记录到关键帧。
5.6创建Avatar遮罩(AVATAR MASKS)
Avatar Mask
为了创建一个Avatar Mask,选择一个添加了Animator组件的物体,并且选择Window -> Anima2D -> Create Mask。在保存对话框中选择保存到你的工程中。
6.查考
本章你将会发现Anima2D中所有组件详细的解释,从菜单组成元素,组件,到编辑器窗口。
6.1 组件
在Anima2D你将看到下面这些组件:
Bone2D
在你的场景中定义了2D骨骼层级结构的组件。
-Color:设置骨骼颜色。
-Alpha:设置骨骼透明度。
-Child:设置一个子骨骼来形成骨链。子骨骼一定要是一个骨骼的直接子物体(译者注:子骨骼上一层父物体不不能是非骨骼)。移动子骨骼到编辑器中将会相应影响父骨骼的朝向和长度。
-Length:骨骼的长度。
Sprite Mesh Instance
负责管理渲染器的组件。
-Sprite Mesh:参照SpriteMesh aset。
-Color:实例的颜色。
-Material:实例的Sprite材质。
-Weight:IK solver对最终姿势的贡献量。
-Restore Default Pose:设置回执行计算之前的姿势。
-Orient Child:旋转目标的子骨骼(如果可以的话)来进行IK旋转。
-Filp:为四肢使用另一个姿势解决方案。
Ik CCD2D
IK组件操作了互相连接的骨链。
-Record:记录动画模式下骨骼的关键帧。
-Target:将要运用IK的目标骨骼。
-Weight:IK solver对最终姿态的贡献量。
-Restore Default Pose:设置回执行计算之前的姿势。
-Orient Child:旋转目标的子骨骼(如果可以的话)来进行IK旋转。
-Number bones:被IK solver影响的骨骼数量。最大值是骨链的根节点。
-Iteration:solver的迭代数量。
-Damping:Controls是步移速度的solver(离散的,连续的)。小的值将在每次迭代时产生大步移速度。大的值将产生更小的步移速度。一个高的Damping值将看起来更自然。
Control
Control组件将显示你骨骼的手柄。
-Bone Transform:目标骨骼的transform。
Pose Manager
添加一个Pose Manager组件到你骨骼层级结构的中的根节点。
-Save button:复写姿势。将保存所有GameObject的子骨骼的姿态。
-Load button:重置姿势。
-Create new pose button:创建一个含有当前姿态的新的asset文件。
IKGroup
这个组件将要更新一些列的IK对象。当你想要在运行时指定IK元素的执行顺序时,它将是有用的。
-IK Component:IK引用的列表。
SpriteMesh Animation
使用这个组件来,通过动画的帧属性将animation中将SpriteMesh替换为SpriteMeshInstance。
-Frame:需要交换的帧的编号。
-Frames:在动画中需要交换的SpriteMesh 的列表。
6.2 SpriteMesh Editor Window
SpriteMesh编辑器窗口是Anima2D进行网格编辑的主要工具。你可以创建任何拓扑结构的网格,设置绑定点,权重等。
这个编辑器由以下元素组成:
1.bone可见开关。
2.打开/关闭切割工具。
3.添加hole开关。
4.绑定/解绑骨骼。
5.The Inspector。
6权重设置工具。
7.应用/回滚修改。
6.2.1编辑几何结构:
-Move vertices:左键点击并拖拽顶点。
-Add vertices:双击图片。
-Delete vertices:按下Delete/Backspace键来删除选中的点。
-Select vertices:点击或拖拽出矩形选择区域。按住Ctrl/Cmd来添加当前的选中项。
-Clear selection:右键点击任何位置。
-Split edges:先清除选中项。然后按住Shift并点击左键来切割临近的边。
-Add edges:先选中单独一个顶点。然后按住Shift并点击另一个顶点。否则将生成一个新的顶点。
-Remove edges:选中你想移除的边,并按下键盘上的Delete/Backspace键。
-Add holes:点击Hole按钮,并且在你想添加hole的地方双击。
-Remove bones/bind poses:选择一个骨骼或绑定的位置,并且按下Delete/Backspace键。
-Move pivot point:拖拽蓝色的圆圈。按下Ctrl/Cmd可以对齐到像素。
6.2.2 切割工具:
切割工具使你可以从图片轮廓中自动的切割出网格。点击Slice按钮来打开这个工具:
Slice tool parameters.
-Outline detail:设置更大的参数值则将会有更多顶点被创建到轮廓上。
-Alpha cutout:Alpha容差将被用来忽略像素。
-Tessellation:如果你想包含顶点到网格拓扑结构的内部就增大这个参数。
-Detect holes:Hole区域将可见(首先你需要在这个区域有一个Hole)。
使用方向的手柄来调节sprite的大小,设置参数。然后点击Apply按钮。
Rectangle handles and calculated geometry.
6.2.3权重工具
权重设置工具将会可以增加或减少影响选中顶点的骨骼数量。
Weight tool.
权重设置工具将显示一个下拉菜单和一个不可用的滑动条。从下拉菜单中或从窗口中左键选择选择一个骨骼。移动滑动条到右侧来增加骨骼的影响。移动滑动条到左侧来减少影响。
-Smooth:从一组临近的顶点中通过平均他们来平滑权重。
-Auto:从选中的顶点中自动的计算出权重。如果没有选中顶点则计算所有的顶点。
-Overlay:显示一个着色的网格来表示逐顶点的骨骼影响。
-Pies:用饼图来显示每个顶点的权重信息。
6.2.4 Inspectors:
根据选中元素的不同,Inspector将显示不同的信息和选项:
Empty selection.
-Empty selection:如果没有东西被选中,那么inspector将会显示sprite和SpriteMesh的中心点。
Bind pose selection.
-bind pose selection:如果选中了绑定点,你将可以编辑它的名字,Z-Order和显示颜色。Z-Order在发生自重叠时被用来计算哪些部分在前面哪些部分在后面。
Weighted vertex selection
-vertex(bound)selection:将用滑动条的方式显示顶点的权重和相关的骨骼。这将使得可以调整单个的顶点。移动滑动条来改变权重,在下拉菜单中选择性的骨骼来关联其他骨骼。
6.3Onion Skin
洋葱蒙皮是一个为了得到更好运动图片,因而展示之前和随后帧的工具。
Onion Ski
n integrated with Unity’s Animation Window.
点击Window -> Anima2D -> Onion Skin打开Onion Skin窗口。为了更方便请将该窗口吸附到Animation窗口旁。这个窗口将有一下选项:
-Active:设置可用/禁用预览。
-Frames:展示帧的数量。
-Step:预览前跳过帧的数量。
-Alpha:总体预览的透明度。
-Previous(color):之前帧的颜色。
-Next(color):随后帧的颜色。
提示:选中一个带有renderer组件的物体可以单独预览它。