[x3d-public] Proposal for New Fields for ParticleSystem

Don Brutzman don.brutzman at gmail.com
Sun Nov 2 17:34:02 PST 2025


Thanks for contributing this excellent suggestion Holger.  The field
definitions and motivation sound excellent, and the example model looks
great!

Draft specification prose changes follow, patterned after the existing *40.2.3
Color ramps* and *color/colorKey* paragraphs.

   - X3D Architecture draft v4.1, clause 40 Particle systems component, new
   section
   -
   https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/particleSystems.html#ScaleRamps

*40.2.4 Scale ramps*
> A scale ramp is used to specify the scale of particle geometry over time.
> A scale ramp is a variation on the typical use of a coordinate
> interpolator. The key represents relative time values from the start of the
> lifetime of the particle. There should be the same number of scale values
> in the node as there are corresponding key values. If not, the smaller
> number of those two values shall be used. For particles that last longer
> than the last time value, the scale associated with the last time value
> shall be continued for the rest of the lifetime of the particle.


and then

   - X3D Architecture draft v4.1, clause 40 Particle systems component,
   40.4.5 ParticleSystem
   -
   https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/particleSystems.html#ParticleSystem

ParticleSystem : X3DShapeNode {

  SFNode   []       scale             NULL      [X3DCoordinateNode]
  MFFloat  []       scaleKey          []        [0,∞)

The *scale* and *scaleKey* fields specify how to change the size of the
> particle over the lifetime of an individual particle. The *scaleKey* field
> represents the time of the particle in seconds, while the *scale* field
> holds a series of scale values to be used at the given key points in time.
> Each individual SFVec3f scale value in the MFVec3f array may indicate
> uniform or non-uniform scaling. Between key times, scale values are
> interpolated pairwise in a linear fashion, using the same rules defined for
> the CoordinateInterpolator
> <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/interpolators.html#CoordinateInterpolator>
>  node.


It is worth observing that there are many ways to define a MFVec3f field
holding a *scale *value array.  I think that your choice of Coordinate node
is best for authors because it matches the corresponding design of
ParticleSet *color/colorKey* fields, and also makes animation of the *scale
v*alue array more straightforward.

If all that sounds good, then a second implementation is appropriate.
Improvements and clarifications to the draft X3D 4.1 specification are
always welcome.

Mantis issue 1519 records the ongoing status of this recommended change.

   - Mantis 1519: add ParticleSystem scale interpolation fields to that can
   scale particle sizes over lifetime
   - https://mantis.web3d.org/view.php?id=1519

Have fun with X3D particle systems!  🎊 🎊 🎊

all the best, Don
-- 
X3D Graphics, Maritime Robotics, Distributed Simulation
Relative Motion Consulting  https://RelativeMotion.info


On Wed, Oct 29, 2025 at 10:42 AM Holger Seelig via x3d-public <
x3d-public at web3d.org> wrote:

> The new latest of X_ITE comes now with two new fields for ParticleSystem.
> That are scaleKey and scale fields. They work much like colorKey and color
> fields.
>
> A user asks me for the ability to scale the particles during the time,
> basically to make the particles grow from its creation time and then shrink.
>
> Other 3D engines like Unity have this already for a long time.
>
> With the two new fields it is possible to have a curve and finely adjust
> the size over the time.
>
> New fields will look like this:
>
> inputOutput MFFloat scaleKey [ ]
> inputOutput SFNode scale NULL  [Coordinate]
>
> It will work with all geometry types a ParticleSystem can have, even
> GEOMETRY.
>
> I prepared a very simple example that shows the capabilities of these new
> fields:
>
> https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/ParticleSystems/Scales.x3d
>
> Best regards,
> Holger
>
>> Holger Seelig
> holger.seelig at yahoo.de
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20251102/24cd46fa/attachment.html>


More information about the x3d-public mailing list