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

10 KiB
Raw Blame History

front, hard, time
front hard time
入门 分钟

粒子特效

本文档主要包括三个部分:

  • 粒子属性介绍

    对粒子的每一个属性进行了介绍方便读者了解particle json

  • 粒子效果规范

    对游戏中最大可支持的粒子效果提供了约束,保证粒子效果在大部分机型上能够流畅运行

  • 粒子调试指令集

    针对粒子编辑器暂时不能外放的现状,提供了实时预览粒子的游戏指令集,方便调试粒子效果

1. 粒子属性

粒子特效的配置文件为json格式如下图所示

reg1-1

客户端中的粒子特效会根据数值变化实时呈现不同的粒子效果以下为对粒子配置文件json的解释。

1.1 Initial

reg1-2

关于粒子属性:

  • 3个数值框的从左向右分别对应xyz如Constant Force、Direction等

  • 2个数值框的从左向右分别对应最小值和最大值

  • 粒子发射器的属性并不是完全如上对应的数值,而是最大值和最小值之间的一个随机值

    如上图Direction具有标有min和max的两个值分别对应最小值和最大值

  • 粒子发射器发射的粒子实际为空间中的一个朝向相机的矩形面片这在粒子的size设置的时候只设置x,y得到体现。

下面简单介绍每个属性的作用及样例:

Constant Force

粒子受力,相当于粒子运动过程中的加速度

reg1-3

Direction

粒子发射的初始方向取值为min和max之间的差值

reg1-4

Damping Force

阻力理解为方向与粒子速度方向相反的加速度,每一帧的运算的公式为:

v = v - damping force * v v为粒子当前速度,所以damping force实际上起到了逆向加速度因子的作用。

reg1-5

Active Time与Inactive Time

Active Time

粒子发射器活跃时间

reg1-6

Inactive Time

粒子发射器冷却时间

reg1-7

Active Time与Inactive Time这两个值是配合使用的即粒子发射器每活跃Active Time之后冷却Inactive Time然后继续循环

在使用的时候可以将Active Time当作发射器生命周期方便调试有时间限制的效果。如果将Active Time设置为0粒子发射器会一直发射没有停歇

普通效果建议不设置这两个值或者都设为0

需要实现循环喷射效果时可以使用这两个参数

Particle Size

粒子出生时的大小当前只有x,y值有效z值无效留给以后发射立方体用

游戏中一个地形块的大小为1以此作为尺寸参考

reg1-8

Time To Live

粒子生命周期,即每个粒子的存在时间

reg1-9

Velocity

粒子初始速度

reg1-10

Rotation废弃建议使用Rotation Range

粒子初始角度即粒子绕z轴的旋转的角度0~360

reg1-11

Rotation Speed废弃建议使用Rotation Speed Range

粒子自转速度每秒旋转Rotation Speed角度

reg1-12

Rotation Range

粒子初始旋转角度即初始时刻粒子绕xyz三轴的旋转角度0-360

{
    "particleeffect": {
        "rotationRange": {
            "max": "90.0 90.0 90.0",
            "min": "0.0 0.0 0.0"
        },
        ...
    }
}

Rotation Speed Range

粒子自转速度即绕xyz轴每秒旋转的角度0-360

{
    "particleeffect": {
        "rotationSpeedRange": {
            "max": "90.0 90.0 90.0",
            "min": "0.0 0.0 0.0"
        },
        ...
    }
}

1.2 Variation

该参数与粒子生命周期内的形变有关

  • Add粒子尺寸每秒增加倍数size = size * (1 + add)默认该值为0.0。

  • Multiply粒子尺寸每秒尺寸缩放倍数size = size * multiply默认值为1.0。

  • 每秒粒子尺寸的计算公式为:size = size * multiply * (1 + add)

reg1-13

1.3 Color

Color

设置粒子颜色格式为RGBA

reg1-14

Color Fade

该参数与粒子生命周期内的颜色变化有关

reg1-15

粒子在生命周期中,可以在不同的时间点设置不同的颜色关键帧,粒子的颜色逐渐向关键帧渐变。

如上图所示粒子在0.00s时,颜色为(0.500.300.501.0)在0.5s时颜色值为(1.00.01.01.0)在2.0s时为(0.00.00.01.0)

Color与Color Fade

设置Color就不可设置Color Fade设置Color Fade就不可设置Color二者的关系是互斥的

如果二者均不设置,则直接读取贴图的颜色

Enable Color与Enable Texture

部分粒子配置中会出现"enablecolor"和"enabletexture"配置项,他们都能影响粒子颜色的计算流程:

  • 粒子的初始颜色为纯白不透明
  • 若Enable Color启用则粒子颜色会乘上Color或Color Fade中配置的颜色值否则跳过
  • 若Enable Texture启用则粒子颜色还会乘上贴图的颜色否则只会乘上贴图的透明度

二者均不设置的情况下,
只要Color或Color Fade中任一配置存在则Enable Color启用同时Enable Texture禁用效果为使用设置指定的颜色
要是Color和Color Fade的设置均不存在则Enable Color禁用同时Enable Texture启用效果恰为直接读取贴图颜色。

1.4 Emitter

该部分主要介绍与发射器有关的参数

处于性能考虑每秒最多发射3000颗粒子

Number Of Particles

同时存活的粒子最大数量

reg1-16

Emitter Size

粒子发射器尺寸,即粒子出生空间大小,(000)说明粒子都从原点出生

否则,粒子从定义的空间中随机位置生成

reg1-17

Emission Rate

粒子发射率,数值越高,发射频率越高

左为min右为max

下图可以理解为最少每秒发射40次最多每秒发射50次

reg1-18

Emission Shape

粒子发射器形状当前支持球形和立方体参数分别为“Box”、”Sphere”

reg1-19

reg1-20

1.5 Resource

Material

无效,开发中。

reg1-21

Texture

可参考demo中的bb.png和bb.json进行阅读

  • "name"为粒子纹理路径路径从textures开始不需要后缀

reg1-22

如果想添加新的纹理需要将png必须为png文件放置在particle路径中

  • "ani"为粒子序列帧
    • "ani"中"name"为序列帧的json配置文件路径从textures开始不需要后缀
    • "ani"中"fps"为序列帧播放帧率注意数字要加引号最小值为0默认值为30
    • "ani"中"shuffle"为序列帧是否乱序播放第一帧就开始随机默认值为false注意不加引号图中未配置使用默认值

reg1-23

上图中,"texture"的"name"对应的textures/particle/bb为序列帧贴图bb.png而"ani"的"name"对应的textures/particle/bb为序列帧json配置文件bb.json

序列帧打包方式在序列帧文档中有介绍

1.6 Render

Blend Mode

混合模式,建议开发者多尝试一下

  • "add"与背景色是叠加的关系

reg1-24

  • "blend"与背景色是覆盖的关系

reg1-25

Face Camera Mode

可用模式:

  • Rotate XYZ

    粒子始终朝向相机,适合正方形面片

reg1-26

  • Direction

    粒子Y轴朝向粒子运动方向适合线性扩散效果

reg1-27

如下图所示粒子实际为x = 0.2, y = 2.0的长方形面片face Camera Mode为Direction

reg1-27-1

建议开发者尝试改变burst.json中的参数观察效果可以帮助理解

Loop

颜色或贴图序列帧是否循环当粒子生命周期大于Color Fade或序列帧的时长的时候可以进入循环模式

reg1-28

reg1-29

2. 粒子效果规范

  • 粒子单幅贴图大小不要超过 32 * 32粒子序列帧贴图参考序列帧规范

  • 小规模粒子

    Particle Num <= 30, Particle Emitter Num <= 200

  • 中规模粒子

    Particle Num <= 100, Particle Emitter Num <= 50

  • 大规模粒子

    Particle Num <= 1000,Particle Emitter Num <= 5

3. 粒子调试指令集

3.1 指令集

//crp <name>

在玩家眼前创建粒子效果name为粒子配置文件名不包括”.json”后缀

///rep <>

重新加载粒子效果,无参数

//rmp <>

移除游戏内所有粒子效果,无参数

3.2 使用样例

//crp fire

reg3-1

reg3-2

//rmp

reg3-3 reg3-4

//rep

加载mod时对应mod资源会被拷贝到如下目录中

%AppData%\MinecraftPE_Netease\games\com.netease\resource_packs

要动态修改粒子效果需要修改该目录下的同名mod中的对应粒子特效配置文件再使用//rep指令。

下图为fire.json所在的文件夹

reg3-5

fire.json原先的配置及表现效果如下所示

reg3-6

reg3-8

修改fire.json中参数如下图后在游戏中输入//rep指令,可以看到该粒子效果发生了改变:

reg3-7

reg3-9

4. 致开发者

粒子效果非常灵活,熟练各个参数,可以做出非常出彩的效果

同时,各位开发者也一定不要忘记遵守粒子效果规范,毕竟游戏的性能是有限的