<html xmlns:v="urn:schemas-microsoft-com:vml" 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:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
h4
{mso-style-priority:9;
mso-style-link:"Heading 4 Char";
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
font-weight:bold;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
p.m-8883375741633603692m-6150927486003065360msolistparagraph, li.m-8883375741633603692m-6150927486003065360msolistparagraph, div.m-8883375741633603692m-6150927486003065360msolistparagraph
{mso-style-name:m_-8883375741633603692m-6150927486003065360msolistparagraph;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-priority:9;
mso-style-link:"Heading 4";
font-family:"Calibri Light",sans-serif;
color:#2F5496;
font-style:italic;}
span.EmailStyle22
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1275288;
mso-list-template-ids:650568262;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1
{mso-list-id:15084455;
mso-list-type:hybrid;
mso-list-template-ids:571094622 -1527081058 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l2
{mso-list-id:336999007;
mso-list-template-ids:686196194;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3
{mso-list-id:477652724;
mso-list-template-ids:-689286754;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4
{mso-list-id:727536693;
mso-list-template-ids:-1873672246;}
@list l5
{mso-list-id:1251354571;
mso-list-template-ids:-1498393112;}
@list l5:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6
{mso-list-id:1374965666;
mso-list-template-ids:-1996315246;}
@list l6:level1
{mso-level-start-at:2;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7
{mso-list-id:1540630045;
mso-list-template-ids:-1185357440;}
@list l7:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8
{mso-list-id:1600141657;
mso-list-template-ids:-1309765092;}
@list l8:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l8:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9
{mso-list-id:1762481450;
mso-list-template-ids:-375616860;}
@list l9:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l9:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l10
{mso-list-id:1825928363;
mso-list-template-ids:397031220;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Sorry John but am not seeing problems that are worth solving in the way you are stating them.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think that when there is a DEF/USE ordering problem in a model, then proper correction is up to the author of the model. Simply swapping the two nodes seems plausible, but I can think of plenty of cases where that naïve approach might lead to unintended consequences and additional errors. Therefore reporting the USE-found-before-DEF error to the author is the best course of action for a widely usable library.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Similarly, I can see no reason to override the built-in str() function in Python. Changing the behavior of a built-in language type is a sure path towards end-user grief.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo11'>https://docs.python.org/3/library/string.html<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo11'>https://docs.python.org/3/library/stdtypes.html?highlight=str()<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo11'>https://docs.python.org/3/library/stdtypes.html?highlight=str()#str<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You will notice in x3d.py that utility methods have clearly defined and non-overlapping names like <span style='font-size:9.0pt;font-family:"Courier New"'>SFFloat(value), isValidSFFloat(value), assertValidSFFloat(value), XML(), JSON(), HTML5(), VRML()</span>, etc. This tries to align with common Python idioms, be clearly readable, and support creation of “Pythonic” programs using X3D.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As ever, the best path towards a general improvement first goes through a few simple examples that do not depend on other library changes.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Hope this helps you focus on productive goals. Good luck with your efforts.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>Don Brutzman Naval Postgraduate School, Code USW/Br brutzman@nps.edu<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> John Carlson <yottzumm@gmail.com> <br><b>Sent:</b> Tuesday, October 24, 2023 7:02 AM<br><b>To:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu><br><b>Cc:</b> X3D Graphics public mailing list <x3d-public@web3d.org><br><b>Subject:</b> Re: [x3d-public] renamed: HAnimHumanoid scale is required to be non-negative, USE outputs out of order<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>I’m getting traction on DEF/USE vs field ordering in x3d.py, hopefully I’ll have a partial solution solution soon. I’m not sure what the final solution is. I have removed my sorting changes in the short term, in order to test DEF/USE adequately.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>But overriding or partially overriding the str() function remains a priority that I’m not really to tackle yet. Animation in the Blender is higher priority.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Those are my highest priorities.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>On the second tier, parsing VRML in a variety of languages remains an interest, as does converting JSON to Python.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Tue, Oct 24, 2023 at 6:58 AM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>After header information is defined, typically the X3D Architecture does not specify any ordering of nodes and statements, aside from requirement that DEF node definitions appear before USE node references.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>XML Schema is able to capture these relationships most of the time. Occasionally some ordering has to be required due to XML Schema requirements for defining content models, which can be quite verbose. For example, sometimes metadata nodes must come first. A lot of work on deterministic content models has been performed.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>X3DUOM does not indicated any ordering, thus matching X3D Architecture.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>When XML Schema can’t effectively meet any-order requirements, I’ve tried to add X3D Schematron rules to detect problems and report recommended remedies. A few tooltip warnings indicate such cases as well.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>X3D is a big language and so special cases can occur. Referring to the normative X3D Architecture and informative X3D Tooltips can usually sort out most problems.<o:p></o:p></p></div></div><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>-- </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>Don Brutzman Naval Postgraduate School, Code USW/Br <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span><o:p></o:p></p></div><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b>From:</b> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> <br><b>Sent:</b> Monday, October 23, 2023 8:32 AM<br><b>To:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</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] renamed: HAnimHumanoid scale is required to be non-negative, USE outputs out of order<o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Don, <o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I just found out that XML Schema things can be ordered, like component, unit and meta statements. Does X3DUOM reflect this, and what can we do if not?<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thanks!<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>John<o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On Tue, Oct 17, 2023 at 8:53 AM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I believe that the following email is trying to report that <o:p></o:p></p><ol start=1 type=1><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l10 level1 lfo1'><span style='color:black;background:yellow'>HAnimHumanoid with a non-positive scale is being reported as invalid.</span><o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l10 level1 lfo1'><span style='color:black;background:yellow'>HAnimHumanoid USE nodes are getting output out of order.</span><o:p></o:p></li></ol><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Let’s look further at whether those are the problem issues.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><ol start=1 type=1><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l4 level1 lfo2'>Looking at X3D Architecture Specification,<o:p></o:p></li></ol><ul style='margin-top:0in' type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='color:black;margin-top:10.5pt;mso-list:l3 level1 lfo3'><b><span style='font-size:14.5pt;font-family:"Verdana",sans-serif'>26.3.2 HAnimHumanoid</span></b><o:p></o:p></li></ul><p class=m-8883375741633603692m-6150927486003065360msolistparagraph><span style='font-size:8.5pt;font-family:Symbol;color:black'>·</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif;color:black'> </span><span style='font-size:8.5pt;font-family:"Courier New";color:black'>HAnimHumanoid : X3DChildNode, X3DBoundedObject {</span><o:p></o:p></p><p class=m-8883375741633603692m-6150927486003065360msolistparagraph><span style='font-size:8.5pt;font-family:Symbol;color:black'>·</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif;color:black'> </span><span style='font-size:8.5pt;font-family:"Courier New";color:black'> […]</span><o:p></o:p></p><p class=m-8883375741633603692m-6150927486003065360msolistparagraph><span style='font-size:8.5pt;font-family:Symbol;color:black'>·</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif;color:black'> </span><span style='font-size:8.5pt;font-family:"Courier New";color:black'> SFVec3f [in,out] scale 1 1 1 (0,∞)</span><o:p></o:p></p><p class=m-8883375741633603692m-6150927486003065360msolistparagraph><span style='font-size:8.5pt;font-family:"Courier New";color:black'> </span><o:p></o:p></p><p class=m-8883375741633603692m-6150927486003065360msolistparagraph><span style='font-family:Symbol;color:black'>·</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif;color:black'> </span><span style='color:black'><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/hanim.html#HAnimHumanoid" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/hanim.html#HAnimHumanoid</a></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Indicates that is the specified bounds for validity.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>So the reported error message is precisely correct.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>If anyone is wondering “how did x3d.py know that” you can find the same information in X3D Unified Object Model (X3DUOM), which is used to autogenerate x3d.py library:<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'>class Transform(_X3DGroupingNode):</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> def scale(self, scale):</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> if scale is None:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> scale = (1, 1, 1) # default</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> assertValidSFVec3f(scale)</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> self.__scale = scale</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><ul type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l2 level1 lfo4'>X3DUOM 4.0<o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l2 level1 lfo4'><a href="https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml" target="_blank">https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml</a><o:p></o:p></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'><ConcreteNode name="HAnimHumanoid"></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> <field name="scale"</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> type="SFVec3f"</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> accessType="inputOutput"</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> default="1 1 1"</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> minExclusive="0"</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'> description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation."/></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>which in turn is built from X3D 4.0 XML Schema, which would similarly flag this invalid scale value.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><ul type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l5 level1 lfo5'>X3D Specifications: Schema and DOCTYPE Validation<o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l5 level1 lfo5'><a href="https://www.web3d.org/specifications" target="_blank">https://www.web3d.org/specifications</a><o:p></o:p></li></ul><h4 style='margin-left:.25in;background:#CCFFFF'><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'> Recommended Validation and Implementation Assets</span><o:p></o:p></h4><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.75in;background:#CCFFFF'><span style='font-size:10.0pt;font-family:Symbol;color:black'>·</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif;color:black'> </span><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>X3D XML Schema <a href="https://www.web3d.org/specifications/x3d-4.0.xsd" target="_blank">x3d-4.0.xsd</a> and <a href="https://www.web3d.org/specifications/X3dSchemaDocumentation4.0.html" target="_blank">documentation</a> (latest)</span><o:p></o:p></p><ul type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l0 level1 lfo6'>HAnimHumanoid documentation<o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l0 level1 lfo6'><a href="https://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_HAnimHumanoid.html#Link147" target="_blank">https://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_HAnimHumanoid.html#Link147</a><o:p></o:p></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-indent:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>scale SFVec3f 1 1 1 appinfo <xs:minExclusive value="0"/></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Further informal guidance plus reference links can be found in X3D Tooltips:<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><ul type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l7 level1 lfo7'>X3D Tooltips 4.0, HAnimHumanoid scale<o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l7 level1 lfo7'><a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid.scale" target="_blank">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid.scale</a><o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l7 level1 lfo7'>scale accessType inputOutput, type SFVec3f CDATA "1 1 1"]<o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l7 level1 lfo7'>Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation.<o:p></o:p></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Just added, for consistency:<o:p></o:p></p><ul type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l8 level1 lfo8'>Warning: HAnimHumanoid scale values must be positive.<o:p></o:p></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>So many paths to get to the same authoritative answer from X3D 4.0 Architecture specification.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><ol start=2 type=1><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l6 level1 lfo9'>Regarding error reports that HAnimHumanoid child USE nodes are out of order, recommend checking your output text files.<o:p></o:p></li></ol><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>If that is indeed the case, then cut and paste to move them to a later position in the file.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Further scrutiny of the HAnimHumanoid documentation (linked above) shows that the X3D XML Schema is indeed order sensitive regarding outputs as well. So once again your diagnostics for a complex model are consistent, even though correspondingly complex.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I have added that issue to the TODO list for X3DPSAIL.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><ul type=disc><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l9 level1 lfo10'>X3D Python Scene Access Interface Library (X3DPSAIL)<o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l9 level1 lfo10'><a href="https://www.web3d.org/x3d/stylesheets/python/python.html#TODO" target="_blank">https://www.web3d.org/x3d/stylesheets/python/python.html#TODO</a><o:p></o:p></li><li class=m-8883375741633603692m-6150927486003065360msolistparagraph style='mso-list:l9 level1 lfo10'>TODO: When converting to other forms, check ordering of output for USE nodes within HAnimHumanoid.<o:p></o:p></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Wishing best progress with all X3D modeling efforts – the only bad error is the one you don’t know about.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Have fun with X3D – or else! 8)<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>-- </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>Don Brutzman Naval Postgraduate School, Code USW/Br <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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> Monday, October 16, 2023 10:52 PM<br><b>To:</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] Thoughts for x3d.py str() calls ("real world" tests of x3d.py output)<o:p></o:p></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I've made suggestions to improve issues with containerField XML output, and they were roundly dismissed. x3d.py has not had to face real world problems, especially with HAnim, which is why this whole discussion came up. Do you want fewer digits in numbers or not? Do you see any x3d.py HAnim tests being run? Let me try one:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/Lily.py" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/Lily.py</a><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>So try this example IN "REAL" life:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>$ py !$<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>py Lily.py<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>x3d.py package 4.0.64.4 loaded, have fun with X3D Graphics!<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Traceback (most recent call last):<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> File "C:¥Users¥john¥X3DJSONLD¥blend¥Lily.py", line 69, in <module><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> HAnimHumanoid(DEF='Lily',scale=(1,1,-1),version='2.0',<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> File "C:¥Users¥john¥X3DJSONLD¥blend¥x3d.py", line 45576, in __init__<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> self.scale = scale<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> ^^^^^^^^^^<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> File "C:¥Users¥john¥X3DJSONLD¥blend¥x3d.py", line 45751, in scale<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> assertPositive('scale', scale)<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> File "C:¥Users¥john¥X3DJSONLD¥blend¥x3d.py", line 1906, in assertPositive<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> assert isPositive(value), str(fieldName) + '=' + str(value) + ' fails assertPositive requirements: value(s) must be greater than or equal to zero'<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>AssertionError: scale=(1, 1, -1) fails assertPositive requirements: value(s) must be greater than or equal to zero<o:p></o:p></p></div></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I didn't even get CLOSE to XML output!<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Admittedly, this example may be cherry picked, so let's try another:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.py" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.py</a><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>$ py JoeKick.py<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>x3d.py package 4.0.64.4 loaded, have fun with X3D Graphics!<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Self-test diagnostics for JoeKick.py:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>meta information, TODO: Record information about skin coordinates (found in comment at end of scene) as a structured MetadataSet containing MetadataString nodes<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>*** Python-to-XML well-formed XML document test failed.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> x3dSchemaUrl=<a href="https://www.web3d.org/specifications/x3d-4.0.xsd" target="_blank">https://www.web3d.org/specifications/x3d-4.0.xsd</a><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> XMLSchemaParseError cannot import namespace '<a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23&data=05%7C01%7Cbrutzman%40nps.edu%7C65aa3789a69140e48d6f08dbd499c714%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638337529188247124%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=kl4eagb2gs%2Fh7c27HtBu%2BTCkX6ZDM9PQjoVyutQ4q%2BI%3D&reserved=0" target="_blank">http://www.w3.org/2000/09/xmldsig#</a>': Entities are forbidden (entity_name='dsig')<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Python-to-VRML export of VRML output successful<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Python-to-JSON export of JSON output successful (under development)<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>python JoeKick.py load and self-test diagnostics complete.<o:p></o:p></p></div></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>That looks good, let's try tovrmlx3d:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Uncomment this like in JoeKick.py:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>print(newModelXML) # diagnostic<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>$ py JoeKick.py > JoeKick.x3d<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[ edit all the stuff that for some reason, x3d.py writes to standard output. ]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>$ ‾/Downloads/view3dscene-4.3.0-win64-x86_64/view3dscene/tovrmlx3d.exe --validate JoeKick.x3d<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Unknown X3D field name (indicated by containerField value) "children" by node "HAnimJoint" inside node "HAnimHumanoid"<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_SkinCoord" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_humanoid_root" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_sacroiliac" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_skullbase" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_temporomandibular" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc6" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vc7" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vl1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vl2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vl3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vl4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vl5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt10" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt11" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt12" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt6" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt7" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt8" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_vt9" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_acromioclavicular" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_acromioclavicular" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_distal_interphalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_distal_interphalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_distal_interphalangeal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_distal_interphalangeal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_distal_interphalangeal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_distal_interphalangeal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_distal_interphalangeal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_distal_interphalangeal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_interphalangeal_1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_interphalangeal_1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_proximal_interphalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_proximal_interphalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_proximal_interphalangeal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_proximal_interphalangeal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_proximal_interphalangeal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_proximal_interphalangeal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpal_proximal_interphalangeal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpal_proximal_interphalangeal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpometacarpal_1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpometacarpal_1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpometacarpal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpometacarpal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpometacarpal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpometacarpal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpometacarpal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpometacarpal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_carpometacarpal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_carpometacarpal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_elbow" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_elbow" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_eyeball_joint" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_eyeball_joint" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_eyebrow_joint" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_eyebrow_joint" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_eyelid_joint" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_eyelid_joint" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_hip" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_hip" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_knee" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_knee" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_metacarpophalangeal_1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_metacarpophalangeal_1" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_metacarpophalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_metacarpophalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_metacarpophalangeal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_metacarpophalangeal_3" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_metacarpophalangeal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_metacarpophalangeal_4" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_metacarpophalangeal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_metacarpophalangeal_5" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_metatarsophalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_metatarsophalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_radiocarpal" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_radiocarpal" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_shoulder" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_shoulder" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_sternoclavicular" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_sternoclavicular" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_talocrural" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_talocrural" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_tarsal_distal_interphalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_tarsal_distal_interphalangeal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_l_tarsometatarsal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_r_tarsometatarsal_2" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_sacrum" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "Joe_RootFront_view" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Unknown X3D field name (indicated by containerField value) "children" by node "Shape" inside node "HAnimHumanoid"<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_humanoid_root" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_humanoid_root" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_sacroiliac" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_hip" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_knee" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_talocrural" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_tarsometatarsal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_metatarsophalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_tarsal_distal_interphalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_hip" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_knee" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_talocrural" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_tarsometatarsal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_metatarsophalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_tarsal_distal_interphalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vl5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vl4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vl3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vl2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vl1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt12" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt11" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt10" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt9" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt8" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt7" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt6" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vt1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc7" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc6" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_vc1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_skullbase" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_eyelid_joint" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_eyeball_joint" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_eyebrow_joint" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_eyelid_joint" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_eyeball_joint" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_eyebrow_joint" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_temporomandibular" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_sternoclavicular" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_acromioclavicular" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_shoulder" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_elbow" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_radiocarpal" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpometacarpal_1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_metacarpophalangeal_1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_interphalangeal_1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpometacarpal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_metacarpophalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_proximal_interphalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_distal_interphalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpometacarpal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_metacarpophalangeal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_proximal_interphalangeal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_distal_interphalangeal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpometacarpal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_metacarpophalangeal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_proximal_interphalangeal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_distal_interphalangeal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpometacarpal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_metacarpophalangeal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_proximal_interphalangeal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_l_carpal_distal_interphalangeal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_sternoclavicular" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_acromioclavicular" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_shoulder" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_elbow" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_radiocarpal" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpometacarpal_1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_metacarpophalangeal_1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_interphalangeal_1" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpometacarpal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_metacarpophalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_proximal_interphalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_distal_interphalangeal_2" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpometacarpal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_metacarpophalangeal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_proximal_interphalangeal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_distal_interphalangeal_3" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpometacarpal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_metacarpophalangeal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_proximal_interphalangeal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_distal_interphalangeal_4" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpometacarpal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_metacarpophalangeal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_proximal_interphalangeal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_r_carpal_distal_interphalangeal_5" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "Joe_skull_tip_raiser_action" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Route destination node name "KickTextureTransform" not found<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "JoeSkinImageTexture" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>tovrmlx3d: Warning: X3D: Incorrect USE clause: node name "AxisLinesShape" undefined<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Exception "Exception":<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Validation failed (consult the warnings above), exiting with non-zero status<o:p></o:p></p></div></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I know that Don loves tovrmlx3d. Why not try it on X3D XML HAnim output from x3d.py? Oh wait, he loves X3D-Edit. Let me try that too:<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>--------- X3D Validator checks commenced for JoeKick.x3d ---------<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing well-formed XML check...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Checking file:/C:/Users/john/X3DJSONLD/blend/JoeKick.x3d...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Well-formed XML check: pass<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing DOCTYPE check...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[X3dDoctypeChecker] success: valid XML declaration found.[X3dDoctypeChecker] success: final X3D 4.0 DOCTYPE found.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing DTD validation...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Checking file:/C:/Users/john/X3DJSONLD/blend/JoeKick.x3d...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Attribute "level" is required and must be specified for element type "component".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>The content of element type "HAnimHumanoid" must match "(IS?,(MetadataBoolean|MetadataDouble|MetadataFloat|MetadataInteger|MetadataSet|MetadataString|ProtoInstance)?,(HAnimJoint*,HAnimSegment*,HAnimSite*,HAnimMotion*,(Shape|Group|LOD|Switch|Transform|IndexedFaceSet|IndexedLineSet|IndexedQuadSet|IndexedTriangleFanSet|IndexedTriangleSet|IndexedTriangleStripSet)?,HAnimMotion*,(Coordinate|CoordinateDouble)*,Normal*,ProtoInstance*)*)".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>XML DTD validation: fail!<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing X3D schema validation...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Checking file:/C:/Users/john/X3DJSONLD/blend/JoeKick.x3d...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Referenced entity at "<a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2FTR%2F2002%2FREC-xmldsig-core-20020212%2Fxmldsig-core-schema.xsd&data=05%7C01%7Cbrutzman%40nps.edu%7C65aa3789a69140e48d6f08dbd499c714%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638337529188403391%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=JE7aGE2NAP0VasyhAmxA5hFF90RcagzfS7w2CKMW4EU%3D&reserved=0" target="_blank">http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd</a>".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Referenced entity at "<a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema.dtd&data=05%7C01%7Cbrutzman%40nps.edu%7C65aa3789a69140e48d6f08dbd499c714%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638337529188403391%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=fcv4JjTZafix6%2F%2BFC%2BYPm9QNLsEJYOF9r6Cd8uZGY3U%3D&reserved=0" target="_blank">http://www.w3.org/2001/XMLSchema.dtd</a>".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Referenced entity at "<a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2001%2Fdatatypes.dtd&data=05%7C01%7Cbrutzman%40nps.edu%7C65aa3789a69140e48d6f08dbd499c714%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638337529188403391%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=mgJGGHJ%2BcmaUkewwCFvZS5GnOayPydFoOTti0HSHJFw%3D&reserved=0" target="_blank">http://www.w3.org/2001/datatypes.dtd</a>".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Attribute "level" is required and must be specified for element type "component".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>cvc-complex-type.4: Attribute 'level' must appear on element 'component'.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>cvc-complex-type.4: Attribute 'level' must appear on element 'component'.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>cvc-complex-type.2.4.a: Invalid content was found starting with element 'MetadataSet'. One of '{HAnimJoint, HAnimSegment, HAnimSite, HAnimMotion, Shape, Group, LOD, Switch, Transform, IndexedFaceSet, IndexedLineSet, IndexedQuadSet, IndexedTriangleFanSet, IndexedTriangleSet, IndexedTriangleStripSet, Coordinate, CoordinateDouble, Normal, ProtoInstance}' is expected.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>The content of element type "HAnimHumanoid" must match "(IS?,(MetadataBoolean|MetadataDouble|MetadataFloat|MetadataInteger|MetadataSet|MetadataString|ProtoInstance)?,(HAnimJoint*,HAnimSegment*,HAnimSite*,HAnimMotion*,(Shape|Group|LOD|Switch|Transform|IndexedFaceSet|IndexedLineSet|IndexedQuadSet|IndexedTriangleFanSet|IndexedTriangleSet|IndexedTriangleStripSet)?,HAnimMotion*,(Coordinate|CoordinateDouble)*,Normal*,ProtoInstance*)*)".<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>XML schema validation: fail!<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing X3D regular expression (regex) values check...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>X3D regex check: complete<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing X3dToX3dvClassicVrmlEncoding.xslt conversion check...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimHumanoid node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimHumanoid node DEF='Joe_Kick']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_humanoid_root']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimSegment node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimSegment node DEF='Joe_sacrum']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimSite node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimSite node DEF='Joe_RootFront_view']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_sacroiliac']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_l_hip']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_l_knee']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_l_talocrural']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_l_tarsometatarsal_2']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_l_metatarsophalangeal_2']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimJoint node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimJoint node DEF='Joe_l_tarsal_distal_interphalangeal_2']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[hint] Complete functionality for HAnimDisplacer node may require support by <X3D profile='Full'> or else <component name='HAnim' level='1'/> (instead of declared level='') [HAnimDisplacer node DEF='Joe_skull_tip_raiser_action']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[error] illegal level value: <component name='HAnim' level=''/> (allowed range of values: 1..5)<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>[error] node Shape has illegal containerField='children' (allowed value: skin) [node Shape, parent HAnimHumanoid DEF='Joe_Kick' DEF='Joe_Shape']<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Performing X3D Schematron check...<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>X3D version 4.0 is approved by Web3D Consortium and focused on interoperability with HTML5, glTF2.0 Physically Based Rendering (PBR) and Web Audio API, undergoing final administrative review by ISO in 2023. [/X3D, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><component name='HAnim' level=''/> is required to have a value for level field [/X3D/head/component, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><meta name='TODO' content='Record information about skin coordinates (found in comment at end of scene) as a structured MetadataSet containing MetadataString nodes'/> [/X3D/head/meta[7], diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> version='2.0' with X3D version='4.0' [/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>< <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> HAnimHumanoid DEF='Joe_Kick' name='Kick'/> contains <HAnimJoint DEF="Joe_humanoid_root" name="humanoid_root" containerField="children"/> should be containerField='skeleton' [/X3D/Scene/Group[1]/HAnimHumanoid, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> cannot contain any containerField='children' nodes: <HAnimJoint DEF="Joe_humanoid_root" name="humanoid_root" containerField="children"/> [/X3D/Scene/Group[1]/HAnimHumanoid, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> contains <Coordinate DEF='' containerField='coord'/> node with incorrect containerField value, must be containerField='skinCoord' [/X3D/Scene/Group[1]/HAnimHumanoid, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>==================================================================================================================== [/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(HAnimJoint) within skeleton hierarchy = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(HAnimSegment) within skeleton hierarchy = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(HAnimSite) within HAnimHumanoid = 1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(HAnimSite//Viewpoint) within skeleton hierarchy = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(HAnimDisplacer) within skeleton hierarchy = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimJoint USE='*' containerField = 'joints'/>) = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimSegment USE='*' containerField = 'segments'/>) = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimSite USE='*' containerField = 'sites'/>) = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimSite DEF='*' name ends with '_view'/>) = 0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimHumanoid DEF='Joe_Kick' name='Kick'/> has mismatched HAnimSite node counts, 1 within skeleton hierarchy and 0 USE nodes in sites field [/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>==================================================================================================================== [/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_humanoid_root'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_humanoid_root' name='humanoid_root'/> with parent HAnimHumanoid needs containerField='skeleton' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_humanoid_root' name='humanoid_root'/> has incoming <ROUTE toNode='Joe_humanoid_root' toField='translation'/> to modify the translation field, which ordinarily is not modified (instead the center field controls HAnimJoint position) [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimSegment DEF='Joe_sacrum'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimSegment, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimSite DEF='Joe_RootFront_view'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimSegment/HAnimSite, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimSite DEF='Joe_RootFront_view' name='RootFront_view'/> is not a recognized name for HAnim2 HAnimSite [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimSegment/HAnimSite, info]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_sacroiliac'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_hip'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_knee'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_talocrural'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_tarsometatarsal_2'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_tarsometatarsal_2' name='l_tarsometatarsal_2'/> has parent HAnimJoint name='l_talocrural' rather than expected parent name='l_cuneonavicular_2', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_metatarsophalangeal_2'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_tarsal_distal_interphalangeal_2'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_tarsal_distal_interphalangeal_2' name='l_tarsal_distal_interphalangeal_2'/> has parent HAnimJoint name='l_metatarsophalangeal_2' rather than expected parent name='l_tarsal_proximal_interphalangeal_2', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_tarsometatarsal_2' name='r_tarsometatarsal_2'/> has parent HAnimJoint name='r_talocrural' rather than expected parent name='r_cuneonavicular_2', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_tarsal_distal_interphalangeal_2' name='r_tarsal_distal_interphalangeal_2'/> has parent HAnimJoint name='r_metatarsophalangeal_2' rather than expected parent name='r_tarsal_proximal_interphalangeal_2', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimDisplacer DEF='Joe_skull_tip_raiser_action'/> requires at least <X3D profile='Immersive'/> <component name='HAnim' level='1'/> or <X3D profile='Full'/> [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimDisplacer, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_acromioclavicular'/> name field is required [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_acromioclavicular' name=''/> is not a recognized name for HAnim2 HAnimJoint [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_sternoclavicular' name='l_acromioclavicular'/> DEF value does not contain correctly modified version of name value (for example, DEF='myPrefix_nameValue' e.g. DEF='myPrefix_l_acromioclavicular') - see HAnim section C.2 Humanoid, VRML Binding [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_sternoclavicular' name='l_acromioclavicular'/> has parent HAnimJoint name='' rather than expected parent name='l_sternoclavicular', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_carpometacarpal_1' name='l_carpometacarpal_1'/> has parent HAnimJoint name='l_radiocarpal' rather than expected parent name='l_midcarpal_1', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[1], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_carpometacarpal_2' name='l_carpometacarpal_2'/> has parent HAnimJoint name='l_radiocarpal' rather than expected parent name='l_midcarpal_2', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_carpometacarpal_3' name='l_carpometacarpal_3'/> has parent HAnimJoint name='l_radiocarpal' rather than expected parent name='l_midcarpal_3', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_carpometacarpal_4' name='l_carpometacarpal_4'/> has parent HAnimJoint name='l_radiocarpal' rather than expected parent name='l_midcarpal_4_5', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[4], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_l_carpometacarpal_5' name='l_carpometacarpal_5'/> has parent HAnimJoint name='l_radiocarpal' rather than expected parent name='l_midcarpal_4_5', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[5], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_carpometacarpal_1' name='r_carpometacarpal_1'/> has parent HAnimJoint name='r_radiocarpal' rather than expected parent name='r_midcarpal_1', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[1], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_carpometacarpal_2' name='r_carpometacarpal_2'/> has parent HAnimJoint name='r_radiocarpal' rather than expected parent name='r_midcarpal_2', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_carpometacarpal_3' name='r_carpometacarpal_3'/> has parent HAnimJoint name='r_radiocarpal' rather than expected parent name='r_midcarpal_3', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_carpometacarpal_4' name='r_carpometacarpal_4'/> has parent HAnimJoint name='r_radiocarpal' rather than expected parent name='r_midcarpal_4_5', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[4], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint DEF='Joe_r_carpometacarpal_5' name='r_carpometacarpal_5'/> has parent HAnimJoint name='r_radiocarpal' rather than expected parent name='r_midcarpal_4_5', recommend checking model [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[5], warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><MetadataSet DEF='' USE='' name='warnings'/> default containerField='value' is only allowed when parent node is MetadataSet, need to explicitly define containerField='metadata' in X3D4 models [/X3D/Scene/Group[1]/HAnimHumanoid/MetadataSet, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>HAnimHumanoid/<MetadataSet DEF='' USE='' name='warnings'/> contains containerField='value' which instead needs to be containerField='metadata' [/X3D/Scene/Group[1]/HAnimHumanoid/MetadataSet, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><Coordinate USE='Joe_SkinCoord'/> found USE node that precedes matching DEF node, count(following::*[@DEF=$USE])=1[/X3D/Scene/Group[1]/HAnimHumanoid/Coordinate, error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><Coordinate DEF=''/> with parent HAnimHumanoid must have @containerField='skinCoord' or @containerField='skinBindingCoords' [/X3D/Scene/Group[1]/HAnimHumanoid/Coordinate, warning]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_humanoid_root'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[2], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_sacroiliac'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[3], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_skullbase'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[4], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_temporomandibular'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[5], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc1'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[6], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[7], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[8], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[9], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc5'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[10], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc6'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[11], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vc7'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[12], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vl1'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[13], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vl2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[14], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vl3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[15], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vl4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[16], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vl5'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[17], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt1'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[18], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt10'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[19], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt11'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[20], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt12'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[21], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[22], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[23], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[24], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt5'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[25], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt6'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[26], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt7'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[27], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt8'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[28], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_vt9'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[29], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_acromioclavicular'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[30], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_acromioclavicular'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[31], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_distal_interphalangeal_2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[32], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_distal_interphalangeal_2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[33], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_distal_interphalangeal_3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[34], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_distal_interphalangeal_3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[35], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_distal_interphalangeal_4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[36], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_distal_interphalangeal_4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[37], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_distal_interphalangeal_5'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[38], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_distal_interphalangeal_5'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[39], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_interphalangeal_1'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[40], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_interphalangeal_1'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[41], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_proximal_interphalangeal_2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[42], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_proximal_interphalangeal_2'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[43], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_proximal_interphalangeal_3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[44], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_proximal_interphalangeal_3'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[45], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_proximal_interphalangeal_4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[46], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_r_carpal_proximal_interphalangeal_4'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[47], error]<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><HAnimJoint USE='Joe_l_carpal_proximal_interphalangeal_5'/> with parent HAnimHumanoid needs containerField='joints' [/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[48], error]<<o:p></o:p></p></div></div></div></div></div></div></div></blockquote></div></div></div></div></blockquote></div></div></div></div></body></html>