Integrating solid particles into NPE or creating a solid particles editor

Hello! I’ve been experimenting with VFX creation workflows for games, and one missing feature is the ability to create Solid Particle Systems (SPS) without coding. Currently, the Node Particle Editor only supports standard particles, but in game development we typically use both: standard particles for effects like smoke/fire, and SPS for complex objects like debris/rocks.

Would it be possible to add SPS node support to the existing Node Particle Editor? This would allow visual creation of solid particle systems with nodes like SPS Creation, Mesh Addition, Physics, Animation, and Material nodes.

Alternatively, maybe a separate SolidParticleEditor could be created that allows visual creation of SPS systems and exports a JSON configuration file that can be easily loaded and used in games with simple SolidParticle.start() calls.

I’m currently implementing a VFX Editor in Babylon Editor that allows combining different particle systems, configuring them, and creating unified effects that can be easily launched. This would be incredibly valuable for creating layered VFX effects (like explosions with both fire particles and debris chunks) without manual coding.

Thanks!

2 Likes

I totally agree and it would be an awesome added value for the Babylon.js Editor: focus more on creating and less on coding.

It could be sync with the support of NodeParticleEditor in the Babylon.js Editor that is still in progress (serialization of ParticleSystemSet).

Just for visibility, let’s ping the master of masters @sebavan

I think it should be something like this

1 Like

I’m trying to implement this SPS node editor flow and I have created the following blocks:

SPSMeshSourceBlock

Creates mesh shapes for SPS particles. Supports Box, Sphere, Cylinder, Plane, or custom mesh input.

SPSCreateBlock

Configuration block that collects mesh, particle count, and initialization blocks. Does NOT create the SPS itself.

SPSSystemBlock

Main system block that creates the SolidParticleSystem, adds shapes from Create blocks, and manages particle initialization.

SPSInitBlock

Initialization block used for SPS initParticles function configuration. Sets particle properties (position, velocity, color, scaling, rotation) for specific particle ranges.

Problem: I can’t find a way to connect multiple blocks to the initBlock input in SPSCreateBlock, and also connect multiple CreateSPS blocks to SPSSystem. @Deltakosh, maybe you can help with this


I’m concerned by how this will integrate into what we have. I wonder if that should be a mode like because else I struggle to see how we mix it with the current blocks for regular particles. Like all the update functions. How does it work?

Excellent question! Since SPS is different from regular particles, some blocks cannot be reused (perhaps the update logic could be modified depending on the connection type). The idea is that using SPSinitBlock, we collect configuration that will then be called in the initParticles function. The same system works for SPSUpdateBlock, which collects configuration that will be used in the updateParticle function in SPS for onBeforeRenderObservable. Having two different systems also allows us to create, for example, an SPSParticleEmitterBlock, which can be connected as an emitter for regular particles, thus creating particles for each SPS particle. I will try to make some working example, I have a slight lack of understanding of the node system and I hope we can find a better solution for implementing SPS

My guts tell me that we should probably not merge both concept but I’m ok to be wrong.

SPS could have its own mode with its own block as I do not see (for now) how both system could work together. For me an user will be either in particle OR in SPS mode. NPE has everything to do with particle but little to do with SPS for now

But again I’m totally fine being wrong here ;D

The more I think about it the more I think we should have a mode like in NME (where you can edit material or procedural texture for instance)

Okay, I’ll look at how it works in NME and try to implement something. As I understand it, this is a separate mode within NPE, or are you talking about a separate solid particle editor? Thank you!

I think it could be a separate mode as I think most of the update loop part could be reuse. The razor here to decide is how much we can share between both modes

Is it okay if I create a PR with my proposal in the BJS repository, or is it better if I create a PR for my fork and share the PR in the topic?

both work!

1 Like

i have created PR

Let’s discuss there for whoever is interested. I had some comments / questions