Elemental Sandbox 元素技能特效沙盒
基于 Three.js、Vite 与手写 GLSL 的技能射击特效沙盒,包含六种程序化生成的法术特效、两种瞄准方式,以及 938 个可实时调节的参数滑块,支持暂停后逐帧调整视觉效果。
爱鲜报评分
0 人评分
963
星数
否
中文
JavaScript
主语言
是
活跃
2
贡献者
人工分析
EDITORIAL推荐理由
这是一个纯粹用代码生成视觉特效的 Three.js 项目,没有任何贴图、精灵图或磁盘网格模型,所有冰晶、闪电、光束、粒子都由着色器和程序化几何体实时生成。938 个实时滑块让开发者可以暂停模拟后逐帧调整轮廓、配色和时序,非常适合学习 WebGL 着色器编程和程序化特效。
适用场景
- 学习 Three.js 与 GLSL 着色器编程
- 游戏技能特效原型设计与验证
- 程序化几何体与 GPU 粒子系统研究
- 实时 VFX 参数调优与视觉参考
- Web 端 3D 交互演示与教学
优点
- 完全程序化生成,无外部贴图或网格资源依赖
- 938 个实时参数滑块,支持暂停后逐帧调整
- 六种技能特效覆盖线型施法与远距离施法两种瞄准方式
- 代码结构清晰,使用 Vite 构建,开发体验流畅
- MIT 协议开源,可自由用于学习与二次开发
缺点
- 需要一定的 Three.js 和 GLSL 着色器基础才能深入理解
- 角色模型依赖 Mixamo 导出的 FBX 资源,需自行准备
- 项目定位为特效沙盒,不包含完整游戏逻辑或战斗系统
- 938 个参数虽灵活,但缺乏预设管理,调参门槛较高
Elemental Sandbox 元素技能特效沙盒
一个用 Three.js、Vite 和手写 GLSL 构建的技能射击特效沙盒。项目最大的特点是:你看到的一切都是程序化生成的——没有贴图、没有精灵图、除了角色之外磁盘上没有任何网格模型。
核心特性
六种技能特效
项目包含六种法术,分为两种瞄准方式:
-
线型施法(Line Cast):按技能键后地面出现类似《英雄联盟》的箭头指示器,随鼠标摆动,点击发射。
- Q — Frost Lance 霜冻长矛:断裂锋面沿直线冲出,冰晶从地面撕裂而出,近处密集、远端展开成刀刃之墙。
- E — Storm Lance 风暴长矛:闪电束从手中射出,身后拖曳着闪电丝束,地面留下分支状电灼痕迹。
- R — Cinder Fall 烬落:燃烧的岩石沿弧线抛射,拖曳光线步进的燃烧尾迹,落地后炸开熔岩裂缝。
- F — Nova Beam 新星光束:双手蓄光后沿直线释放光柱,白热核心、青色鞘层、金色螺旋带与冲击盘竞速而下。
-
远距离施法(Far Cast):箭头被一个带有明显粗边界的圆形指示器取代,跟随光标移动,直观展示 AoE 范围。
- V — Voltaic Snare 伏特陷阱:电流鞭甩出,落地后圆环弹开再收回,紫色光柱从中心撕裂而出。
- X — Glacial Crown 冰川王冠:寒潮冲向目标点,圆盘冻结至边界,一圈水晶刀刃从地面环绕撕裂而出。
全程序化生成
- 冰晶是程序化几何体
- 闪电是顶点着色器完全放置的带状条
- 陨石是 CPU 上被断裂面切割的二十面球
- 光束是三个半径上绘制的参数化管体
- 陷阱的整个笼子是同一条带状条沿四条不同参数路径穿线而成
- 箭头、瞄准圈、白霜、灼痕和熔岩裂缝都是符号距离场与噪声着色器
- 雾气、火花、碎片和闪光都是 GPU 粒子
938 个实时参数滑块
每个参数都是实时滑块,模拟暂停时它们依然生效。这是项目的核心设计:用 P 键冻结爆发、打击或燃烧中的某一帧,然后针对静止画面重塑轮廓、配色和时序。
快速开始
npm install
npm run dev
然后打开 Vite 打印的地址(默认 http://127.0.0.1:5173)。
构建与预览:
npm run build
npm run preview
资源说明
public/ 目录下提供六个二进制资源,启动时自动加载:
| 文件 | 用途 |
|---|---|
public/models/Idle.fbx |
带骨骼的角色及其待机动画 |
public/models/diffuse.png |
角色颜色贴图 |
public/models/cast1.fbx |
施法动画 |
public/models/cast2.fbx |
施法动画 |
public/models/cast3.fbx |
施法动画——霜冻长矛、根须陷阱和冰川王冠的默认动画 |
public/hdri/spruit_sunrise.hdr |
用于基于图像的光照和冰晶反射的 HDR 探针 |
四个 FBX 文件都是同一骨骼的 Mixamo 导出,各自携带一个蒙皮网格和一个动画栈。角色来自待机文件;施法文件仅加载其动画片段,随附的重复骨骼在 AnimationClip 被取出后立即释放。
操作方式
| 输入 | 动作 |
|---|---|
| Q(或 1) | 装备霜冻长矛——再次按下收起 |
| E(或 2) | 装备风暴长矛——再次按下收起 |
| R(或 3) | 装备烬落——再次按下收起 |
| F(或 4) | 装备新星光束——再次按下收起 |
| V(或 5) | 装备伏特陷阱——远距离施法,用圆形瞄准 |
| X(或 6) | 装备冰川王冠——远距离施法,用圆形瞄准 |
| P | 暂停/恢复模拟 |
适用人群
本项目适合对 WebGL 着色器编程、程序化特效生成 和 Three.js 高级用法 感兴趣的开发者。如果你正在研究如何用纯代码实现游戏技能特效,或者想学习符号距离场、噪声着色器和 GPU 粒子的实际应用,这个项目是很好的参考。
评论
- 暂无评论,来写第一条吧。