<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><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><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></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><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:gpugroup@gmail.com">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">Michalis Kamburelis</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">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><o:p> </o:p></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><o:p> </o:p></p><p class=MsoNormal>On Sat, Mar 5, 2022 at 5:32 PM Michalis Kamburelis</p><p class=MsoNormal><michalis.kambi@gmail.com> wrote:</p><p class=MsoNormal>><o:p> </o:p></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>><o:p> </o:p></p><p class=MsoNormal>> It would only be useful for further reUSE.</p><p class=MsoNormal>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></p><p class=MsoNormal>> """</p><p class=MsoNormal>> # INCORRECT EXAMPLE, JUST FOR THE SAKE OF DISCUSSION</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> DEF MyMaterial Material { diffuseColor 1 1 0 }</p><p class=MsoNormal>><o:p> </o:p></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>><o:p> </o:p></p><p class=MsoNormal>> Instead you have to treat the first occurrence as something special in X3D:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> """</p><p class=MsoNormal>> # CORRECT EXAMPLE, this is what you actually can do right now</p><p class=MsoNormal>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></p><p class=MsoNormal>> So for me:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> 1. Either we go with the simplest resolution, do nothing.</p><p class=MsoNormal>><o:p> </o:p></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>><o:p> </o:p></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>><o:p> </o:p></p><p class=MsoNormal>> Regards,</p><p class=MsoNormal>> Michalis</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> sob., 5 mar 2022 o 22:31 Brutzman, Donald (Don) (CIV)</p><p class=MsoNormal>> <brutzman@nps.edu> 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>> > https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/particleSystems.html</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>> > https://www.web3d.org/member-only/mantis/view.php?id=836</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>> > https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/particleSystems.html#X3DParticleEmitterNode</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>> > https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/concepts.html#InterfaceHierarchy</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        brutzman@nps.edu</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 https://faculty.nps.edu/brutzman</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 <michalis.kambi@gmail.com></p><p class=MsoNormal>> > Sent: Friday, March 4, 2022 5:09 PM</p><p class=MsoNormal>> > To: GPU Group <gpugroup@gmail.com></p><p class=MsoNormal>> > Cc: Brutzman, Donald (Don) (CIV) <brutzman@nps.edu>; X3D Public Mailing List (x3d-public@web3d.org) <x3d-public@web3d.org></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><o:p> </o:p></p><p class=MsoNormal>_______________________________________________</p><p class=MsoNormal>x3d-public mailing list</p><p class=MsoNormal>x3d-public@web3d.org</p><p class=MsoNormal>http://web3d.org/mailman/listinfo/x3d-public_web3d.org</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>