<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=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
font-size:10.0pt;
font-family:"Courier New";}
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;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;
mso-ligatures:none;}
span.EmailStyle24
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:311181010;
mso-list-type:hybrid;
mso-list-template-ids:-1072952886 -8738048 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:6;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
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 l0: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 l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l0: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 l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l0: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 l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1
{mso-list-id:1154687987;
mso-list-type:hybrid;
mso-list-template-ids:-651804406 -48830178 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
{mso-level-number-format:alpha-lower;
mso-level-text:"\(%1\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2
{mso-list-id:1862160432;
mso-list-type:hybrid;
mso-list-template-ids:18276494 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.25in;
text-indent:-.25in;}
@list l2:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;}
@list l2:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:1.25in;
text-indent:-9.0pt;}
@list l2:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.75in;
text-indent:-.25in;}
@list l2:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:2.25in;
text-indent:-.25in;}
@list l2:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:2.75in;
text-indent:-9.0pt;}
@list l2:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.25in;
text-indent:-.25in;}
@list l2:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.75in;
text-indent:-.25in;}
@list l2:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:4.25in;
text-indent:-9.0pt;}
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><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l2 level1 lfo2'>Thanks for a good explanation Joe.<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Preoccupation with containerField, which is unique to the X3D XML encoding, is generally unnecessary for making sense and understanding an X3D scene graph. As you explain here, the X3D Architecture nodes and fields are how to make sense of an X3D scene graph.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Humanoid models get very complex very quickly. We must utilize and test our validation tools to ensure that we can actually build good humanoid models. Such rigor is necessary if we want good humanoid animations and possibly even human medical records someday.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=2 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l2 level1 lfo2'>A Python program that uses x3d.py for creation of scenes only has methods using the field names. There should never be a need to define a containerField (in XML) for a field (in Python).<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks to Python typing and careful design, it is quite hard to create a runnable program that produces an invalid scene graph. There are thousands of examples online showing how to do this correctly.<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:l0 level1 lfo1'>X3D Resources, Examples: Scene Archives for X3D<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Once an X3D model is created in Python, if there are indeed bugs in x3d.py export to XML output, then such bugs can be demonstrated via examples (good input python program producing bad output XML file) and subsequently fixed. Am keen to fix demonstrated problems when time permits.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John, sorry but I am unable to repeat anything consistently using the multilingual snippets you have provided below. Thus am not able to make sensible changes to x3d.py library.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=3 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l2 level1 lfo2'>If I understand correctly, John, you are trying to create an HAnim model using Python and output it as XML.<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Suggestion: you might take one of the simplest HAnim examples (LOA 0 or a stripped-down LOA 1) in .x3d, run the corresponding .py version from the examples, and see that it works. Then use that python program to generate an output .x3d file in XML encoding. If round tripping XML to Python and then back again to XML does not match (i.e. when comparing original XML to output XML), then voila you have isolated a conversion error. Starting with a valid .x3d model is a good starting place that gives you high confidence you have begun with a correct scene graph.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Am expecting that any such conversion error is most likely in the Python x3d.py to XML .x3d export. Once a bug is repeatable, then any corrections that I might make to x3d.py autogeneration are testable, and corrections become possible.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>No snippets please, rather am suggesting that a repeatable bug report for this would be:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=1 type=a><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo3'>Original valid XML model as .x3d file,<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo3'>Converted valid Python program, adding export to XML model,<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo3'>Python program export to XML model as .x3d file, invalid and not matching (a).<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Perhaps the Templates for Diamond Man are good examples to explore in this manner?<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:l0 level1 lfo1'>X3D Example Archives: Humanoid Animation, Templates, Diamond Man LOA 0<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Templates/DiamondManLOA0Index.html<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Templates/DiamondManLOA0.html#humanoidHAnimHumanoidReport<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></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"'>HAnimHumanoid hanim_humanoid skeleton holds X3D4 HAnim2 joints/segments/sites.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'> [key] jointname : segmentname ^ sitename<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[nodes] HAnimJoint (2), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (1), @ skin nodes (0)<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"'>HAnimHumanoid DEF='hanim_humanoid name='humanoid' loa='0'<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>skeleton<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'> humanoid_root<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'> sacroiliac : pelvis<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"'>^ HAnimHumanoid humanoid holds 1 HAnimSite node: site_view<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><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>X3D Example Archives: Humanoid Animation, Templates, Diamond Man LOA 1<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Templates/DiamondManLOA1Index.html<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Templates/DiamondManLOA1.html#humanoidHAnimHumanoidReport<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>=============================================================================================================================<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>HAnimHumanoid hanim_humanoid skeleton holds X3D4 HAnim2 joints/segments/sites.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> [key] jointname : segmentname ^ sitename<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>[nodes] HAnimJoint (20), : HAnimSegment (18), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (53), @ skin nodes (0)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>=============================================================================================================================<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>HAnimHumanoid DEF='hanim_humanoid name='humanoid' loa='1'<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>skeleton<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> humanoid_root<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> sacroiliac : pelvis<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | l_hip : l_thigh ^ l_knee_crease_pt, l_femoral_lateral_epicondyle_pt, l_femoral_medial_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | l_knee : l_calf<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | l_talocrural : l_talus ^ l_lateral_malleolus_pt, l_medial_malleolus_pt, l_sphyrion_pt, l_calcaneus_posterior_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2 ^ l_middistal_tip, l_metatarsal_phalanx_5_pt, l_metatarsal_phalanx_1_pt, l_tarsal_distal_phalanx_2_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | r_hip : r_thigh ^ r_knee_crease_pt, r_femoral_lateral_epicondyle_pt, r_femoral_medial_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | r_knee : r_calf<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | r_talocrural : r_talus ^ r_lateral_malleolus_pt, r_medial_malleolus_pt, r_sphyrion_pt, r_calcaneus_posterior_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2 ^ r_middistal_tip, r_metatarsal_phalanx_5_pt, r_metatarsal_phalanx_1_pt, r_tarsal_distal_phalanx_2_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> vl1 : l1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | l_shoulder : l_upperarm ^ l_humeral_lateral_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | l_elbow : l_forearm ^ l_radial_styloid_pt, l_olecranon_pt, l_humeral_medial_epicondyle_pt, l_radiale_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | l_radiocarpal : l_carpal ^ l_hand_tip, l_metacarpal_phalanx_2_pt, l_dactylion_pt, l_ulnar_styloid_pt, l_metacarpal_phalanx_5_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | r_shoulder : r_upperarm ^ r_humeral_lateral_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | r_elbow : r_forearm ^ r_radial_styloid_pt, r_olecranon_pt, r_humeral_medial_epicondyle_pt, r_radiale_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | | r_radiocarpal : r_carpal ^ r_hand_tip, r_metacarpal_phalanx_2_pt, r_dactylion_pt, r_ulnar_styloid_pt, r_metacarpal_phalanx_5_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> | vc4 : c4<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> vl5<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'> skullbase : skull ^ skull_vertex_tip, sellion_pt, r_infraorbitale_pt, l_infraorbitale_pt, supramenton_pt, r_tragion_pt, r_gonion_pt, l_tragion_pt, l_gonion_pt, nuchale_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimHumanoid humanoid holds 1 HAnimSite node: DiamondManLOA1_view<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment l_thigh holds 3 HAnimSite nodes: l_knee_crease_pt, l_femoral_lateral_epicondyle_pt, l_femoral_medial_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment l_talus holds 4 HAnimSite nodes: l_lateral_malleolus_pt, l_medial_malleolus_pt, l_sphyrion_pt, l_calcaneus_posterior_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment l_tarsal_proximal_phalanx_2 holds 4 HAnimSite nodes: l_middistal_tip, l_metatarsal_phalanx_5_pt, l_metatarsal_phalanx_1_pt, l_tarsal_distal_phalanx_2_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment r_thigh holds 3 HAnimSite nodes: r_knee_crease_pt, r_femoral_lateral_epicondyle_pt, r_femoral_medial_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment r_talus holds 4 HAnimSite nodes: r_lateral_malleolus_pt, r_medial_malleolus_pt, r_sphyrion_pt, r_calcaneus_posterior_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment r_tarsal_proximal_phalanx_2 holds 4 HAnimSite nodes: r_middistal_tip, r_metatarsal_phalanx_5_pt, r_metatarsal_phalanx_1_pt, r_tarsal_distal_phalanx_2_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment l_upperarm holds 1 HAnimSite node: l_humeral_lateral_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment l_forearm holds 4 HAnimSite nodes: l_radial_styloid_pt, l_olecranon_pt, l_humeral_medial_epicondyle_pt, l_radiale_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment l_carpal holds 5 HAnimSite nodes: l_hand_tip, l_metacarpal_phalanx_2_pt, l_dactylion_pt, l_ulnar_styloid_pt, l_metacarpal_phalanx_5_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment r_upperarm holds 1 HAnimSite node: r_humeral_lateral_epicondyle_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment r_forearm holds 4 HAnimSite nodes: r_radial_styloid_pt, r_olecranon_pt, r_humeral_medial_epicondyle_pt, r_radiale_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment r_carpal holds 5 HAnimSite nodes: r_hand_tip, r_metacarpal_phalanx_2_pt, r_dactylion_pt, r_ulnar_styloid_pt, r_metacarpal_phalanx_5_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>^ HAnimSegment skull holds 10 HAnimSite nodes: skull_vertex_tip, sellion_pt, r_infraorbitale_pt, l_infraorbitale_pt, supramenton_pt, r_tragion_pt, r_gonion_pt, l_tragion_pt, l_gonion_pt, nuchale_pt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Courier New"'>=============================================================================================================================</span><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"'><o:p> </o:p></span></p><p class=MsoNormal>Definitely a worthwhile exploration, and not for the faint of heart! Carefully simplifying the LOA1 model before exporting Python might help (and X3D-Edit can support that).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Good hunting and good luck.<o:p></o:p></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"'>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><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> x3d-public <x3d-public-bounces@web3d.org> <b>On Behalf Of </b>Joe D Williams<br><b>Sent:</b> Saturday, October 28, 2023 12:15 PM<br><b>To:</b> John Carlson <yottzumm@gmail.com>; X3D Graphics public mailing list <x3d-public@web3d.org><br><b>Subject:</b> Re: [x3d-public] What are valid children of HAnimHumanoid.skin? argument for allowing containerFields in x3d.py<o:p></o:p></p></div><div><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>> </span><span style='font-size:9.0pt;font-family:"Arial",sans-serif;color:black;background:#E1E7F1'>argument for allowing containerFields in x3d.py</span><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'> </span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p></o:p></span></p><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>I don't understand. If no container fields then not able to do all of x3d. We had to use containerField for the admittedly rare instance where the default is not true. These are cases where looking up the containerField in schema is not enough. </span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p></o:p></span></p><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>Some are tricky, like skeleton where only the root Joint has to have the containerField as skeleton. </span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p></o:p></span></p><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>skin contains a Shape which does not have children.</span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p></o:p></span></p><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>However we are investigating the idea of how to code LOD choices for skin. I think we already know how to do that for that for Segment geometry. </span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p></o:p></span></p><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>Thanks,<o:p></o:p></span></p><p style='margin:0.1rem 0'><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'>Joe</span><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><o:p></o:p></span></p><p><span style='font-size:12.0pt;font-family:"Arial",sans-serif;color:black'> <o:p></o:p></span></p></div><div style='border:none;border-left:solid #AAAAAA 1.0pt;padding:0in 0in 0in 11.0pt;box-sizing: border-box'><p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>><br>Sent: Oct 26, 2023 10:08 AM<br>To: Joe D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>>, X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>><br>Subject: What are valid children of HAnimHumanoid.skin? argument for allowing containerFields in x3d.py<o:p></o:p></p><p style='margin:0.1rem 0'> <o:p></o:p></p><div><div><div><div><div><div><div><div><div><div><pre style='margin-left:18.75pt'><span style='font-size:8.5pt;color:black'>From: <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/hanim.html#HAnimHumanoid" target="_blank"><span style='font-size:12.0pt;font-family:"Arial",sans-serif'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/hanim.html#HAnimHumanoid</span></a><o:p></o:p></span></pre><pre style='margin-left:18.75pt'><span style='font-size:8.5pt;color:black'>I see:<o:p></o:p></span></pre><pre style='margin-left:18.75pt'><span style='font-size:8.5pt;color:black'>MFNode [in,out] skin [] [IndexedFaceSet, IndexedFanSet, IndexedQuadSet, IndexedTriangleSet, IndexedTriangleStripSet]<o:p></o:p></span></pre><pre style='margin-left:18.75pt'><span style='font-size:8.5pt;color:black'>And fromL <a href="https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid" target="_blank">https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid</a><o:p></o:p></span></pre><pre><span style='font-size:9.0pt'>sequence<Object> skin [] [indexed mesh objects as defined by the representation]<o:p></o:p></span></pre><pre><span style='font-size:9.0pt'> <o:p></o:p></span></pre><pre><span style='font-size:9.0pt'>But in actual practice, I see:<o:p></o:p></span></pre><pre><span style='font-size:9.0pt'> <o:p></o:p></span></pre><pre><span style='font-size:13.5pt;font-family:"Times New Roman",serif'><<span style='color:navy'>Shape</span> <span style='color:green'>DEF</span>='<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_Shape" target="_blank" title="bookmark link to Joe_Shape"><span style='color:maroon'>Joe_Shape</span></a>' <span style='color:green'>containerField</span>='<span style='color:teal'>skin</span>'></span><span style='font-size:9.0pt'><o:p></o:p></span></pre><div style='margin-left:18.75pt'><p class=MsoNormal><a name="m_-7329258310126589806_Joe_skin_Appearan"></a><span style='font-size:13.5pt;font-family:"Times New Roman",serif'><<span style='color:navy'>Appearance</span> <span style='color:green'>DEF</span>='<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_skin_Appearance" target="_blank" title="bookmark link to Joe_skin_Appearance"><span style='color:maroon'>Joe_skin_Appearance</span></a>'> <o:p></o:p></span></p><div style='margin-left:18.75pt'><p class=MsoNormal><a name="m_-7329258310126589806_Joe_skin_Material"></a><span style='font-size:13.5pt;font-family:"Times New Roman",serif'><<span style='color:navy'>Material</span> <span style='color:green'>DEF</span>='<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_skin_Material" target="_blank" title="bookmark link to Joe_skin_Material"><span style='color:maroon'>Joe_skin_Material</span></a>' <span style='color:green'>diffuseColor</span>='<span style='color:teal'>0.3 0.3 0.6</span>' <span style='color:green'>emissiveColor</span>='<span style='color:teal'>0.3 0.3 0.6</span>'/><br><a name="m_-7329258310126589806_JoeSkinImageTextu"></a><<span style='color:navy'>ImageTexture</span> <span style='color:green'>DEF</span>='<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#JoeSkinImageTexture" target="_blank" title="bookmark link to JoeSkinImageTexture"><span style='color:maroon'>JoeSkinImageTexture</span></a>'<br> <span style='color:green'>url</span>=' "<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeBodyTexture29.png" target="_blank">JoeBodyTexture29.png<span style='text-decoration:none'><img border=0 width=128 height=128 style='width:1.3333in;height:1.3333in' id="_x0000_i1026" src="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeBodyTexture29.png"></span> </a>" "<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png<span style='text-decoration:none'><img border=0 width=128 height=128 style='width:1.3333in;height:1.3333in' id="_x0000_i1025" src="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png"></span> </a>" ' /><a name="m_-7329258310126589806_KickTextureTransf"></a><o:p></o:p></span></p><div><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black;background:#EEEEEE'><!-- <em>ROUTE</em> information for </span><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:maroon;background:#EEEEEE'>KickTextureTransform</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black;background:#EEEEEE'> node: [<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#ROUTE_194" target="_blank" title="go to this ROUTE"><em>from</em> <span style='color:maroon'>SkinInterpolator</span>.<span style='color:green'>value_changed</span> <em>to</em> <span style='color:green'>rotation</span> </a>] --><br></span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'><<span style='color:navy'>TextureTransform</span> <span style='color:green'>DEF</span>='<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#KickTextureTransform" target="_blank" title="bookmark link to KickTextureTransform"><span style='color:maroon'>KickTextureTransform</span></a>'/><o:p></o:p></span></p></div></div><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'></<span style='color:navy'>Appearance</span>><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>From:<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>And <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>skin [<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> DEF Joe_Shape Shape {<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> appearance DEF Joe_skin_Appearance Appearance {<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> material DEF Joe_skin_Material Material {<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> diffuseColor 0.3 0.3 0.6<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> emissiveColor 0.3 0.3 0.6<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> }<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> texture DEF JoeSkinImageTexture ImageTexture {<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> url [ "JoeBodyTexture29.png" "<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png</a>" ]<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> }<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> textureTransform DEF KickTextureTransform TextureTransform {<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> }<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> }<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>==================================================<o:p></o:p></span></p></div></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>So it would seem like Shapes with an Indexed geometry is what we're aiming for in the standard as one of the possibly many children of the skin container field (note the space).<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>That is all okay, AFAIAC, just extremely confusing when deciding where to add containerFields in DOM documents.<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>For example, consider the below:<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_carpal_distal_interphalangeal_4'/><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_metacarpophalangeal_3'/><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_carpal_proximal_interphalangeal_3'/><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_carpal_distal_interphalangeal_3'/><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_metacarpophalangeal_2'/><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_carpal_proximal_interphalangeal_2'/><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <HAnimJoint USE='hanim_l_carpal_distal_interphalangeal_2'/><o:p></o:p></span></p></div></div></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>[ etc. ]<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div></div></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>It may not be apparent, but X3DJSAIL complains about this. There's no containerField='joints', right? But I'm generating this code using x3d.py which doesn't allow me to list containerFields!<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div></div></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Grr! Here are some of the "brutzman" messages from X3DJSAI, which are valid. I really want to assign joints as a containerField, so perhaps I will just do it in X3DJSONLD.<o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> <o:p></o:p></span></p></div><div style='margin-left:18.75pt'><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div><div style='margin-left:18.75pt'><p class=MsoNormal><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> [apply] [error] X3DLoaderDOM: Parent-child node relationship not found! (parent HAnimHumanoid, child HAnimJoint, containerField='children') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><p style='margin:0.1rem 0'> <o:p></o:p></p></div></body></html>