4 种笔刷形状 + 1 套防抖机制:PixiEditor 自定义笔刷与粒子效果完整指南
【免费下载链接】PixiEditorPixiEditor is a Universal Editor for all your 2D needs项目地址: https://gitcode.com/GitHub_Trending/pi/PixiEditor
PixiEditor 是一款跨平台的 2D 像素画与动画编辑器,本文围绕它的自定义笔刷系统,讲清像素画笔刷设置与粒子效果的完整搭建路径。读完你可以对照仓库里的内置刷库和源码,自己调出一支带密度渐变的粒子笔刷。
为什么散点总画得脏:先看预览层在做什么
很多新手以为光标下那个轮廓就是落笔形状,其实两者是分开的。BrushShape 枚举 定义了五个值,其中四个直接决定光标预览的轮廓:
| 枚举值 | 预览形态 | 适合场景 |
|---|---|---|
Hidden | 不显示轮廓 | 追求无干扰落笔 |
Pixel | 单像素点 | 逐点描边 |
Square | 方形 | 块面填充 |
CirclePixelated | 像素化圆形 | 硬边粒子 |
CircleSmooth | 平滑圆形 | 柔和光点 |
BrushShapeOverlay 负责在视口上画出这层轮廓。它渲染时有一行关键设置paint.IsAntiAliased = true,意思是给预览轮廓做边缘平滑,让斜边不发虚、不出现毛刺。这里要分清:抗锯齿开关只作用于预览层,真正写进画布的像素由笔刷引擎决定,所以开不开它都不影响像素画的硬边风格。
像素画笔刷设置:从选形到调大小的三步
第一步选形状。在工具栏切换 BrushShape 取值,画星光粒子优先CirclePixelated,要柔光光晕再换CircleSmooth。
第二步调大小与密度。笔刷尺寸支持随压力与速度动态变化:预览层会计算指针移动速度并平滑处理(速度按 8:2 的权重混合历史值),传给引擎的PointerInfo里带着这个数值,大笔触可以随移动加快而收窄,撒粒子时就自然形成由密到疏的分布。
第三步开防抖。如果你用鼠标画直线总带抖动,可以把稳定模式切到CircleRope或TimeBased。源码里DrawConstrainedRope会把笔尖限制在一根"绳子"的长度内移动,拖拽时你会看到一条绳状约束线,落笔轨迹就顺了。
做出 PixiEditor 粒子效果:密度、大小与颜色
像素画笔刷教程里最常卡住的环节,是把"一堆点"变成"一层粒子"。三个可叠加的手段:
- 分层撒点。在不同图层分别用大、小两种圆形笔刷点画,小点密集处形成高光核心,大点稀疏处做外沿光晕。
- 动态大小衰减。利用上一节的速度驱动机制,同一笔触内笔刷由大到小,粒子尾迹自动出现衰减感。
- 半透明配色。粒子边缘用带透明度的颜色,从中心到外圈透明度递增,立体感就出来了。
内置刷库可以直接借用:Data/Brushes 目录 下预置了 16 支笔刷文档,BrushTools 目录 另有 8 支工具向笔刷,挑一支改大小和配色就能上手。
源码里的实现细节
- 预览与落笔分离。
BrushShapeOverlay每帧调用笔刷引擎的EvaluateShape算出轮廓路径再DrawPath,本身不碰画布;松开鼠标不写东西,真正执行ExecuteBrush才产生像素。 - 笔刷即文档。Brush.cs 显示每支笔刷其实是一个
.pixi文档,解析后找到其中的BrushOutputNode作为输出,还能携带EmbeddedTags标签与收藏标记。 - 两种预览纹理。
BrushViewModel会为每支笔刷生成"单点"和"笔画"两张贴图,笔刷面板里的缩略图就来自这里。
用扩展注册你自己的笔刷
想分发一支专属粒子笔刷,走扩展接口即可。Sample11_Brushes 给出了最小可用示例:先把.pixi字节数组交给Api.BrushesProvider.RegisterBrushDataSource,再经RegisterBrushTool绑定到工具,配上名称、图标与快捷键,最后AddToolToToolset放进像素画工具集。其余 11 个扩展示例覆盖了本地化、偏好设置等配套能力,更多项目背景见 README。
打开samples/Sample11_Brushes跑通这支示例笔刷,再照它给 内置刷库 里挑一支改成你自己的粒子形状,就是最短的上手路线。
【免费下载链接】PixiEditorPixiEditor is a Universal Editor for all your 2D needs项目地址: https://gitcode.com/GitHub_Trending/pi/PixiEditor
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考