@fps-games/vfx 0.1.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +41 -0
  3. package/dist/effects/coin-burst/index.js +6 -2
  4. package/dist/effects/comet-trail-flame/index.js +3 -1
  5. package/dist/effects/debris-smoke/index.js +1 -0
  6. package/dist/effects/electric-arc/index.js +1 -0
  7. package/dist/effects/energy-shield/index.js +1 -0
  8. package/dist/effects/explosion/index.js +3 -2
  9. package/dist/effects/hit-flash/index.js +12 -4
  10. package/dist/effects/laser-beam/index.js +14 -2
  11. package/dist/effects/lumber_vehicle_upgrade_aura/index.js +1 -0
  12. package/dist/effects/monster-hit/index.js +2 -1
  13. package/dist/effects/player-upgrade/index.js +5 -3
  14. package/dist/effects/pulse-laser-volley/index.js +14 -4
  15. package/dist/effects/thruster-flame/index.js +3 -1
  16. package/dist/effects/treasure-attention/index.d.ts +54 -0
  17. package/dist/effects/treasure-attention/index.js +535 -0
  18. package/dist/effects/ufo-thread-flame/index.js +1 -0
  19. package/dist/effects/vehicle-upgrade/index.js +4 -1
  20. package/dist/effects/weapon-trail/index.js +8 -3
  21. package/dist/effects/wood_crusher_sawdust/index.d.ts +4 -0
  22. package/dist/effects/wood_cutter_sawdust/index.d.ts +4 -0
  23. package/dist/index.js +85 -17
  24. package/dist/types.d.ts +80 -0
  25. package/index.json +19 -1
  26. package/package.json +9 -4
  27. package/packages/effects/treasure-attention/vfx-params.json +49 -0
  28. package/tooling/vfx-cli.mjs +8 -1
  29. package/docs/AUTHORING_EFFECTS.md +0 -297
  30. package/docs/VFX_LIBRARY_ARCHITECTURE_chatgpt.md +0 -1580
  31. package/docs/VFX_LIBRARY_EXECUTION_PLAN.md +0 -229
  32. package/docs/VFX_LIBRARY_PLAN.md +0 -546
  33. package/docs/vfx-ab/RESULTS.md +0 -35
  34. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/after.png +0 -0
  35. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/before.png +0 -0
  36. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/after.png +0 -0
  37. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/before.png +0 -0
  38. package/docs/vfx-integration_chatgpt.md +0 -462
  39. package/docs/weapon-trail-visualization.html +0 -241
  40. package/packages/EffectPackageService.ts +0 -240
  41. package/packages/SceneVfxService.ts +0 -96
  42. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/runtime/simpleMeshEffect.v1.js +0 -333
  43. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.frag.glsl +0 -25
  44. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.vert.glsl +0 -11
  45. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/textures/effect_jianbian.png +0 -0
  46. package/packages/build.mesh.yellow_build_upgrade_indicator/effect.json +0 -927
  47. package/packages/build.mesh.yellow_build_upgrade_indicator/media/contact-sheet.png +0 -0
  48. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.gif +0 -0
  49. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.mp4 +0 -0
  50. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.webm +0 -0
  51. package/packages/build.mesh.yellow_build_upgrade_indicator/media/thumbnail.png +0 -0
  52. package/packages/build.mesh.yellow_build_upgrade_indicator/metadata/description.json +0 -197
  53. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-effect.original.json +0 -895
  54. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-normalized-vfx-to-babylon-report.json +0 -241
  55. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-overrides.json +0 -542
  56. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-tuning-report.json +0 -69
  57. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/asset-map.json +0 -125
  58. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/lineage.json +0 -44
  59. package/packages/build.particle.golden_upgrade_starburst/assets/runtime/particleEmitter.v1.js +0 -210
  60. package/packages/build.particle.golden_upgrade_starburst/assets/textures/effect_guangdian.png +0 -0
  61. package/packages/build.particle.golden_upgrade_starburst/effect.json +0 -880
  62. package/packages/build.particle.golden_upgrade_starburst/media/contact-sheet.png +0 -0
  63. package/packages/build.particle.golden_upgrade_starburst/media/preview.gif +0 -0
  64. package/packages/build.particle.golden_upgrade_starburst/media/preview.mp4 +0 -0
  65. package/packages/build.particle.golden_upgrade_starburst/media/preview.webm +0 -0
  66. package/packages/build.particle.golden_upgrade_starburst/media/thumbnail.png +0 -0
  67. package/packages/build.particle.golden_upgrade_starburst/metadata/description.json +0 -161
  68. package/packages/build.particle.golden_upgrade_starburst/provenance/03-effect.original.json +0 -762
  69. package/packages/build.particle.golden_upgrade_starburst/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  70. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-overrides.json +0 -436
  71. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-tuning-report.json +0 -40
  72. package/packages/build.particle.golden_upgrade_starburst/provenance/asset-map.json +0 -115
  73. package/packages/build.particle.golden_upgrade_starburst/provenance/lineage.json +0 -40
  74. package/packages/build.particle.orange_upgrade_transform_sparks/assets/runtime/particleEmitter.v1.js +0 -210
  75. package/packages/build.particle.orange_upgrade_transform_sparks/assets/textures/b5b27ab1-e740-4398-b407-848fc2b2c897.png +0 -0
  76. package/packages/build.particle.orange_upgrade_transform_sparks/effect.json +0 -887
  77. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.gif +0 -0
  78. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.mp4 +0 -0
  79. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.webm +0 -0
  80. package/packages/build.particle.orange_upgrade_transform_sparks/media/thumbnail.png +0 -0
  81. package/packages/build.particle.orange_upgrade_transform_sparks/metadata/description.json +0 -179
  82. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-effect.original.json +0 -859
  83. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  84. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-overrides.json +0 -478
  85. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-tuning-report.json +0 -40
  86. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/asset-map.json +0 -114
  87. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/lineage.json +0 -41
  88. package/packages/build.particle.wood_chip_dust_burst/assets/runtime/particleEmitter.v1.js +0 -210
  89. package/packages/build.particle.wood_chip_dust_burst/assets/textures/effect_yanwu4.png +0 -0
  90. package/packages/build.particle.wood_chip_dust_burst/assets/textures/suipian3.png +0 -0
  91. package/packages/build.particle.wood_chip_dust_burst/effect.json +0 -1400
  92. package/packages/build.particle.wood_chip_dust_burst/media/contact-sheet.png +0 -0
  93. package/packages/build.particle.wood_chip_dust_burst/media/preview.gif +0 -0
  94. package/packages/build.particle.wood_chip_dust_burst/media/preview.mp4 +0 -0
  95. package/packages/build.particle.wood_chip_dust_burst/media/preview.webm +0 -0
  96. package/packages/build.particle.wood_chip_dust_burst/media/thumbnail.png +0 -0
  97. package/packages/build.particle.wood_chip_dust_burst/metadata/description.json +0 -173
  98. package/packages/build.particle.wood_chip_dust_burst/provenance/03-effect.original.json +0 -1277
  99. package/packages/build.particle.wood_chip_dust_burst/provenance/03-normalized-vfx-to-babylon-report.json +0 -329
  100. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-overrides.json +0 -749
  101. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-tuning-report.json +0 -60
  102. package/packages/build.particle.wood_chip_dust_burst/provenance/asset-map.json +0 -146
  103. package/packages/build.particle.wood_chip_dust_burst/provenance/lineage.json +0 -69
  104. package/packages/effects/building-upgrade/effect.json +0 -6
  105. package/packages/effects/building-upgrade/index.ts +0 -387
  106. package/packages/effects/character-entrance/effect.json +0 -6
  107. package/packages/effects/character-entrance/index.ts +0 -308
  108. package/packages/effects/coin-burst/index.ts +0 -43
  109. package/packages/effects/comet-trail-flame/assets/textures/trail_5x4.webp +0 -0
  110. package/packages/effects/comet-trail-flame/index.ts +0 -106
  111. package/packages/effects/conveyor-upgrade/effect.json +0 -6
  112. package/packages/effects/conveyor-upgrade/index.ts +0 -401
  113. package/packages/effects/debris-smoke/assets/models/rock_debris.glb +0 -0
  114. package/packages/effects/debris-smoke/assets/textures/smoke22.webp +0 -0
  115. package/packages/effects/debris-smoke/index.ts +0 -101
  116. package/packages/effects/door_open_gold_flakes/assets/runtime/goldFlakes.v1.js +0 -397
  117. package/packages/effects/door_open_gold_flakes/door_open_gold_flakes.json +0 -498
  118. package/packages/effects/door_open_gold_flakes/index.ts +0 -11
  119. package/packages/effects/electric-arc/assets/textures/spark_4x4.webp +0 -0
  120. package/packages/effects/electric-arc/index.ts +0 -62
  121. package/packages/effects/energy-shield/effect.json +0 -7
  122. package/packages/effects/energy-shield/index.ts +0 -431
  123. package/packages/effects/explosion/assets/textures/baozha29.webp +0 -0
  124. package/packages/effects/explosion/assets/textures/glow01.webp +0 -0
  125. package/packages/effects/explosion/assets/textures/lizi01.webp +0 -0
  126. package/packages/effects/explosion/assets/textures/xulie_lizibaozha02_5x5.webp +0 -0
  127. package/packages/effects/explosion/index.ts +0 -114
  128. package/packages/effects/ground-tile-upgrade/effect.json +0 -6
  129. package/packages/effects/ground-tile-upgrade/index.ts +0 -410
  130. package/packages/effects/hit-flash/index.ts +0 -69
  131. package/packages/effects/laser-beam/assets/textures/laser_glow.webp +0 -0
  132. package/packages/effects/laser-beam/assets/textures/laser_noise.webp +0 -0
  133. package/packages/effects/laser-beam/index.ts +0 -6
  134. package/packages/effects/laser-beam-factory.ts +0 -135
  135. package/packages/effects/lumber-cart-suction/effect.json +0 -6
  136. package/packages/effects/lumber-cart-suction/index.ts +0 -399
  137. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb +0 -0
  138. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/.active +0 -1
  139. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/1781589063890_upload.glb +0 -0
  140. package/packages/effects/lumber-debris-scatter/assets/runtime/solidParticleScatter.v1.js +0 -236
  141. package/packages/effects/lumber-debris-scatter/effect.json +0 -228
  142. package/packages/effects/lumber-debris-scatter/index.ts +0 -780
  143. package/packages/effects/lumber_vehicle_gear_spin/assets/runtime/gearSpin.v1.js +0 -202
  144. package/packages/effects/lumber_vehicle_gear_spin/index.ts +0 -11
  145. package/packages/effects/lumber_vehicle_gear_spin/lumber_vehicle_gear_spin.json +0 -338
  146. package/packages/effects/lumber_vehicle_upgrade_aura/assets/runtime/upgradeAura.v1.js +0 -353
  147. package/packages/effects/lumber_vehicle_upgrade_aura/index.ts +0 -11
  148. package/packages/effects/lumber_vehicle_upgrade_aura/lumber_vehicle_upgrade_aura.json +0 -365
  149. package/packages/effects/lumber_vehicle_wood_chips/assets/runtime/solidParticleScatter.v1.js +0 -310
  150. package/packages/effects/lumber_vehicle_wood_chips/index.ts +0 -11
  151. package/packages/effects/lumber_vehicle_wood_chips/lumber_vehicle_wood_chips.json +0 -335
  152. package/packages/effects/monster-hit/index.ts +0 -128
  153. package/packages/effects/player-upgrade/effect.json +0 -6
  154. package/packages/effects/player-upgrade/index.ts +0 -635
  155. package/packages/effects/pulse-laser-volley/assets/textures/bolt_guangshu.webp +0 -0
  156. package/packages/effects/pulse-laser-volley/index.ts +0 -204
  157. package/packages/effects/resource-collect-sparkles/effect.json +0 -6
  158. package/packages/effects/resource-collect-sparkles/index.ts +0 -254
  159. package/packages/effects/run-footstep-dust/assets/runtime/runFootstepDust.v1.js +0 -215
  160. package/packages/effects/run-footstep-dust/effect.json +0 -183
  161. package/packages/effects/run-footstep-dust/index.ts +0 -377
  162. package/packages/effects/space-shared.ts +0 -120
  163. package/packages/effects/thruster-flame/index.ts +0 -305
  164. package/packages/effects/tree-chop-dust/assets/textures/tree_chop_dust_atlas.png +0 -0
  165. package/packages/effects/tree-chop-dust/effect.json +0 -8
  166. package/packages/effects/tree-chop-dust/index.ts +0 -202
  167. package/packages/effects/tree-leaf-chop-burst/assets/runtime/particleEmitter.v1.js +0 -303
  168. package/packages/effects/tree-leaf-chop-burst/assets/textures/tree_leaf_chop_burst_leaf_atlas.png +0 -0
  169. package/packages/effects/tree-leaf-chop-burst/effect.json +0 -498
  170. package/packages/effects/tree-leaf-chop-burst/index.ts +0 -294
  171. package/packages/effects/tree_chop_dust_burst/assets/runtime/particleEmitter.v1.js +0 -318
  172. package/packages/effects/tree_chop_dust_burst/assets/textures/tree_chop_dust_burst_dust.png +0 -0
  173. package/packages/effects/tree_chop_dust_burst/index.ts +0 -13
  174. package/packages/effects/tree_chop_dust_burst/tree_chop_dust_burst.json +0 -412
  175. package/packages/effects/ufo-thread-flame/assets/textures/flame_flow.webp +0 -0
  176. package/packages/effects/ufo-thread-flame/assets/textures/flame_spike.webp +0 -0
  177. package/packages/effects/ufo-thread-flame/index.ts +0 -152
  178. package/packages/effects/vehicle-exhaust-smoke/assets/textures/vehicle_exhaust_smoke_atlas.png +0 -0
  179. package/packages/effects/vehicle-exhaust-smoke/effect.json +0 -8
  180. package/packages/effects/vehicle-exhaust-smoke/index.ts +0 -298
  181. package/packages/effects/vehicle-upgrade/effect.json +0 -6
  182. package/packages/effects/vehicle-upgrade/index.ts +0 -401
  183. package/packages/effects/weapon-trail/assets/textures/trail_wedge.png +0 -0
  184. package/packages/effects/weapon-trail/index.ts +0 -313
  185. package/packages/effects/wood-crusher-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  186. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  187. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  188. package/packages/effects/wood-crusher-sawdust/index.ts +0 -43
  189. package/packages/effects/wood-crusher-sawdust/wood_crusher_sawdust.json +0 -592
  190. package/packages/effects/wood-cutter-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  191. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  192. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  193. package/packages/effects/wood-cutter-sawdust/index.ts +0 -43
  194. package/packages/effects/wood-cutter-sawdust/wood_cutter_sawdust.json +0 -592
  195. package/packages/effects/wood-sawdust-effect-factory.ts +0 -194
  196. package/packages/effects/wood_crusher_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  197. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  198. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  199. package/packages/effects/wood_crusher_sawdust/index.ts +0 -29
  200. package/packages/effects/wood_crusher_sawdust/wood_crusher_sawdust.json +0 -592
  201. package/packages/effects/wood_cutter_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  202. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  203. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  204. package/packages/effects/wood_cutter_sawdust/index.ts +0 -29
  205. package/packages/effects/wood_cutter_sawdust/wood_cutter_sawdust.json +0 -592
  206. package/packages/effects/wood_peel_material_test/assets/runtime/woodPeelMaterialTest.v1.js +0 -196
  207. package/packages/effects/wood_peel_material_test/index.ts +0 -11
  208. package/packages/effects/wood_peel_material_test/wood_peel_material_test.json +0 -136
  209. package/packages/env.particle.forest_edge_fog/assets/runtime/particleEmitter.v1.js +0 -210
  210. package/packages/env.particle.forest_edge_fog/assets/textures/f12a23c4-b924-4322-a260-3d982428f1e8.png +0 -0
  211. package/packages/env.particle.forest_edge_fog/assets/textures/yuan.png +0 -0
  212. package/packages/env.particle.forest_edge_fog/effect.json +0 -854
  213. package/packages/env.particle.forest_edge_fog/media/preview.gif +0 -0
  214. package/packages/env.particle.forest_edge_fog/media/preview.mp4 +0 -0
  215. package/packages/env.particle.forest_edge_fog/media/preview.webm +0 -0
  216. package/packages/env.particle.forest_edge_fog/media/thumbnail.png +0 -0
  217. package/packages/env.particle.forest_edge_fog/metadata/description.json +0 -148
  218. package/packages/env.particle.forest_edge_fog/provenance/03-effect.original.json +0 -827
  219. package/packages/env.particle.forest_edge_fog/provenance/03-normalized-vfx-to-babylon-report.json +0 -196
  220. package/packages/env.particle.forest_edge_fog/provenance/04-preview-overrides.json +0 -432
  221. package/packages/env.particle.forest_edge_fog/provenance/04-preview-tuning-report.json +0 -28
  222. package/packages/env.particle.forest_edge_fog/provenance/asset-map.json +0 -124
  223. package/packages/env.particle.forest_edge_fog/provenance/lineage.json +0 -41
  224. package/packages/generation.ts +0 -14
  225. package/packages/index.ts +0 -14
  226. package/packages/legacy-particle-runtime.ts +0 -113
  227. package/packages/manifestRuntimePackage.ts +0 -519
  228. package/packages/registry.ts +0 -85
  229. package/packages/rendering.ts +0 -13
  230. package/packages/resource.particle.viscous_oil_suction/assets/runtime/top_disk_suction/particleEmitter.v1.js +0 -424
  231. package/packages/resource.particle.viscous_oil_suction/assets/textures/Glow ad.png +0 -0
  232. package/packages/resource.particle.viscous_oil_suction/effect.json +0 -1254
  233. package/packages/resource.particle.viscous_oil_suction/media/preview.gif +0 -0
  234. package/packages/resource.particle.viscous_oil_suction/media/preview.mp4 +0 -0
  235. package/packages/resource.particle.viscous_oil_suction/media/preview.webm +0 -0
  236. package/packages/resource.particle.viscous_oil_suction/media/thumbnail.png +0 -0
  237. package/packages/resource.particle.viscous_oil_suction/metadata/description.json +0 -122
  238. package/packages/resource.particle.viscous_oil_suction/provenance/03-effect.original.json +0 -1051
  239. package/packages/resource.particle.viscous_oil_suction/provenance/03-normalized-vfx-to-babylon-report.json +0 -200
  240. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-overrides.json +0 -581
  241. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-tuning-report.json +0 -28
  242. package/packages/resource.particle.viscous_oil_suction/provenance/asset-map.json +0 -111
  243. package/packages/resource.particle.viscous_oil_suction/provenance/lineage.json +0 -45
  244. package/packages/types.ts +0 -107
  245. package/tooling/check-dist-runtime.mjs +0 -166
  246. package/tooling/generate-index.mjs +0 -55
  247. package/tooling/test-guardrails.mjs +0 -157
  248. package/tooling/validate-boundary.mjs +0 -92
  249. package/tooling/validate-effects.mjs +0 -304
  250. package/tooling/validate.mjs +0 -53
@@ -1,498 +0,0 @@
1
- {
2
- "schemaVersion": "vfx-effect-package/1.0",
3
- "id": "build.particle.tree_leaf_chop_burst",
4
- "name": {
5
- "zh": "砍树树叶溅射",
6
- "en": "Tree Leaf Chop Burst"
7
- },
8
- "source": {
9
- "engine": "babylon",
10
- "engineVersion": "8.56.2",
11
- "projectPath": "D:/project/loy_babylon_particle_test",
12
- "rootAsset": "src/effects/treeLeafChopBurst.ts",
13
- "sourceId": "loy-babylon-particle-test/treeLeafChopBurst",
14
- "extractedAt": "2026-06-01T00:00:00.000Z",
15
- "extractorVersion": "manual-babylon-particle-package/0.1.0",
16
- "canonicalSource": "local",
17
- "sourceArchivePrefix": "gs://fps-vfx-library/packages/build.particle.tree_leaf_chop_burst/source",
18
- "legacyId": null,
19
- "previousIds": []
20
- },
21
- "assets": {
22
- "textures": [
23
- {
24
- "kind": "texture",
25
- "id": "tree_leaf_chop_burst",
26
- "packagePath": "assets/textures/tree_leaf_chop_burst_leaf_atlas.png",
27
- "sourcePath": "D:/project/loy_babylon_particle_test/public/textures/particles/tree-leaf-chop-burst-leaf-atlas.png",
28
- "sourceId": "generated-imagegen-leaf-atlas-alpha",
29
- "width": 1024,
30
- "height": 1024
31
- }
32
- ],
33
- "materials": [],
34
- "meshes": [],
35
- "shaders": [],
36
- "sounds": [],
37
- "scripts": [
38
- {
39
- "kind": "script",
40
- "id": "particle_emitter_v1",
41
- "packagePath": "assets/runtime/particleEmitter.v1.js",
42
- "runtimeId": "particleEmitter/v1",
43
- "engine": "babylon",
44
- "moduleFormat": "esm",
45
- "exports": [
46
- "createParticleEmitterRuntime",
47
- "runtimeContract"
48
- ],
49
- "mimeType": "text/javascript"
50
- }
51
- ],
52
- "raw": [
53
- {
54
- "kind": "raw",
55
- "id": "02-normalized-vfx",
56
- "packagePath": "source/02-normalized-vfx.json",
57
- "sourcePath": "D:/project/loy_babylon_particle_test/source/02-normalized-vfx.json"
58
- },
59
- {
60
- "kind": "raw",
61
- "id": "01-source-dump",
62
- "packagePath": "source/01-source-dump.json",
63
- "sourcePath": "D:/project/loy_babylon_particle_test/source/01-source-dump.json"
64
- },
65
- {
66
- "kind": "raw",
67
- "id": "tree_leaf_chop_burst_source_ts",
68
- "packagePath": "source/src/effects/treeLeafChopBurst.ts",
69
- "sourcePath": "D:/project/loy_babylon_particle_test/src/effects/treeLeafChopBurst.ts"
70
- },
71
- {
72
- "kind": "raw",
73
- "id": "tree_leaf_chop_burst_source_texture",
74
- "packagePath": "source/textures/tree-leaf-chop-burst-leaf-atlas-source.png",
75
- "sourcePath": "D:/project/loy_babylon_particle_test/public/textures/particles/tree-leaf-chop-burst-leaf-atlas-source.png"
76
- }
77
- ]
78
- },
79
- "emitters": [
80
- {
81
- "name": "tree_leaf_chop_burst",
82
- "sourceNodeName": "tree_leaf_chop_burst",
83
- "enabled": true,
84
- "deterministic": true,
85
- "blendMode": "STANDARD",
86
- "particleTexturePath": "assets/textures/tree_leaf_chop_burst_leaf_atlas.png",
87
- "capacity": 100,
88
- "manualEmitCount": 42,
89
- "emitRate": 0,
90
- "effectScale": 1,
91
- "minSize": 0.21,
92
- "maxSize": 0.21,
93
- "minLifeTime": 0.775,
94
- "maxLifeTime": 0.775,
95
- "minEmitPower": 3.125,
96
- "maxEmitPower": 3.125,
97
- "updateSpeed": 0.016666666666666666,
98
- "gravity": {
99
- "x": 0,
100
- "y": -3.8,
101
- "z": 0
102
- },
103
- "shape": {
104
- "sourceType": "Box",
105
- "sourceEnum": 0,
106
- "radius": 1,
107
- "angle": 0,
108
- "type": "Box",
109
- "direction1": {
110
- "x": -1.103,
111
- "y": 0.55,
112
- "z": -0.62
113
- },
114
- "direction2": {
115
- "x": 0.943,
116
- "y": 1.85,
117
- "z": 0.62
118
- },
119
- "minEmitBox": {
120
- "x": -0.08,
121
- "y": 0.05,
122
- "z": -0.08
123
- },
124
- "maxEmitBox": {
125
- "x": 0.08,
126
- "y": 0.18,
127
- "z": 0.08
128
- },
129
- "radiusRange": 0
130
- },
131
- "spriteSheet": {
132
- "enabled": true,
133
- "cellWidth": 256,
134
- "cellHeight": 256,
135
- "startCellID": 0,
136
- "endCellID": 15,
137
- "cellChangeSpeed": 0,
138
- "randomStartCell": false
139
- },
140
- "alphaKeys": [
141
- {
142
- "time": 0,
143
- "alpha": 1
144
- },
145
- {
146
- "time": 0.72,
147
- "alpha": 1
148
- },
149
- {
150
- "time": 1,
151
- "alpha": 0
152
- }
153
- ],
154
- "colorKeys": [
155
- {
156
- "time": 0,
157
- "color": {
158
- "r": 0.82,
159
- "g": 1,
160
- "b": 0.32,
161
- "a": 1
162
- }
163
- },
164
- {
165
- "time": 1,
166
- "color": {
167
- "r": 0.54,
168
- "g": 0.43,
169
- "b": 0.12,
170
- "a": 0
171
- }
172
- }
173
- ],
174
- "sizeKeys": [
175
- {
176
- "time": 0,
177
- "size": 1
178
- },
179
- {
180
- "time": 0.78,
181
- "size": 0.92
182
- },
183
- {
184
- "time": 1,
185
- "size": 0.35
186
- }
187
- ],
188
- "renderColor": {
189
- "color": {
190
- "r": 0.82,
191
- "g": 1,
192
- "b": 0.32,
193
- "a": 1
194
- },
195
- "colorIntensity": 1,
196
- "alphaIntensity": 1
197
- },
198
- "minInitialRotation": 0,
199
- "maxInitialRotation": 0,
200
- "minAngularSpeed": 0,
201
- "maxAngularSpeed": 0,
202
- "source": {
203
- "simulationSpace": 1,
204
- "renderMode": 0,
205
- "alignSpace": 2,
206
- "normalizedVfxEmitterId": "tree_leaf_chop_burst"
207
- },
208
- "sourceMap": null,
209
- "mapping": [
210
- {
211
- "babylon": "ParticleSystem.manualEmitCount",
212
- "source": "TreeLeafBurstOptions.particleCount"
213
- },
214
- {
215
- "babylon": "ParticleSystem.minLifeTime/maxLifeTime",
216
- "source": "TreeLeafBurstOptions.particleLifeTime"
217
- },
218
- {
219
- "babylon": "ParticleSystem.direction1/direction2",
220
- "source": "TreeLeafBurstOptions.emissionDirection + emissionDirectionSpread"
221
- },
222
- {
223
- "babylon": "ParticleSystem.minEmitPower/maxEmitPower",
224
- "source": "TreeLeafBurstOptions.minSpeed/maxSpeed"
225
- },
226
- {
227
- "babylon": "ParticleSystem.minSize/maxSize + emitter box + power + gravity",
228
- "source": "TreeLeafBurstOptions.effectScale"
229
- }
230
- ],
231
- "runtime": {
232
- "stopAfterSeconds": 1.25,
233
- "disposeOnComplete": true
234
- }
235
- }
236
- ],
237
- "runtime": {
238
- "driver": "particle",
239
- "defaultMesh": null,
240
- "defaultOffset": {
241
- "x": 0,
242
- "y": 1.4,
243
- "z": 0
244
- },
245
- "start": [
246
- "Instantiate Babylon runtime for tree_leaf_chop_burst"
247
- ],
248
- "update": [
249
- "Apply Babylon tunable parameter overrides"
250
- ],
251
- "stop": [
252
- "Stop and dispose runtime resources"
253
- ],
254
- "adapters": [
255
- {
256
- "id": "particleEmitter/v1",
257
- "engine": "babylon",
258
- "entry": "assets/runtime/particleEmitter.v1.js",
259
- "moduleFormat": "esm",
260
- "exports": [
261
- "createParticleEmitterRuntime",
262
- "runtimeContract"
263
- ]
264
- }
265
- ]
266
- },
267
- "tunableParams": [
268
- {
269
- "key": "tree_leaf_chop_burst.manualEmitCount",
270
- "labelZh": "粒子数量",
271
- "type": "number",
272
- "default": 42,
273
- "min": 1,
274
- "max": 160,
275
- "step": 1,
276
- "target": {
277
- "emitter": "tree_leaf_chop_burst",
278
- "property": "manualEmitCount",
279
- "operator": "set"
280
- }
281
- },
282
- {
283
- "key": "tree_leaf_chop_burst.minLifeTime",
284
- "labelZh": "最小寿命",
285
- "type": "number",
286
- "default": 0.5,
287
- "min": 0.05,
288
- "max": 4,
289
- "step": 0.01,
290
- "unit": "s",
291
- "target": {
292
- "emitter": "tree_leaf_chop_burst",
293
- "property": "minLifeTime",
294
- "operator": "set"
295
- }
296
- },
297
- {
298
- "key": "tree_leaf_chop_burst.maxLifeTime",
299
- "labelZh": "最大寿命",
300
- "type": "number",
301
- "default": 1.05,
302
- "min": 0.05,
303
- "max": 4,
304
- "step": 0.01,
305
- "unit": "s",
306
- "target": {
307
- "emitter": "tree_leaf_chop_burst",
308
- "property": "maxLifeTime",
309
- "operator": "set"
310
- }
311
- },
312
- {
313
- "key": "tree_leaf_chop_burst.minEmitPower",
314
- "labelZh": "最小发射速度",
315
- "type": "number",
316
- "default": 1.45,
317
- "min": 0,
318
- "max": 20,
319
- "step": 0.01,
320
- "target": {
321
- "emitter": "tree_leaf_chop_burst",
322
- "property": "minEmitPower",
323
- "operator": "set"
324
- }
325
- },
326
- {
327
- "key": "tree_leaf_chop_burst.maxEmitPower",
328
- "labelZh": "最大发射速度",
329
- "type": "number",
330
- "default": 4.8,
331
- "min": 0,
332
- "max": 30,
333
- "step": 0.01,
334
- "target": {
335
- "emitter": "tree_leaf_chop_burst",
336
- "property": "maxEmitPower",
337
- "operator": "set"
338
- }
339
- },
340
- {
341
- "key": "tree_leaf_chop_burst.minSize",
342
- "labelZh": "最小粒子大小",
343
- "type": "number",
344
- "default": 0.12,
345
- "min": 0.01,
346
- "max": 3,
347
- "step": 0.01,
348
- "target": {
349
- "emitter": "tree_leaf_chop_burst",
350
- "property": "minSize",
351
- "operator": "set"
352
- }
353
- },
354
- {
355
- "key": "tree_leaf_chop_burst.maxSize",
356
- "labelZh": "最大粒子大小",
357
- "type": "number",
358
- "default": 0.3,
359
- "min": 0.01,
360
- "max": 4,
361
- "step": 0.01,
362
- "target": {
363
- "emitter": "tree_leaf_chop_burst",
364
- "property": "maxSize",
365
- "operator": "set"
366
- }
367
- },
368
- {
369
- "key": "tree_leaf_chop_burst.effectScale",
370
- "labelZh": "整体空间缩放",
371
- "type": "number",
372
- "default": 1,
373
- "min": 0.1,
374
- "max": 8,
375
- "step": 0.1,
376
- "target": {
377
- "emitter": "tree_leaf_chop_burst",
378
- "property": "effectScale",
379
- "operator": "set"
380
- }
381
- },
382
- {
383
- "key": "tree_leaf_chop_burst.shape.direction1",
384
- "labelZh": "发射方向下界",
385
- "type": "vector3",
386
- "default": {
387
- "x": -1.103,
388
- "y": 0.55,
389
- "z": -0.62
390
- },
391
- "target": {
392
- "emitter": "tree_leaf_chop_burst",
393
- "property": "shape.direction1",
394
- "operator": "set"
395
- }
396
- },
397
- {
398
- "key": "tree_leaf_chop_burst.shape.direction2",
399
- "labelZh": "发射方向上界",
400
- "type": "vector3",
401
- "default": {
402
- "x": 0.943,
403
- "y": 1.85,
404
- "z": 0.62
405
- },
406
- "target": {
407
- "emitter": "tree_leaf_chop_burst",
408
- "property": "shape.direction2",
409
- "operator": "set"
410
- }
411
- },
412
- {
413
- "key": "tree_leaf_chop_burst.gravity",
414
- "labelZh": "重力",
415
- "type": "vector3",
416
- "default": {
417
- "x": 0,
418
- "y": -3.8,
419
- "z": 0
420
- },
421
- "target": {
422
- "emitter": "tree_leaf_chop_burst",
423
- "property": "gravity",
424
- "operator": "set"
425
- }
426
- }
427
- ],
428
- "babylon": {
429
- "driver": "particle",
430
- "entryFile": "apps/vfx_asset_library/frontend/src/runtime/drivers/particleDriver.ts",
431
- "previewConfig": {
432
- "textureUrl": "assets/textures/tree_leaf_chop_burst_leaf_atlas.png",
433
- "emitterCount": 1,
434
- "effectFile": "tree_leaf_chop_burst.json",
435
- "normalizedVfx": "source/02-normalized-vfx.json"
436
- }
437
- },
438
- "review": {
439
- "status": "tweaked",
440
- "artistNotes": [
441
- "Built from the local Babylon tree leaf burst prototype.",
442
- "Includes a 4x4 transparent leaf spritesheet and spatial effectScale support."
443
- ],
444
- "approvedBy": null,
445
- "approvedAt": null,
446
- "history": [
447
- {
448
- "at": "2026-06-01T00:00:00.000Z",
449
- "from": "prototype",
450
- "to": "tweaked",
451
- "note": "Packaged for fps-vfx-library."
452
- }
453
- ]
454
- },
455
- "recording": {
456
- "provider": "local-screenshot",
457
- "recordedAt": "2026-06-01T00:00:00.000Z",
458
- "mimeType": "image/png",
459
- "durationSec": 1.25,
460
- "fps": 0,
461
- "media": {
462
- "previewVideo": null,
463
- "previewWebm": null,
464
- "previewMp4": null,
465
- "previewGif": null,
466
- "thumbnail": "media/thumbnail.png",
467
- "contactSheet": "media/contact-sheet.png",
468
- "gcsUri": null
469
- }
470
- },
471
- "aiDescription": null,
472
- "search": {
473
- "tags": [
474
- "babylon",
475
- "particle",
476
- "tree",
477
- "leaf",
478
- "chop",
479
- "burst"
480
- ],
481
- "descriptionZh": "砍树命中时从树干附近喷出的手绘树叶粒子,带随机叶片 sprite、旋转、下落和短暂淡出。",
482
- "descriptionEn": "Hand-painted leaf particles burst from the tree impact point with randomized leaf sprites, rotation, falling motion, and a short fade.",
483
- "useCases": [
484
- "tree chopping impact",
485
- "wood gathering feedback",
486
- "forest game hit effect"
487
- ],
488
- "negativeUseCases": [
489
- "continuous foliage wind",
490
- "heavy explosion",
491
- "smoke-only dust"
492
- ]
493
- },
494
- "legacyIds": [],
495
- "gcsPrefix": "gs://fps-vfx-library/packages/build.particle.tree_leaf_chop_burst",
496
- "sourceArchivePrefix": "gs://fps-vfx-library/packages/build.particle.tree_leaf_chop_burst/source",
497
- "fullProvenancePrefix": "gs://fps-vfx-library/packages/build.particle.tree_leaf_chop_burst/provenance"
498
- }