<div dir="auto">At this time, without enhancement, possibly in a Switch node and not the selected case.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 7, 2022 at 10:42 AM Joseph D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word"><div class="m_-4219844869386175626WordSection1"><p class="MsoNormal">> The nodes within NodesLibrary don't make any</p><p class="MsoNormal">> effect, they are not part of the scene graph; they are only to be</p><p class="MsoNormal">> reUSEd (referenced) by other parts of the graph.".</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Where in the scenegraph do I keep this list that does not appear in the scenegraph until it is USEd? </p><p class="MsoNormal">Thanks. </p><p class="MsoNormal">Joe</p></div></div><div lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word"><div class="m_-4219844869386175626WordSection1"><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border-style:solid none none;border-top-width:1pt;padding:3pt 0in 0in;border-top-color:rgb(225,225,225)"><p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:gpugroup@gmail.com" target="_blank">GPU Group</a><br><b>Sent: </b>Saturday, March 5, 2022 4:49 PM<br><b>To: </b><a href="mailto:michalis.kambi@gmail.com" target="_blank">Michalis Kamburelis</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org" target="_blank">X3D Public Mailing List (x3d-public@web3d.org)</a><br><b>Subject: </b>Re: [x3d-public] X3DParticleEmitter node inherit from X3DChildNode(rather than X3DNode)</p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Or 'split' the attributes of children class, to expose something like</p><p class="MsoNormal">listable, and/or switchable (can be in Switch case list)?</p><p class="MsoNormal">Doug Sanden</p><p class="MsoNormal">ChildNode :: Switchable, Listable</p><p class="MsoNormal">EmitterNode :: Switchable, Listable</p><p class="MsoNormal">Then</p><p class="MsoNormal">Library { list [</p><p class="MsoNormal">DEF 'E1' EmitterNode {},</p><p class="MsoNormal">DEF 'E2' EmitterNode {},</p><p class="MsoNormal">DEF 'E3' EmitterNode {}</p><p class="MsoNormal">]}</p><p class="MsoNormal">EmitterSystem {</p><p class="MsoNormal">emitter Switch { case 0, list [</p><p class="MsoNormal">USE 'E1',</p><p class="MsoNormal">USE 'E2;,</p><p class="MsoNormal">USE 'E3'</p><p class="MsoNormal">]</p><p class="MsoNormal">}</p><p class="MsoNormal">}</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">On Sat, Mar 5, 2022 at 5:32 PM Michalis Kamburelis</p><p class="MsoNormal"><<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> wrote:</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> Thanks for explaining the rationale, I didn't catch that previously.</p><p class="MsoNormal">> OK, now I understand better -- so we agree that such</p><p class="MsoNormal">> X3DParticleEmitterNode, when being used as root node, without being</p><p class="MsoNormal">> "wrapped" in ParticleSystem, would not do anything, right? I mean it</p><p class="MsoNormal">> would not actually emit any particles, because the</p><p class="MsoNormal">> X3DParticleEmitterNode by itself doesn't have enough information how</p><p class="MsoNormal">> to render the particles.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> It would only be useful for further reUSE.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> In such case, I say we should treat this just like we do with material</p><p class="MsoNormal">> nodes. Or texture nodes. They also cannot be placed at the root node</p><p class="MsoNormal">> of X3D graph, they *have* to be wrapped inside some Shape and</p><p class="MsoNormal">> Appearance.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> If you want to use DEF/USE with materials and textures, you just have</p><p class="MsoNormal">> to consent to the fact that the "first occurrence" is kind of special.</p><p class="MsoNormal">> So you cannot do</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> """</p><p class="MsoNormal">> # INCORRECT EXAMPLE, JUST FOR THE SAKE OF DISCUSSION</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> DEF MyMaterial Material { diffuseColor 1 1 0 }</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> Shape { appearance Appearance { material USE MyMaterial } geometry ... }</p><p class="MsoNormal">> Shape { appearance Appearance { material USE MyMaterial } geometry ... }</p><p class="MsoNormal">> Shape { appearance Appearance { material USE MyMaterial } geometry ... }</p><p class="MsoNormal">> """</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> Instead you have to treat the first occurrence as something special in X3D:</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> """</p><p class="MsoNormal">> # CORRECT EXAMPLE, this is what you actually can do right now</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> Shape { appearance Appearance { material DEF MyMaterial Material {</p><p class="MsoNormal">> diffuseColor 1 1 0 } } geometry ... }</p><p class="MsoNormal">> Shape { appearance Appearance { material USE MyMaterial } geometry ... }</p><p class="MsoNormal">> Shape { appearance Appearance { material USE MyMaterial } geometry ... }</p><p class="MsoNormal">> """</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> This is a conscious design decision in X3D. Some other formats, like</p><p class="MsoNormal">> glTF and Collada, introduce sections in format for a "library of</p><p class="MsoNormal">> materials", "library of textures" to define all the prerequisites</p><p class="MsoNormal">> before you can reference them. X3D, on the other hand, just</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> - allows to employ DEF/USE for *everything* (advantage of the X3D</p><p class="MsoNormal">> design compared to others)</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> - but OTOH the "first occurrence" of a reUSEd node in X3D is special,</p><p class="MsoNormal">> it has to DEFine the node (disadvantage of the X3D design compared to</p><p class="MsoNormal">> others).</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> I don't think we should make special exception for</p><p class="MsoNormal">> X3DParticleEmitterNode. Because, following the rationale, we would</p><p class="MsoNormal">> then need to enable all nodes as root nodes -- e.g. materials and</p><p class="MsoNormal">> textures should also get the same treatment. We often want to reUSE</p><p class="MsoNormal">> them. And this would make a significant confusion in X3D, if we just</p><p class="MsoNormal">> "enable everything as root node".</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> If anything, we could add to X3D a node like "NodesLibrary { }" that</p><p class="MsoNormal">> can have a list of children, and X3DNode (not only X3DChildNode), with</p><p class="MsoNormal">> explicit definition "The nodes within NodesLibrary don't make any</p><p class="MsoNormal">> effect, they are not part of the scene graph; they are only to be</p><p class="MsoNormal">> reUSEd (referenced) by other parts of the graph.". So, If we do</p><p class="MsoNormal">> anything -> we should do it for absolutely all nodes. Particle</p><p class="MsoNormal">> emitters, materials, textures, and many others are "in the same</p><p class="MsoNormal">> situation" here, as I see.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> So for me:</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> 1. Either we go with the simplest resolution, do nothing.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> 2. Or we go for a full solution, that addresses this for all the</p><p class="MsoNormal">> possible nodes, and introduce something like "NodesLibrary". Probably</p><p class="MsoNormal">> not for X3D 4.0, maybe for 4.1 -- first let some browsers try</p><p class="MsoNormal">> implementing it.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> I do not see here a valid case to introduce just a specialized</p><p class="MsoNormal">> exception for particle emitter nodes.</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> Regards,</p><p class="MsoNormal">> Michalis</p><p class="MsoNormal">><u></u> <u></u></p><p class="MsoNormal">> sob., 5 mar 2022 o 22:31 Brutzman, Donald (Don) (CIV)</p><p class="MsoNormal">> <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> napisał(a):</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Thanks for these followups Michalis.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Also: we didn't have time to go over that on the meeting, but I wanted to point out my notes on particle emitter and X3DChildNode in "X3D agenda 3 MAR 2022: announcements, Mantis issues, NurbsSweptSurface NurbsSwungSurface, planning" . In short: X3DParticleEmitterNode should not be X3DChildNode. The current spec is already correct.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > 3. We talked at one point about making particle system emitter an X3DChildNode.   I looked at spec,</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/particleSystems.html" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/particleSystems.html</a></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > , and this would be wrong. The current state of spec is good:  X3DParticleEmitterNode is supposed to be placed within ParticleSystem.emitter field. And ParticleSystem is a X3DShapeNode (which is already X3DChildNode).  So, let's not change anything here. It wouldn't be valid to allow X3DParticleEmitterNode directly inside some grouping nodes.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > The current specification works for particle emitter nodes, fully agreed about that.  Let’s press a just little bit farther please.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > The recent motivation for making X3DParticleEmitter node inherit from X3DChildNode (rather than X3DNode) is to allow these nodes to appear as root nodes in a scene, rather than solely within a ParticleSystem node’s emitter field.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Mantis 836: 04.3.2 Root nodes - Additional nodes need to be allowed as root nodes</p><p class="MsoNormal">> > <a href="https://www.web3d.org/member-only/mantis/view.php?id=836" target="_blank">https://www.web3d.org/member-only/mantis/view.php?id=836</a></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > X3D4 Architecture, 40.3.1 X3DParticleEmitterNode</p><p class="MsoNormal">> > <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/particleSystems.html#X3DParticleEmitterNode" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/particleSystems.html#X3DParticleEmitterNode</a></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > X3D4 Architecture, 4.4.2.3 Interface hierarchy</p><p class="MsoNormal">> > <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/concepts.html#InterfaceHierarchy" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/concepts.html#InterfaceHierarchy</a></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > This might be useful for facilitating DEF/USE re-use of such emitters in a scene with multiple particle emitters.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > That might also be considered an obscure and perhaps unhelpful use case (since emitters are then allowed to appear in many places within a model’s scene graph.  I’m OK with (= can live with) either approach.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > So, staying conservative, especially at this stage of development:  does anyone have a better rationale for making the emitter nodes allowed as child nodes?</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Absent any other reasons for changing we’ll simply keep it unchanged as you’ve indicated.  Thanks for consideration of this small X3D4 model design point.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > all the best, Don</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > --</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > X3D graphics, virtual worlds, Navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > -----Original Message-----</p><p class="MsoNormal">> > From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>></p><p class="MsoNormal">> > Sent: Friday, March 4, 2022 5:09 PM</p><p class="MsoNormal">> > To: GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>></p><p class="MsoNormal">> > Cc: Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>>; X3D Public Mailing List (<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>) <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>></p><p class="MsoNormal">> > Subject: Re: [x3d-public] X3D minutes 3 MAR 2022: announcements, SpotLight default values, NurbsSweptSurface NurbsSwungSurface found in FreeWrl, planning X3DOM WebXR</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Thank you all for the good meeting!</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > […].</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Also: we didn't have time to go over that on the meeting, but I wanted to point out my notes on particle emitter and X3DChildNode in "X3D agenda 3 MAR 2022: announcements, Mantis issues, NurbsSweptSurface NurbsSwungSurface, planning" . In short: X3DParticleEmitterNode should not be X3DChildNode. The current spec is already correct.</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Regards,</p><p class="MsoNormal">> ></p><p class="MsoNormal">> > Michalis</p><p class="MsoNormal">> ></p><p class="MsoNormal">> ></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">_______________________________________________</p><p class="MsoNormal">x3d-public mailing list</p><p class="MsoNormal"><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a></p><p class="MsoNormal"><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></p><p class="MsoNormal"><u></u> <u></u></p></div></div>_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>