This commit is contained in:
boybook
2025-12-01 20:59:16 +08:00
parent 12738a142c
commit 760c2dd9ad
5535 changed files with 21070 additions and 2021 deletions

View File

@@ -0,0 +1,21 @@
---
front:
hard: 进阶
time: 10分钟
---
# 原版粒子和特效粒子
#### 作者:境界
原版粒子指的是我的世界基岩版原生自带的粒子特效亦或是由开发者通过基岩版粒子系统提供的自定义粒子方法制作的粒子。特效粒子则是由中国版官方维护的一套粒子系统开发者可以通过官方Demo或是MODSDK文档研习并用MCStudio的特效编辑器进行可视化制作。总的来说两者制作粒子遵循的规律大致相同只是服务的个体和细节功能稍有不同以下表格来解释这些区别。
| | 原版粒子 | 特效粒子 |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 功能区别 | 1原版粒子可以带有碰撞检测。 粒子检测包括粒子与方块碰撞后执行事件(如蜜蜂方块的蜂蜜粒子,掉到地面后会播放蜂蜜掉落的音效);与方块碰撞后产生真实物理碰撞(如触碰到方块后停留或者反弹)。 2原版粒子可以设置是否受到光照影响当设置为真时粒子颜色会因光照变暗如MC世界中天色变晚而变暗。 3粒子没有层级概念即支持粒子前后层级的效果例如层级越大渲染越晚粒子越靠前显示。 | 1特效粒子没有碰撞检测。 2特效粒子不受光照影响始终维持原来的颜色。 3粒子拥有层级概念即支持粒子前后层级的效果例如层级越大渲染越晚粒子越靠前显示。 |
| 性能区别 | 1原版粒子会在粒子消失后被游戏回收动态调配资源。 2原版粒子贴图和序列帧贴图在2048x2048大小以上会打印游戏日志做出警告。 | 1特效粒子在粒子消失后会停留在游戏中占用资源。 2在官方文档的规范中单张粒子贴图不超过32x32序列帧贴图不超过512x512。 |
| 使用区别 | 1原版粒子可以通过指令生成在世界上亦或是绑定在原版模型上但无法将它绑定在骨骼模型的骨骼上。 2原版粒子没有官方维护的编辑器但有国外民间开发者维护的特效编辑器snowstorm。 3原版粒子在动态变化、效果程度上对开发者的水平要求高如粒子渐变颜色、粒子缩放大小等都需要写Molang语法表达式。 | 1特效粒子可以通过MODSDK生成在世界上亦或是绑定在骨骼模型上但无法将它绑定在原版模型的骨骼上。 2特效粒子可由MCSTUDIO特效编辑器编辑制作是由中国版官方开发并维护的。 3特效粒子制作上手难度低很容易就能做出好看的特效在渐变颜色、缩放大小上有直接的输入面板可以控制。 |

View File

@@ -0,0 +1,43 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/2_2.253bcfde.jpg
hard: 进阶
time: 20分钟
---
# 粒子和粒子发射器的关系
#### 作者:境界
在3D游戏世界中许许多多模糊现象的视觉效果是由特效这一概念包装而成。经常用到这一概念的现象有火、爆炸、烟、水流、雪、尘等这些抽象视觉效果。粒子发射器是操控粒子在三维空间位移运动的典型实现而其中各种动态变化的部分再由技术团队进行包装后提供粒子行为参数来操控。中国版目前的下界更新版本上同时支持原版粒子自定义与MODSDK粒子自定义虽然功能细节上可能略微带有差异但制作粒子特效、序列帧特效的思路没有太多差异学会其中一种后去迁移学习到另一种系统带来的学习成本会少很多让我们来看看它们相同的地方吧。
| | 原版粒子 | 特效粒子 |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 发射器 | 1原版粒子发射器一共有5种形状它们分别是点、球形、方形、平面形、生物碰撞箱形。 发射器形状使粒子沿着形状的表面分散,并控制粒子的发射方向和方向。例如,粒子发射器设置为方形,则粒子会在一个方型空间分散开来,若设置为点形,则粒子会在一个点上聚集。 2可以通过设置发射器的大小来缩放特效的大小。 | 1特效粒子发射器一共有4种形状分别是球形、半球形、圆柱形、方形。 发射器形状使粒子沿着形状的表面分散,并控制粒子的发射方向和方向。例如,粒子发射器设置为方形,则粒子会在一个方形空间分散开来,若设置为点形,则粒子会在一个点上聚集。 2可以通过设置发射器的大小来缩放特效的大小。 |
| 变化 | 1粒子可以随参数调整加速度和阻力、旋转角度、旋转速度等在三维空间内进行位移、旋转。 2粒子具有数量概念例如将粒子形状变成火通过改变数量可以增加或减少火的数量。 3粒子具有大小的概念例如将粒子形状变成火一团火在世界中的显示大小同样可以调整。 | |
| 朝向方式 | 1粒子朝向方式可以设置为面向相机、面向地面、面向方向是指粒子在玩家视线中朝向何种方向的参数。 面向相机是指粒子始终朝向玩家相机视角无论在任何角度看向这个粒子都能看到它完整的样子。【图例1】 面向地面是指粒子会在Y轴方向始终朝向玩家视角即玩家视角与地面平行时可以看到完整的粒子效果。若头朝下方看向粒子则无法看到粒子的完全样貌。【图例2】 面向方向是指粒子朝向某个特定方向地面冒出一滩绿色液体开发者希望粒子紧贴着地面则将朝向方式设置为朝向Z轴。【图例3】 | |
| 持续时间 | 1粒子具有生命周期存留的时间概念当持续时间结束时粒子会消失。 2粒子具有循环播放和只播放一次的选项当设置为循环时粒子在持续时间结束后会在初始位置重新出现。而设置为播放一次时则粒子消失后就不再会出现。 | |
| 渲染 | 1原版粒子同样需要贴图纹理和材质单张粒子贴图导入进snowstorm编辑器时会自动匹配贴图大小。若是由多张带有连续性变化的粒子贴图拼接而成序列帧则需要将UV模式改成动画模式通过设置uv起点、uv大小、uv步进、帧率、最大渲染帧数等参数来播放序列帧。 2原版粒子当前支持的材质为透明、半透明、不透明。 3原版粒子可以着色。 | 1特效粒子需要贴图纹理不需要额外设置材质种类。 2开发者需要提前确定特效粒子种类是使用单张贴图还是序列帧序列帧需要先用TexturePacker工具进行打包后输出配置文件搭配使用。 3特效粒子可以着色形式可以选择透明度叠加或者颜色值叠加模式。 |
#### 朝向相机【图例1】
![](./images/2_1.jpg)
#### 朝向地面【图例2】
![](./images/2_2.jpg)
![](./images/2_3.jpg)
#### 朝向Z方向【图例3】
![](./images/2_4.jpg)

View File

@@ -0,0 +1,101 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/3_1.ae73d778.jpg
hard: 进阶
time: 25分钟
---
# 渲染粒子和着色
#### 作者:境界
#### 原版粒子渲染教程
#### 设置贴图纹理
1进入[https://jannisx11.github.io/snowstorm/](https://jannisx11.github.io/snowstorm/)下拉到texture贴图纹理。选择文件选择原版贴图粒子它位于原版材质包/textures/particle的particles文件。由于原版粒子贴图是一张集合贴图它将多种粒子集合在一张图片文件中里面既有单张粒子纹理也有连续性多张粒子纹理的序列帧每单张粒子纹理是8x8的尺寸。我们将贴图尺寸texture size设置为128x128与硬盘中的贴图文件像素匹配。UV起点是以左上角的点为起点我们将Y轴向下移动24格像素x轴不变接着将uv尺寸设置为8x8这样粒子纹理就锁定在了火焰粒子上。
![](./images/3_1.jpg)
2使用序列帧纹理时需要将uv mode贴图模式改成animated动态式则在uv尺寸下会新增uv stepuv步进、fps一秒内播放几帧、max frame最大序列帧数、stretch to life time序列帧数匹配粒子持续时间、loop循环播放序列帧等参数。
以原版粒子贴图倒数第6列的爆炸序列帧为例从左往右数一共有16张连续性的贴图纹理因此最大序列帧数应设为16fps设置为可以被16整除的数值如2就是一秒播放2帧、16就是一秒内播放完16帧。uv步进设置为8x0即每一帧结束时uv向右增加8个像素点开始播放下一帧粒子会在帧数到尾时回到第一帧。
stretch to life time一旦打勾选取则会让序列帧数匹配粒子生命周期且无视fps如粒子生命周期时长为1秒则序列帧会在1秒内播放16帧如果生命周期为0.5秒则会在0.5秒内播放完16帧FPS等于1秒播放32帧。
loop参数勾选可以循环播放序列帧直到发射器被游戏清理为止。
![](./images/3_2.jpg)
#### 特效粒子教程
#### 设置贴图纹理
1进入MCSTUDIO可以在新建入口快速创建特效制作模板创建好进入编辑器后页面会自动划转到特效编辑器。
![](./images/3_3.jpg)
2在页面下方中央的资源入口列表里选择effects网易版特效选项的+号键,可以选择创建粒子或是创建序列帧,取决于届时开发者制作自定义特效时所用到的贴图纹理类型。在教程里,我们创建一个粒子特效。
![](./images/3_4.jpg)
![](./images/3_5.jpg)
3在资源管理入口点击一次特效json文件将粒子贴图拖拉进名为贴图的入口粒子带有默认的位移和生命周期为了马上看到效果可以在属性-预览设置里将右侧面板切换到预览设置中。在场景特效内点击“+”号,默认设置都不用改动,在特效选项选择之前创建好的粒子,开发者便能看到特效在世界中的变化了。
#### 原版粒子着色教程
#### 设置颜色
1点击color&light颜色和光照面板拖动下方第一格滑轨来调整颜色色相拖动第二条滑轨设置颜色透明度点选颜色调盘选取颜色。
![](./images/3_6.jpg)
2若有提前选好的颜色可以直接在下方输入口输入颜色代码。
3若希望粒子颜色受到光照影响即会随着游戏内天亮天黑而增强&衰弱颜色。若不勾选,粒子颜色在黑夜或白天都会显示原来的颜色。
![](./images/3_7.jpg)
4若想要设置动态颜色需要将color mode颜色模式设置为渐变Gradient在Interpolant插值窗口输入variable.particle_age将range调整为1可以让粒子在渐变颜色选区中播放完所有的颜色。
![](./images/3_8.jpg)
#### 特效粒子渲染教程
#### 设置颜色
1 点击粒子的属性面板,划到动态属性折叠窗口内,选择动态颜色。若只想着一种颜色,可将左右两点选择相同的颜色。
![](./images/3_9.jpg)
2 若想要多种颜色,可以选择插入关键帧选取点,在每个选取点上选择需要的颜色。
![](./images/3_10.jpg)
3选取点拉得越高越不透明拉得越低透明度越低。
![](./images/3_11.jpg)

View File

@@ -0,0 +1,43 @@
---
front:
hard: 进阶
time: 20分钟
---
# 制造位移和旋转
#### 作者:境界
#### 原版粒子动态教程
#### 制造位移
1在snowstorm中选择shape通过offset偏移可以偏移粒子发射器的位置自然粒子的起始点也会被偏移。
2划到motion移动折叠面板下当模式选择dynamic时可以给予粒子一个speed起始速度或者给予一个加速度acceleration。
3划到rotation旋转折叠面板下当模式选择dynamic时可以给予粒子一个start rotation初始旋转角度一个speed旋转速度一个acceleration旋转加速度
3在移动和旋转面板下都有一个air drag可以形容为空气摩擦力该值越大给予的位移效果、旋转效果表现越差。
#### 特效粒子渲动态教程
#### 制造位移
1点击粒子属性面板在基础属性上有一栏特效方向direction若选择向内Inwards则粒子会向内移动若选择向外Outwards则会由内向外移动。选择粒子初始方向的时候可以自定义粒子的方向方向是在之后给予粒子移动的速度时飞出的方向。
2初始速度是一开始的速度恒定力就是之后的加速度阻尼力即摩擦力。
3粒子尺寸是指粒子在面向玩家摄像机前的大小。
4初始旋转是一开始的旋转角度旋转速度就是旋转的恒定加速度。
5绝大多数基础属性都有最小和最大值当最小值和最大值不一样时最终作用在粒子的属性值会在最小值和最大值期间随机。

View File

@@ -0,0 +1,41 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/5_4.be84bb9e.jpg
hard: 进阶
time: 15分钟
---
# 让粒子动起来
#### 作者:境界
#### 雨水粒子教程
#### 制造位移
1 选择方型粒子发射器将方形发射器的形状调整为8,0,8同时将粒子发射器高度便宜到10格。
![](./images/5_1.jpg)
2 制作一个只有1格像素点的贴图并将它作为粒子贴图纹理用颜色叠加叠加上蓝色。
![](./images/5_2.jpg)
3 叠加一个蓝色颜色后,粒子变为蓝色,并将粒子大小调整为宽比长大,拉出一条下落蓝色直线。将朝向设置为朝向地面,材质保留为带有透明通道的默认设定。
![](./images/5_3.jpg)
4 提高粒子的生命周期时长给予加速度中填写0-40提供一个向y轴下方移动的加速度这样粒子就实现好了。
![](./images/5_4.jpg)

View File

@@ -0,0 +1,19 @@
---
front:
hard: 进阶
time: 10分钟
---
# 伸缩粒子的持续时间
#### 作者:境界
#### 设置持续时间
1Texture面板上方即是lifetime粒子生命周期面板默认模式是Time即设置Max Age最大持续时间它相当于特效编辑器的生存时间。每个由发射器发射的粒子会在达到生存时间最大值后消失。Snowstorm编辑器还有额外两个参数Kill in blocks内可以加入原版方块的名称域即当粒子进入某种方块后便会被游戏销毁而消失only in blocks相反只有粒子在这种方块内活动才会显示否则会消失。使用这种参数的一个经典案例是水中浮泡在之前的绿头水鸭的粒子效果绑定教程中开发者可以发现水泡只会在水里产生正是用到了这一功能。
2emitter lifetime意为发射器生命周期active time意为在这个时间内发射器会连续发射粒子相当于特效编辑器的发射周期长度。sleep time意为发射器在active time结束后发射器会休息多久仅当将发射器生命周期的模式改为循环时有效相当于特效编辑器的发射周期间隔。

View File

@@ -0,0 +1,59 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/7_1.13819fac.jpg
hard: 进阶
time: 10分钟
---
# 识粒子的朝向方式
#### 作者:境界
#### 面向相机
开发者如果希望粒子在玩家从任何角度过去都是最完整的样子,如原版世界中的烟雾粒子、爱心粒子、村民愤怒的粒子,在制作原版粒子或是特效粒子时,可以选择面向相机的朝向方式。
![](./images/7_1.jpg)
![](./images/7_2.jpg)
1在snowstorm编辑器中面向相机一共有Rotate xyz和lookat xyz两种朝向方式。
2在MCSTUDIO的特效编辑器中面向相机就是被称为面向相机的朝向方式可以在朝向方式面板里找到。
#### 面向地面
开发者如果希望粒子朝向方式垂直于Y轴的可以选择面向地面的朝向方式。在这个效果里开发者可以看到低下头只能看到粒子的一部分这是因为粒子的贴图是与水平地面垂直的。
![](./images/7_3.jpg)
1在snowstorm编辑器中面向相机一共有Rotate y、lookat y两种朝向方式。
![](./images/7_4.jpg)
2在MCSTUDIO的特效编辑器中面向地面的朝向方式可以在朝向方式面板里找到。
#### 面向方向
开发者如果希望粒子朝向方式面向某个方向,如希望粒子贴图纹理与地面紧紧贴合,或者希望粒子紧贴在一个广告牌上,就要用到面向方向的朝向方式。
1在snowstorm编辑器中面向方向的朝向方式有Direction x、Direction y、Direction Z三种。注意使用这个模式需要将motion的mode改成Parametric再设置Motion面板下的Direction这样粒子才会在世界里正常显示。
![](./images/7_5.jpg)
2在MCSTUDIO的特效编辑器中水平朝向方式相当于原版粒子的Direction Z。

View File

@@ -0,0 +1,37 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/8_1.7818512f.jpg
hard: 进阶
time: 10分钟
---
# 使用序列帧强化效果
#### 作者:境界
#### 配置序列帧文件
1在制作原版粒子和特效粒子时用带有连续性的动态贴图可以增强粒子的视觉效果。原版粒子的序列帧贴图不需要额外配置文件只需用snowstorm编辑器设置好FPS、最大帧数、uv等参数即可而特效粒子的序列帧需要借用TexturePacker这个软件进行打包后输出一份配置文件才能被特效编辑器使用。
![](./images/8_1.jpg)
2再用texturepacker打包序列帧时需要注意的配置如下
Allow rotation不要勾选
Trim mode选择为None
这样导出的大图中每一幅小图都一样大,当前特效编辑器支持的序列帧只支持大小相同的子图。
同时序列帧贴图有以下规范:
贴图格式为 png
原版粒子单张贴图最大不超过2048x2048
特效粒子单张贴图大小不超过512x512

View File

@@ -0,0 +1,102 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/9_1.045044b5.jpg
hard: 进阶
time: 15分钟
---
# 理解粒子碰撞与事件
#### 作者:境界
#### 产生碰撞
1该功能只能作用于原版自定义粒子。
2打开snowstorm编辑器下拉到collision面板在Enable窗口输入true其中collision drag代表粒子与环境产生碰撞后作用于粒子上的阻力。值越大粒子碰撞环境后的阻力越大粒子可能会减速到停止值越小粒子可能会顺着环境方块而贴着位移。Bounciness代表粒子于环境产生碰撞后的弹力弹力越大粒子与环境方块后的反弹力越大弹力越小粒子与环境方块后的反弹力越小可能会出现多次弹跳的现象取值范围在0.0~1.0之间。Collision Radius用于最小化粒子与环境方块的重叠问题该值必须在0.0~0.5之间不设置时粒子贴图可能有部分区域会陷入方块内。Expire on Contact意为当粒子与环境产生碰撞时进行自我销毁。
![](./images/9_1.jpg)
【与环境产生碰撞而自行销毁的方型发射器雨水粒子,可以看到粒子掉落至坐标轴上后不会继续下渗】
#### 触发事件
1该功能只能作用于原版自定义粒子并且当前尚未实装于snowstorm编辑器中需要开发者进行手写配置。
![](./images/9_2.jpg)
```
{
"format_version":"1.10.0",
"particle_effect":{
"description":{
"identifier":"...",
"basic_render_parameters":{
"material":"particles_alpha",
"texture":"textures/particle/particles"
}
},
"events":{
"hit_ground":{
"sound_effect":{
"event_name":"..."
}
}
},
"components":{
"minecraft:particle_motion_collision":{
"coefficient_of_restitution":0.1,
"collision_drag":"10.0",
"collision_radius":0.01,
"events":[
{
"event":"hit_ground",
"min_speed":0.5
}
]
}
}
}
}
```
2需要minecraft:particle_motion_collision指定事件名称可以触发多个事件min_speed意为触发事件的最短时间。
![](./images/9_3.jpg)
```
{
"format_version":"1.10.0",
"particle_effect":{
"description":{
"identifier":"...",
"basic_render_parameters":{
"material":"particles_alpha",
"texture":"textures/particle/particles"
}
},
"events":{
"hit_ground":{
"sound_effect":{
"event_name":"block.beehive.drip"
}
}
}
}
}
```
3在particle_effect下定义events播放音效音效以sound_definitions.json里的音效资源路径名称为准。

View File

@@ -0,0 +1,61 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/10_1.423727d2.jpg
hard: 进阶
time: 20分钟
---
# 简易教学
### 作者:境界
### 简易教学① :制作火焰蔓延粒子
1首先打开snowstorm编辑器定义一个粒子的名称域格式与物品、方块、生物等大同小异以命名空间名称为格式。
2Texture选择原版的火焰序列帧贴图路径位于原版材质包的textures/flame_atlas.png。将UV MODE设置为animate贴图大小设置为16x512uv start设置为0x0uv size设置为16x16uv step设置为0x16FPS设置为32勾选stretch to lifetime。
3打开Rate发射频率面板相当于MCSTUDIO的特效编辑器的粒子发射频率选择Steady模式将发射率设置为10最大值为20。
4Emitter Lifetime内将循环模式设置为once只播放一次其余设定不变。
5emitter shape设置不变。
6将Apperance内的size粒子大小设置为合适大小朝向方式设置为lookat xyz材质设置为透明材质alpha
7Motion内将speed设置为1.0。
#### 效果图如下:
![](./images/10_1.jpg)
#### 简易教学② :制作岩浆滴落粒子
1首先打开snowstorm编辑器定义一个粒子的名称域格式与物品、方块、生物等大同小异以命名空间名称为格式。
2Texture选择原版的粒子集合贴图路径位于原版材质包的textures/particle/particles.png。将UV MODE设置为static贴图大小设置为128x128uv start设置为8x56uv size设置为8x8。
3打开Rate发射频率面板相当于MCSTUDIO的特效编辑器的粒子发射频率选择Steady模式将发射率设置为10最大值为20。
4Emitter Lifetime内将循环模式设置为once只播放一次其余设定不变。
5emitter shape使用默认的点形并将发射器偏移Y轴高度到4格位置上。
6将Apperance内的size粒子大小设置为0.15x0.3拉长粒子贴图朝向方式设置为lookat xyz材质设置为透明材质。
7Motion内将acceleration的y轴加速度设置为-3让粒子向下飞行。
8点开collision面板勾选expire on contact使粒子在与地面接触后消失。
#### 效果图如下:
![](./images/10_2.jpg)