<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin: 0.1rem 0; line-height: 1.0;"><span style="color: #000000; font-family: 'Times New Roman'; font-size: medium; white-space: normal; float: none; display: inline;">> skinCoord with DEF and skin IFS coord with USE</span></p>
<p style="margin: 0.1rem 0; line-height: 1.0;">   </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">So, this is error. Emit the code and let the browser catch the error(s)</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Btw, are you telling me that someone will write that code as a step to compose a scene?</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  </p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;">
<p>-----Original Message-----<br>From: John Carlson <yottzumm@gmail.com><br>Sent: Oct 16, 2023 11:42 PM<br>To: Joe D Williams <joedwil@earthlink.net><br>Cc: Brutzman Donald (Don) (CIV) <brutzman@nps.edu>, GPU Group <gpugroup@gmail.com>, Peitso Loren (CIV) <lepeitso@nps.edu>, X3D Graphics public mailing list <x3d-public@web3d.org><br>Subject: Re: Thoughts for x3d.py str() calls</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div>Okay, here's another example, Joe, think of each line from a mathematical proof or recipe or a good mystery, where you combine things from previous steps.  The "VRML" step is putting everything in the oven and baking it.  The "print" is when you take it out of the oven.  See incorrect results further below.  What's wrong with the recipe?  How can I fix this for skin IFS coord and skinCoord? When they aren't in the "correct" order in x3d.py output?  Say someone specifies skinCoord with DEF and skin IFS coord with USE, and another person specifies skin IFS coord with DEF then specifies skinCoord with USE. How's the poor programmer supposed to figure that out when they don't have XML or VRML or even python? How is the IFS code related to the skinCoord code?  I have an idea! They can use the DEF/USE to look up the node.  Terrific!  But how do I set a USE field without blowing the DEF away (see below VRML).?  This is what we're asking x3d.py to handle.  We're not asking it to create a cache of DEFs mapped to nodes, and cleaning up after calling VRML/XML/JSON/HTML methods, but that's the only thing I can think of right now. Other solutions are welcome.  I've tried ordering fields like skeleton/joints, but then skin/skinCoord IFS cropped up.  I got so annoyed that I just patched x3d.py without patching the stylesheet.  I agree this could be fixed by ordering fields in the stylesheet, but that's a lousy patch, and may foul up other people besides the Blender exporter.  We want a solution that works for everyone.  HTML has similar problems with id fields, this is nothing new.</div>
<div> </div>
<div>from x3d import *</div>
<div> </div>
<div>trans = Transform(DEF='C')</div>
<div>grpa = Group(DEF='A', children=[trans])</div>
<div>trans.USE = 'C'</div>
<div>grpb = Group(DEF='B', children=[trans])</div>
<div>scene = Scene(children=[grpa, grpb])</div>
<div>x3d = X3D(Scene=scene)</div>
<div>blob = x3d.VRML()</div>
<div>print(blob)</div>
<div> </div>
<div>====================================================================</div>
<div>
<div>#X3D V4.0 utf8</div>
<div>#X3D-to-ClassicVRML serialization autogenerated by X3DPSAIL x3d.py</div>
<div> </div>
<div>PROFILE Full</div>
<div>DEF A Group {</div>
<div>      children [</div>
<div>        USE C</div>
<div>      ]</div>
<div> </div>
<div>    }</div>
<div>    DEF B Group {</div>
<div>      children [</div>
<div>        USE C</div>
<div>      ]</div>
<div> </div>
<div>    }</div>
</div>
<div>==============================================================================</div>
<div>I have an idea!  We won't even set USE! Let's try that!</div>
<div> </div>
<div>
<div>from x3d import *</div>
<div> </div>
<div>trans = Transform(DEF='C')</div>
<div>grpa = Group(DEF='A', children=[trans])</div>
<div>grpb = Group(DEF='B', children=[trans])</div>
<div>scene = Scene(children=[grpa, grpb])</div>
<div>x3d = X3D(Scene=scene)</div>
<div>blob = x3d.VRML()</div>
<div>print(blob)</div>
</div>
<div> </div>
<div>==============================================================================</div>
<div> </div>
<div>Output:</div>
<div> </div>
<div>
<div>#X3D V4.0 utf8</div>
<div>#X3D-to-ClassicVRML serialization autogenerated by X3DPSAIL x3d.py</div>
<div> </div>
<div>PROFILE Full</div>
<div>DEF A Group {</div>
<div>      children [</div>
<div>        DEF C Transform {</div>
<div>        }</div>
<div> </div>
<div>      ]</div>
<div> </div>
<div>    }</div>
<div>    DEF B Group {</div>
<div>      children [</div>
<div>        DEF C Transform {</div>
<div>        }</div>
<div> </div>
<div>      ]</div>
<div> </div>
<div>    }</div>
</div>
<div> </div>
<div>Foul words emitted!</div>
<div>===============================================================================</div>
<div>What we would like have happened is:</div>
<div> </div>
<div>
<div>
<div>#X3D V4.0 utf8</div>
<div>#X3D-to-ClassicVRML serialization autogenerated by X3DPSAIL x3d.py</div>
<div> </div>
<div>PROFILE Full</div>
<div>DEF A Group {</div>
<div>      children [</div>
<div>        DEF C Transform {</div>
<div>        }</div>
<div> </div>
<div>      ]</div>
<div> </div>
<div>    }</div>
<div>    DEF B Group {</div>
<div>      children [</div>
<div>        USE C</div>
<div>      ]</div>
<div> </div>
<div>    }</div>
</div>
<div> </div>
<div>Or something close to that (I may be missing "Transform' IDK).  I believe everyone would be happy with this, but AFAIK, it requires patching x3d.py, which I think Don has admitted.  The issue is, we want someone excited about XSLT, or has the tools to make it less painful.</div>
<div> </div>
<div>How do we get someone the right tools to maintain the XSLT?   What if we translated from XSLT to VRML and back to XSLT (just kidding!).</div>
<div> </div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>