Files
netease-modsdk-wiki/docs/mcguide/16-美术/9-特效/21-序列帧配置文件解析.md
2025-03-17 13:24:39 +08:00

99 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
front:
hard: 入门
time: 分钟
---
# 序列帧配置文件解析
## 1. 序列帧简介
《我的世界》中提供了序列帧类型的特效,序列帧本质上即为一个单面片的贴图,如果未设置始终面向摄像头,当观察角度位于序列帧的侧面时可以看出为一片面片
<center><img src="./picture/sfx/reg1-1.png" alt="reg1-1" style="zoom:70%;" /> <img src="./picture/sfx/reg1-2.png" alt="reg1-2" style="zoom:80%;" /></center>
当序列帧的贴图不断变化时即可以形成视觉上的动画效果因此可以用来实现序列帧动画特效。在游戏中一般需要将单个特效的所有贴图合在一起变成一幅大图上述中的特效包含9幅贴图将9幅图用合图工具Texture Packer合图如下所示
<img src="./picture/sfx/reg1-3.png" alt="reg1-3" style="zoom: 67%;" />
## 2. 序列帧json参数说明
序列帧动画主要包含一个json文件与一个贴图这两者由Texture Packer生成
其中json文件内容如下
![reg2-1](./picture/sfx/reg2-1.png)
其中包含frames和meta两个字段
- **"frames"** 表示每帧动画的贴图信息
- **"meta"** 字段包含合图软件相关的信息
开发者对此文件基本可以不用关注其中在frames字段中可以自己手动加入字段 **”scale”** 表示对该帧进行缩放没写默认为1倍缩放即为
![reg2-2](./picture/sfx/reg2-2.png)
另外该缩放功能支持插值,即在不同帧之间大小倍数不同时会进行平滑过渡,如果需要关掉插值则需要关掉插值开关(下文提到的[**"lerp_scale"**](#lerpScale)字段)
如果使用编辑器生成序列帧动画则会在此基础上多一个编辑器对应的json如下图所示
![reg2-3](./picture/sfx/reg2-3.png)
其中cylinder开头的配置为环状序列帧的功能
- **"cylinder_enable"** 表示是否为环状序列帧
- **"cylinder_frac_num"** 表示近似多边形的个数,即环状体由几个多边形组成
- **"cylinder_height"** 表示环状序列帧高度
- **"cylinder_radius_down"** 和 **"cylinder_radius_up"** 表示底部和顶部的环状半径
- **"face_camera"** 表示帧动画是否始终面向摄像机
- **"fps"** 表示帧动画的播放帧率,即一秒播放多少帧动画
- **"shuffle"** 表示是否开启随机播放帧动画
- **"layer"** 表示设置渲染层级默认设置为1设置范围为0-15,层级为1表示不开启渲染层级的功能开启后渲染层级高的会遮挡层级低的并且同一层级的特效会根据位置存在遮挡关系
- <span id="lerpScale"> **"lerp_scale"** </span>表示是否开启帧之间的插值
- **"loop"** 表示帧动画是否循环
- **"rot_speed"** 表示帧动画的旋转速度
- **"scale"** 表示帧动画的整体缩放
- **"tex_repeat_num"** 表示在x轴和y轴两个方向上重复的特效个数
- **"texture"** 为上述由texture packer生成的具体json特效路径
## 3. 序列帧贴图生成指南
序列帧贴图资源需要使用Texture Packer生成打包格式见下文[Texture Packer使用配置](#TexturePacker)
Texture Packer导出大图和json文件放置在`textures/picture/sfxs`
如下图所示序列帧贴图与普通贴图唯一的不同就是多了一个同文件名的json文件该贴图和json文件都是由Texture Packer导出
![reg3-1](./picture/sfx/reg3-1.png)
<span id="TexturePacker"></span>
## 4. Texture Packer使用配置
![reg4-1](./picture/sfx/reg4-1.png)
Texture Packer主要用来打包序列帧文件需要注意的配置如下
![reg4-2](./picture/sfx/reg4-2.png)
- Allow rotation不要勾选
- Trim mode选择为None
这样导出的大图中每一幅小图都一样大,**当前我们的序列帧绘制只支持大小相同的子图**
## 5. 序列帧贴图规范
- 贴图格式为 png
- 单张贴图大小不超过512 * 512
- 总像素数不要超过512 * 512 * 5