<div dir="auto">Joe,  you totally missed the point.   I was referring to the python code.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 25, 2021 at 6:03 PM 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_119915098949502115WordSection1"><p class="MsoNormal"><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/AllenStandShootRifleM24Index.html" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/AllenStandShootRifleM24Index.html</a></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">When I look at this I see maybe a browser-specific problem, that the player is drawing geometries twice. </p><p class="MsoNormal">The first is drawn from the Humanoid skeleton user code and the second set is drawn from the (my word) spurious joints, segments and sites fields, the lists of skeleton items. </p><p class="MsoNormal">Of course the funny thing is that the second set, of course, doesn’t get animated, so the problem is easy to see. This is positive proof that the style of coding using USE in those lists of nodes is bad coding. If these are needed, then all that is necessary is a simple list of the DEF names,  omitting the USE. </p><p class="MsoNormal">Otherwise we need that (my word) silly rule that Hey players, don’t draw the USE - DEFs in the joints, segments, sites fields!!!! </p><p class="MsoNormal">Mush simpler and more in the old spirit to simply MFsptring of quoted either  DEFs used in the skeleton, or, even more enlightend, the  element names.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Thanks and Best,</p></div></div><div lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word"><div class="m_119915098949502115WordSection1"><p class="MsoNormal">Joe</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:yottzumm@gmail.com" target="_blank">John Carlson</a><br><b>Sent: </b>Wednesday, August 25, 2021 1:18 PM<br><b>To: </b><a href="mailto:brutzman@nps.edu" target="_blank">Brutzman, Donald (Don) (CIV)</a>; <a href="mailto:joedwil@earthlink.net" target="_blank">Joseph D Williams</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] Fwd: Next, in Python news...</p></div><p class="MsoNormal"><u></u> <u></u></p><p>Downloaded:</p><p>AllenStandShootRifleM24.py</p><p>From:</p><p><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/AllenStandShootRifleM24Index.html" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/AllenStandShootRifleM24Index.html</a></p><p>Results:</p><p>coderextreme@coderextreme-Kubuntu20:~/Downloads$ python3 AllenStandShootRifleM24.py <br>Traceback (most recent call last):<br>  File "AllenStandShootRifleM24.py", line 21, in <module><br>    from x3d import *<br>AttributeError: module 'x3d' has no attribute 'SFBool'</p><p><u></u> <u></u></p><p>coderextreme@coderextreme-Kubuntu20:~/Downloads$ source ~/X3DJSONLD/src/main/python/venv/bin/activate</p><p><u></u> <u></u></p><p>(venv) coderextreme@coderextreme-Kubuntu20:~/Downloads$ python3 AllenStandShootRifleM24.py Traceback (most recent call last):<br>  File "AllenStandShootRifleM24.py", line 21, in <module><br>    from x3d import *<br>AttributeError: module 'x3d' has no attribute 'SFBool'</p><p><u></u> <u></u></p><p>(venv) coderextreme@coderextreme-Kubuntu20:~/Downloads$ export PYTHONPATH=~/X3DJSONLD/src/main/python/net/x3djsonld/data/</p><p><u></u> <u></u></p><p>(venv) coderextreme@coderextreme-Kubuntu20:~/Downloads$ python3 AllenStandShootRifleM24.py x3d.py package loaded, have fun with X3D Graphics!<br>Traceback (most recent call last):<br>  File "AllenStandShootRifleM24.py", line 44, in <module><br>    ProtoDeclare(name='LOA1_ShootAnimation',<br>  File "/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/x3d.py", line 10239, in __init__<br>    self.ProtoBody = ProtoBody<br>  File "/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/x3d.py", line 10282, in ProtoBody<br>    if not ProtoBody is None and not isinstance(ProtoBody,(ProtoBody,ProtoInstance)):<br>TypeError: isinstance() arg 2 must be a type or tuple of types</p><p><u></u> <u></u></p><p>Look at:</p><p><u></u> <u></u></p><p>File "/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/x3d.py", line 10282, in ProtoBody<br>    if not ProtoBody is None and not isinstance(ProtoBody,(ProtoBody,ProtoInstance)):</p><p><u></u> <u></u></p><p>It seems obvious to me that there's an issue with this line, but I don't really know Python too well!</p><p>Please bring up a virtual environment or otherwise provide better instructions for patching the issue.</p><p><u></u> <u></u></p><p>John</p><div><p class="MsoNormal">On 8/25/21 1:33 AM, John Carlson wrote:<u></u><u></u></p></div><blockquote style="margin-top:5pt;margin-bottom:5pt"><p>This is a repeat.  I only saw ProtoBody setter isinstance error when running python generated from the X3D archives from sourceforge.</p><p>If you like, I can download a python file from the website?  Okay!</p><div><p class="MsoNormal">On 8/24/21 10:41 PM, Brutzman, Donald (Don) (CIV) wrote:<u></u><u></u></p></div><blockquote style="margin-top:5pt;margin-bottom:5pt"><p class="MsoNormal">John, we have a lot of simple prototypes and prototypes with embedded Script nodes in the archives that have all tested OK.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">If your example is that Rubiks’s cube with nested prototypes, that is harder.  We believe the spec is OK but that feature is only occasionally demonstrated as working.  Any model with nested prototypes (ProtoDeclare within ProtoDeclare) can be easily refactored by putting all of the ProtoDeclare blocks first.  Similarly it makes sense to test individual ProtoInstance nodes without feeding them nested ProtoInstance fields.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Looking at existing examples is also good because they have passed through validation.  Step by step.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><ol style="margin-top:0in" start="1" type="1"><li class="m_119915098949502115MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples" target="_blank">https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</a><u></u><u></u></li></ol><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Once again sorry I can’t pursue “deep dive” excursions at this time.  Am working on (a) X3D architecture Mantis editorial issues, (b) DIS protocol implementation open-dis7-java, upgraded DIS support in Xj3D, and just tonight got X3D-Edit building despite issues with a very old laptop.  Step  by step.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal"><b>From:</b> x3d-public <a href="mailto:x3d-public-bounces@web3d.org" target="_blank"><x3d-public-bounces@web3d.org></a> <b>On Behalf Of </b>John Carlson<br><b>Sent:</b> Tuesday, August 24, 2021 7:48 PM<br><b>To:</b> Joseph D Williams <a href="mailto:joedwil@earthlink.net" target="_blank"><joedwil@earthlink.net></a><br><b>Cc:</b> X3D Graphics public mailing list <a href="mailto:x3d-public@web3d.org" target="_blank"><x3d-public@web3d.org></a><br><b>Subject:</b> Re: [x3d-public] Fwd: Next, in Python news...<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><div><div><div><p class="MsoNormal">Yes, you need to ‘’’pip install x3d’’’<u></u><u></u></p></div><div><p class="MsoNormal">before running the provided script in previous message.   See link previously posted by Joe.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Thanks for confirmation of received message.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">The header is the top of the file.   If you don’t want to run my code, convert your own proto xml to python using X3dToPython.xslt.   I don’t have a JSON converter for this test.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">The main purpose is to get proper implementation of Protos in pure python.   I’m guessing it may be a wider problem with x3d.py, because when I patched Protos in my version, there were further issues.   So simply patching Protos won’t fix all the issues.   A full roundtrip XML -> python -> XML needs to be done for the archive.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">I’ve freed up some time to work on python, and I plan to start work on a test suite soon.   It would be good to get past my initial issues with the package.   I can reattempt to modify the x3d package generator, but that doesn’t mean my patches will be available when I am done.    It still needs to go through official channels.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">If you’re fed up with stylesheets, I can offer a solution, but it’s not as elegant or pythonic and uses Java.   As far as I can tell, XSLT is the declarative transformer of choice for XML.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">The main thing I think needs to be done is handle cases where parameters and classes have the same case sensitive name.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">If people want to contribute to x3d.py project, now’s your chance.   I’m fairly sure the python binding needs to be standardized.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">I know pretty much everyone has been covidized.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">After spinning up python, I’ll return to C++ if there’s enough code separated from the standard.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div></div></div><div><div><div><p class="MsoNormal"> <u></u><u></u></p><div><div><p class="MsoNormal">On Tue, Aug 24, 2021 at 8:55 PM Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>> wrote:<u></u><u></u></p></div><blockquote style="border-style:none none none solid;border-left-width:1pt;padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt;border-left-color:rgb(204,204,204)"><div><div><p class="MsoNormal" style="margin-left:76.8pt"> <u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt"># Now available: developmental python x3d.py package on PyPi for import.<u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt">#   This approach greatly simplifies Python X3D deployment and use.<u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt">#   <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpypi.org%2Fproject%2Fx3d&data=04%7C01%7Cbrutzman%40nps.edu%7C72693df0fce44ec3ba3408d96772eba5%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637654565985912019%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Sw68kSJJKNZaBcGFk4Up3toP5CkFxSgiUQASR49Cfos%3D&reserved=0" target="_blank">https://pypi.org/project/x3d</a><u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt"> <u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt">The text got here as attachment<u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt">Joe<u></u><u></u></p></div></div><div><div><p class="MsoNormal" style="margin-left:76.8pt"> <u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt"> <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="margin-left:76.8pt"><b>From: </b><a href="mailto:yottzumm@gmail.com" target="_blank">John Carlson</a><br><b>Sent: </b>Tuesday, August 24, 2021 3:00 PM<br><b>To: </b><a href="mailto:brutzman@nps.edu" target="_blank">Don Brutzman</a>; <a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>[x3d-public] Fwd: Next, in Python news...<u></u><u></u></p></div><p class="MsoNormal" style="margin-left:76.8pt"> <u></u><u></u></p><p class="MsoNormal" style="margin-left:76.8pt">Resend of non-working python code.   No rush,    I don’t want anyone to be surprised.  I do want someone to confirm receipt of email.   I’m guessing things are going to spam?<u></u><u></u></p></div></div></blockquote></div></div></div></div></blockquote></blockquote><p class="MsoNormal" style="margin-right:1in;margin-left:76.8pt"> <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div></blockquote></div></div>