I’ve been very busy with the latest releases that I didn’t have the time to update these blog posts but thought I should have a quick catch up so here’s a round up of the latest additions.
Paths
A big new feature is an emission type called paths (currently 3d only). This is where you can create a path that particles can spawn and travel along allowing for a great range of new effects and emitters to be created. This is a feature that is still under development as it’s not easy to create the interface that makes them intuitive to work with, especially in 3d. What I have right now are a few simplified generators for some typical paths that you might want to create including: spirals, loops, s-curves, bends and arcs. At some point I’d like to make a way to create the paths by simply interacting with the preview window.
When you select path as the emission type you’ll see a new set of attributes under the emitter properties:
- Path Generator: The options under here are where you can generate a path. If you click on the camera options icon in the preview window you can switch on outline and path nodes so that you can see the path clearly while you’re creating it. Select the type of generator to use with the drop down, then you can use the drag floats to alter the path to your needs. These are essentially graphs similar to how you change particle behaviour overtime but here you can change how the path shapes itself over it’s length. Different options will show here depending on the path generator you choose with the dropdown.
- Extrusion options: You have the option to extrude the path either in an arc or linearly. This allows you to spawn the particles not just along the length of the path but also extruded out from the path too according the options you set here. Again, these are graphs which allow you to change the extrusion of the path over the lifetime of the emitter. The size graphs is how much to extrude and the offset is where to start the extrusion from with either degrees or units depending on the type of extrusion.
- Rotation Range: A powerful feature of the paths is to both rotate the path randomly and to spawn along multiple rotated paths in the same emitter. You can set the rotation range and pitch/yaw offsets, and also dictate the number of paths to spawn at once and also if the paths should be finite or continuously spawn. You can also stagger the creation of new paths. See some of the multi-path examples in the library that you download with the alpha version.
- Lifetime of particles based on path position: You can also opt to make particles sample their graphs based on the position along the paths. I’ll be adding some more options here in the future like separating out color/intensity/alpha blend.
Under the hood, paths use Catmull-Rom splines which are efficient to work with and were easy to slot into the existing SIMD update functions for maximum speed of updating the particles. I’ll be working a lot more on paths in future version to add more features and make them a lot easier to work with. I’m especially interested in idea of animated paths for even more possibilities so watch this space.
New Simplified Motion Randomness
Something that I’ve wanting to add for a long time is an alternative to Simplex Noise in order to create random movement for particles. I’ve added that now with a check box under Noise attributes where you can switch to this alternative version. This motion randomness is much faster to compute than simplex noise but obviously that comes with more limited options for aesthetics. Despite that though I think it still looks decent and a good alternative when simplex noise isn’t required and you need to save on CPU cycles.
The next thing I’d like to work on is just to spend a little bit of time in the library tidying some things up, mainly with how sprites that are generated by the particle manager are currently all in one big list. I would like to make them grouped by effect so that they are more flexible when it comes to drawing them. If grouped by effect then they can be more easily drawn in specific order, culled from drawing at all and so on. This is also ground work for allowing for different render pipelines/pixel shaders for emitters that I would like to do.
I also have a good idea for a new emitter type that would probably make sub effects redundant in a lot of cases. This would be where you can choose to use the location of particles from another emitter in the effect to spawn particles at. This would make particles that leave trails a lot more efficient by not have to have a sub effect and have to create all those extra effects/emitters to do this.
Another thing that’s high on my list are ribbons – so instead of particle billboards, ribbon-like trails can be created and now that we have paths I would like to start implementing that. One step at a time!
Here’s the list of all the recent changes over the last couple of updates:
15.07.2024
* Added new motion randomness as an alternative to simplex noise which is computationally less expensive.
* Added new global attributes for noise/motion randomness.
* Library list of effects will now auto scroll when dragging effects/emitters outside of the window helping Mac users with no mouse wheel scroll.
* Fixed issues with orbital emission direction on point effects.
* Fixed a crash with sprite data baking due to random seeds and multithreading.
* Added motion randomness to the XML/Zip export
* Update docs for new features
26.06.2024
* Each emitter remembers it’s scroll position in the property window now.
* Fixed an issue with emission types disappearing.
* Updated spawn amount based on area size for paths.
* Spin now links to the correct graphs in the properties window.
* Added a milliseconds counter when the editor is paused so that you can find out the age of the effect and more easily set delay spawn rather then guessing.
* Fixed a crash when deleting a shape.
* Play once for animated shapes should work again.
* Added a milliseconds count to animated image shapes when using play once and also a button that can set the lifetime of the particle to the same length as the image animation.
* Added an indicator to the color overtime gradient when hovering any overtime type graph so it’s easier to line up changes on the graph when the color changes.
* Added a marker to the Shapes tab showing which shape is used for the currently selected emitter.
* Name already exists when trying to change an effect or emitter name no longer persists.
* Duplicate effect names in a library are now resolved when loading an effect library.
* Using Export to Zip function now remembers the last export path so you can just CMD/CTRL + E to export again without have to use the file dialog again.
17.06.2024
* Added Export to Zip found under the file menu which saves the active library to a zip file in the old file format using XML.
* Wrap Sprite docs updated for recent changes to the functionality.
* Fixed some issues relating to updating 2d sprites
* Fixed a crash relating to freeing particle lists of sub effects.
13.06.2024
* Added new emission type path which allows for spawning particles along a path and also traversing the path similar to lines. See new Paths section in the help tab for more info. Paths are currently 3d only, 2d coming soon.
* Added new path example effects to the LibraryExamples3d file, but more coming soon.
* Added new emission direction: Orbital. This makes particles orbit the emitter around the Y axis.
* Added new docs for spin on the extra axis in 3d.
* Fixed an issue with cylinder emission type handles.
* Renamed the Particle Rotation property section so that it’s a bit clearer.
* Fixed a crash relating to modifying sub effects.
* Updated presets to include new paths.
* When an effect restarts it will now remember the last position.
* Changed emission type and emission directions to combo boxes.
* Emission direction is now disabled when edge traversal is active.
* Fixed an issue with random colour from gradient option stopping blendfactor graph from having any effect.
* Changed the Wrap Single particle option that previously only affected sprite data to now also apply to emitters in general.
* Added option to flip the colour ramp.
* Fixed an issue with reversing the shape animation.