• 第一篇:Spine 相关的基本知识点和术语


    简介:

    Spine是一款编辑2D骨骼动画的工具。可以将图片绑定到骨骼上,然后通过控制骨骼实现动画。Spine主要知识点:Skeleton、bones(骨骼)、slots(槽位)、Skins(皮肤)、Events(事件)、Animations(动画)

    bones(骨骼)

    骨骼是动画的基本结构,每个骨骼都有自己的位置、旋转、缩放和父子关系,所以可以通过控制骨骼的这些属性可以实现动画效果。同时骨骼之间存在父子关系,父骨骼的变化会传递到子骨骼,即父骨骼能影响子骨骼变化。骨骼 - Spine用户指南

    slots(槽位)

    插槽是必须要在骨骼下,一个骨骼可以包含多个插槽。这也意味着我们可以对插槽进行切换(例如武器的更换)插槽 - Spine用户指南

    插槽可以控制附件的一些渲染属性例如:颜色、混合、alpha等,会影响附件的渲染。

    Attachments(附件)

    附件通常是绑定到骨骼上,但是一般都附加到插槽上。附件可以是图片,也可以是检测碰撞的边界框(例如是武器的碰撞体)等。插槽可以加多个附件,而附件的可见与不可见由骨骼控制,在运行时,只能显示一个附件。附件 - Spine用户指南

    spine 资源


    spine资源有altas、png、json。atlas主要描述的是每个纹理在png中的位置、旋转、大小信息。png是一张图集,可存在多张。json主要包含动画的变换信息。下面主要介绍json数据结构。

    JSON信息

    Skeleton:spine数据的hash值,spine版本信息、

    bones:记录了所有的骨骼信息,骨骼的名字、骨骼的父骨骼名字、以及在父骨骼中的旋转、位置、缩放、长度、如何继承父骨骼的变化、骨骼的颜色等。

    slots:记录了所有的插槽信息。每条信息含有插槽名字、附加的骨骼名字、附件名字。

    skins:记录了所有的皮肤信息。每条信息一般的结构如下:

    1. "skins": {
    2.     "newSkin": {//皮肤名称
    3.       "slotName1": {//插槽名称
    4.         "attachmentName1": { //附件名
    5.          "type": "mesh",
    6.          "uvs": [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0],  // 顶点的纹理坐标
    7.          "triangles": [0, 1, 2, 2, 3, 1],  // 三角形的顶点索引
    8.          "vertices": [x1, y1, x2, y2, x3, y3, x4, y4],  // 顶点的坐标
    9.          "edges": [0, 1, 1, 2, 2, 3, 3, 0]  // 边缘顶点索引
    10.         },
    11.   "attachmentName2": {//附件名
    12. "type": "region",//可省略、默认是region类型
    13. "x": 10, // 附件的水平位置
    14. "y": 20, // 附件的垂直位置
    15. "rotation": 45, // 附件的旋转角度
    16. "width": 100, // 附件的宽度
    17. "height": 50, // 附件的高度
    18. "scaleX": 1.0, // 附件的水平缩放
    19. "scaleY": 1.0, // 附件的垂直缩放
    20. "color": "ffffff" // 附件的颜色,通常使用十六进制表示
    21. }
    22.         、、、、、、
    23.    }
    24.  }
    25. }

    事件(Events):主要用于在特定的帧上触发特定的操作,可以是触发脚本中的函数(可携带参数)、音效、粒子效果等。数据结构

    1. "events": [
    2. {
    3. "name": "event_name", // 事件的名称
    4. "int": 42, // 事件的整数参数
    5. "float": 3.14, // 事件的浮点参数
    6. "string": "event_description", // 事件的描述
    7. "audio": "event_sound.ogg", // 与事件关联的音频文件
    8. "volume": 0.5, // 音频音量
    9. "balance": 0.0 // 音频平衡(左右声道)
    10. },
    11. // 其他事件...
    12. ]

    动画(animations):主要是记录了动作的时间轴列表。每个动作中包含插槽时间轴列表,指定了时间轴所使用的附件。骨骼的时间轴列表,指定了所使用到的骨骼在时间轴上的变化情况,例如:旋转、缩放、位移等。简单的数据结构如下

    1. "animations": {
    2. "idle": {
    3. "slots": {
    4. "slot1": {
    5. "0": [{ "attachment": "attachment1" }],
    6. "30": [{ "attachment": "attachment2" }],
    7. "60": [{ "attachment": "attachment3" }]
    8. },
    9. "slot2": {
    10. "0": [{ "attachment": "attachment4" }],
    11. "45": [{ "attachment": "attachment5" }],
    12. "90": [{ "attachment": "attachment4" }]
    13. }
    14. },
    15. "bones": {
    16. "bone1": {
    17. "0": { "rotation": 0 },
    18. "45": { "rotation": 45 },
    19. "90": { "rotation": 0 }
    20. },
    21. "bone2": {
    22. "0": { "rotation": 0 },
    23. "60": { "rotation": -30 },
    24. "120": { "rotation": 0 }
    25. }
    26. }
    27. },
    28. "walk": {
    29. // 其他动画的定义...
    30. }
    31. }

    Spine: JSON导出文件格式

    扩展:

    1. animations中还有Deform  用于在时间轴上 对网格的变形。
    2. IK约束:IK约束 - Spine用户手册

    动画效果演示:Spine: Demos

  • 相关阅读:
    #前端#scss学习
    SpringCloud之gateway基本使用解读
    通信协议_C#实现自定义ModbusRTU主站
    CSS实现透明度效果的两种方法—— opacity 和 rgba()
    淘宝官方开放平台API接口获得店铺的所有商品、商品id、商品标题、销量参数调用示例
    erlang练习题(三)
    计算机毕业设计ssm“逢遇”个人博客平台qaoxv系统+程序+源码+lw+远程部署
    如何使用Flask搭建web程序框架并实现无公网IP远程访问本地程序
    JavaFx学习问题3---Jar包路径问题 (疑难杂症)
    初识 My Batis一 什么是My Batis,JDBC缺点,My Batis简化,Mapper 代理开发,My Batis 核心配置文件
  • 原文地址:https://blog.csdn.net/z1067832450_/article/details/134001506