[x3d-public] Proposal for New Fields for ParticleSystem
Don Brutzman
don.brutzman at gmail.com
Wed Nov 5 18:04:32 PST 2025
Dick Puk and I reviewed this possible change in the specification editors
call today. Makes sense, once again thanks.
One necessary change, particleLifetime needs to have type SFTime vice
SFFloat.
- The *particleLifetime* field specifies the nominal duration in seconds
of any particle.
Also adjusted bounds on the three key fields to range [0,1]. I've improved
the prose, committed to version control and updated the website.
- 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
40.4.5 ParticleSystem
ParticleSystem : X3DShapeNode {
SFNode [in,out] appearance NULL [X3DAppearanceNode]
SFBool [in,out] bboxDisplay FALSE
SFBool [in,out] castShadow TRUE
SFBool [in,out] createParticles TRUE
SFNode [in,out] geometry NULL [X3DGeometryNode]
SFBool [in,out] enabled TRUE
SFFloat [in,out] lifetimeVariation 0.25 [0,1]
SFInt32 [in,out] maxParticles 200 [0,∞)
SFNode [in,out] metadata NULL [X3DMetadataObject]
SFTime [in,out] particleLifetime 5 [0,∞) SFFloat
SFVec2f [in,out] particleSize 0.02 0.02 [0,∞)
SFBool [in,out] visible TRUE
SFBool [out] isActive
SFVec3f [] bboxCenter 0 0 0
SFVec3f [] bboxSize -1 -1 -1 [0,∞) or -1 -1 -1
SFNode [] color NULL [X3DColorNode]
MFFloat [] colorKey [] [0,1] [0,∞)
SFNode [] emitter NULL [X3DParticleEmitterNode]
SFString [] geometryType "QUAD"
["LINE"|"POINT"|"QUAD"|"SPRITE"|"TRIANGLE"|"GEOMETRY"|...]
MFNode [] physics [] [X3DParticlePhysicsModelNode]
SFNode [] scale NULL [X3DCoordinateNode]
MFFloat [] scaleKey [] [0,1]
SFNode [] texCoord NULL
[TextureCoordinate|TextureCoordinateGenerator]
MFFloat [] texCoordKey [] [0,1] [0,∞)
}
Review and improvement are always welcome.
all the best, Don
--
X3D Graphics, Maritime Robotics, Distributed Simulation
Relative Motion Consulting https://RelativeMotion.info
On Tue, Nov 4, 2025 at 3:40 PM Don Brutzman <don.brutzman at gmail.com> wrote:
> John: please be aware that
>
> - The use of pseudorandom values for scale or color, as outlined in my
> prior message to you, is simply an author option that does not affect the
> proposed design refinements of the ParticleSet node. Authors can create
> any set of values they want for modifying particle color, scale, and
> texture coordinates for various geometry types. This is a big palette to
> create with!
> - If you want to do GPU programming, please do so. X3D has a Shaders
> component, which Holger mentioned to you last week. We are not expanding
> the scope of ParticleSet requirements, but merely adding some extra
> enhancements which are straightforward and simple to integrate.
>
> Holger:
>
> - I too like the idea of consistent design (with all of other X3D
> animation) by making the key parameters normalized to a float range of
> [0,1] and letting lifetimeVariation modify the time interval. In addition
> to common design, it also helps authors to more easily create consistent
> controls for all of their time-varying animation.
> - This approach also avoids any mismatch between MFloat typing,
> keeping such values as floats and not time intervals, thus avoiding any
> backwards-compatibility issues (that can be troublesome for specifications
> and implementations).
> - Thank you for pointing out that texCoord/texCoordKey fields are also
> part of this mix.
> - I will work on adjusting the draft prose in the proposed change and
> report back when ready for further review. Dick and I will also discuss in
> an upcoming Specification Editors meeting.
>
> Have fun with X3D ParticleSet!
>
> all the best, Don
> --
> X3D Graphics, Maritime Robotics, Distributed Simulation
> Relative Motion Consulting https://RelativeMotion.info
>
>
> On Mon, Nov 3, 2025 at 8:50 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> I would prefer if the pseudorandom list of scaleKey values to be created
>> as a particle system, similar to how WindPhysicsModel works, rather than
>> explicitly creating such values. Indeed, when I tried to create
>> VariationalPhysicsModel, I used WindPhysicsModel as a basis.
>>
>> I don’t want to “swap out” Coordinate nodes, I want 6 separate
>> VariationalPhysicsModels, or 6 scaleKey fields that are like particle
>> systems.
>>
>> I realize I can use a script, but I really want to do this integrated
>> with the GPU, because JavaScript computation of surface coordinates on the
>> surface is way too slow. The 6 scale keys are key to generating the
>> surface. If I have any hope of scaling this up to thousands of surfaces,
>> it’s got to be on the GPU. That is, I’ve got to have any randomness
>> ultimately on the GPU, or pseudorandom numbers streamed to the GPU.
>>
>> A whole another aspect is having the 6 scaleKey current values controlled
>> by multiple users, but that’s a whole another project.
>>
>> John
>>
>> On Sun, Nov 2, 2025 at 7:45 PM Don Brutzman via x3d-public <
>> x3d-public at web3d.org> wrote:
>>
>>> John, it is straightforward to generate a pseudorandom list of scale
>>> values using the *scale/scaleKey* field definitions that Holger has
>>> recommended.
>>>
>>> - Create a Coordinate node that has a list of individual SFVec3f
>>> scale values in the MFVec3f Coordinate.points field. As Holger indicated,
>>> you can sample that using however many *scaleKey *intervals you want.
>>> - If one jittery Coordinate node isn't enough for you, you can
>>> generate more than one and swap them out.
>>> - Generation of such pseudorandom Coordinate nodes can be done
>>> programmatically at authoring time.
>>> - Generation of such pseudorandom Coordinate nodes can also be done
>>> at run time using a Script node.
>>>
>>> Hopefully the draft specification prose helps untangle this. The
>>> 3-tuple scale values go into the Coordinate node points field, and
>>> a scaleKey array lists corresponding time in seconds for each transition.
>>>
>>> There is a lot of expressive power here. Have fun with X3D ParticleSet
>>> particle scaling! 😀
>>>
>>> all the best, Don
>>> --
>>> X3D Graphics, Maritime Robotics, Distributed Simulation
>>> Relative Motion Consulting https://RelativeMotion.info
>>> _______________________________________________
>>> 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/20251105/fc00dd68/attachment.html>
More information about the x3d-public
mailing list