<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)"><!--[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;}
/* 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;}
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.gmailsignatureprefix
{mso-style-name:gmail_signature_prefix;}
.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:336229388;
mso-list-type:hybrid;
mso-list-template-ids:-1811613330 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0D8;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;
mso-fareast-font-family:"Times New Roman";
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:535773073;
mso-list-template-ids:-1;}
@list l1:level1
{mso-level-start-at:2;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2
{mso-list-id:595334811;
mso-list-template-ids:-1;}
@list l2:level1
{mso-level-start-at:4;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l2:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l3
{mso-list-id:1052844843;
mso-list-template-ids:-1;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:1256477783;
mso-list-template-ids:-1;}
@list l4:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level2
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level3
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level5
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level6
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level8
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level9
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l5
{mso-list-id:1413047105;
mso-list-template-ids:-1;}
@list l5:level1
{mso-level-start-at:6;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l5:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l6
{mso-list-id:1495796653;
mso-list-template-ids:-1;}
@list l6:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level2
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level3
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level5
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level6
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level8
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l6:level9
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l7
{mso-list-id:1688748383;
mso-list-template-ids:-1;}
@list l7:level1
{mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l7:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l8
{mso-list-id:1843541344;
mso-list-template-ids:-1;}
@list l8:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:\F0B7;
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:1972322169;
mso-list-template-ids:-1;}
@list l9:level1
{mso-level-start-at:5;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l9:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10
{mso-list-id:2141069658;
mso-list-template-ids:-1;}
@list l10:level1
{mso-level-start-at:8;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level2
{mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level3
{mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level4
{mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level5
{mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level6
{mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level7
{mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level8
{mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l10:level9
{mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>colors per vertex, … etc</li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The big idea is how can the tool help the author with little problems so help with understanding big problems. </p><p class=MsoNormal>One sort of maybe silly example is trying to figure how a shape is drawn by colors. Maybe I don’t know how many points and I learn by applying colors per vertex. If I don’t know how many points then I have to have the complete MF before the thing would work. If the player is a little tolerant, then it can run with a partial list with defaults to at least show something. </p><p class=MsoNormal> Another example is for an IFS, the player is supposed to generate a default texture coordinates and some other info, normals, for instance. So, if the tool does not do that, the user may be disappointed. In the long past most every player had many ’tolerant’ behaviors. </p><p class=MsoNormal>Thanks, </p><p class=MsoNormal>Joe</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Sent: </b>Thursday, June 22, 2023 2:52 PM<br><b>To: </b><a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</a><br><b>Cc: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a>; <a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a>; <a href="mailto:joedwil@earthlink.net">Joe D Williams</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: HAnim sample failing in X3DOM, error in view3dscene, additional tests</p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Also agreed on performance impacts. There are set_index in fields for the index fields, meaning that dynamic changes to the indices are allowed. This is impacting performance in itself and if checking and potentially filling in values would be required as well it would further affect performance on a per frame basis.</p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>For example, Three.js is very strict, for performance reasons, in expecting all input to its interfaces to be valid. It does not perform error checking itself.</p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I only mentioned spec changes because in practice users - after a warning - would still expect some non-fatal behaviour anyways which requires checking and potentially filling in or altering values. So why not standardize this behaviour ?</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I think I may add checking and recycling with a warning only to the initial setup of the IFS node but not for dynamic changes via routes or SAI. Animating textures through texcoord indices seems a valid use case.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Cheers,</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>-Andreas</p></div></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Thu, Jun 22, 2023 at 12:36 PM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com">michalis.kambi@gmail.com</a>> wrote:</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><p class=MsoNormal style='margin-left:9.6pt'>I would be against introducing spec wording to guarantee any behavior when there's not enough per-vertex data. </p></div><div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>1. There's no obvious resolution (replicating last texture coordinate may not be "what the author wanted" -- the texture will be likely weirdly stretched),</p></div><div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>2. Other model formats also don't specify anything in this case. It's just invalid model causing undefined behavior for glTF, Collada etc.</p></div><div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>3. It may be a performance issue in some scenarios. Some browsers could be bundled with models essentially guaranteed to be correct (e.g. when you deliver a game runtime + game assets locally). ( This is just a theoretical example, CGE doesn't do this now -- we check models for correctness the same, no matter if it's in view3dscene or in some game using CGE. ) Such browsers can right now upload the data to GPU in a straightforward fashion without checking for correctness. Or just check for correctness and fail if the model is wrong. If the browsers will have to instead potentially process the data, because even correct models may not have enough data... then we've lost performance in some cases.</p></div><div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'> Basically, if we allow something in the spec as "valid model", then we make a guarantee it is supported. Authors will use it, and developers have to make sure it is supported. In this particular case, I'd say the benefit (supporting models where someone likely just made a mistake) is not big enough to justify the costs (need to process per-vertex data, doing operation that may not be what author wanted anyway).</p></div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p><div><p class=MsoNormal style='margin-left:9.6pt'>The arguments 1 and 2 are really critical for me. There's no sensible default behavior to do IMHO, author should get a clear message "this is invalid model, please fix it".</p></div><div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>Regards,</p></div><div><p class=MsoNormal style='margin-left:9.6pt'>Michalis</p></div></div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-left:9.6pt'>czw., 22 cze 2023 o 17:55 Andreas Plesch <<a href="mailto:andreasplesch@netscape.net" target="_blank">andreasplesch@netscape.net</a>> napisał(a):</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><p class=MsoNormal style='margin-left:19.2pt'>Agreed. I can add a warning to the x3dom console log. But checking for correctness is really the job of a validator, not necessarily of a viewer. This is also true for glTF, and probably Collada, which have their own dedicated validators.</p></div><div><p class=MsoNormal style='margin-left:19.2pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:19.2pt'>Another possibility is to change the spec. to define a behaviour other than undefined, unpleasant as it is. The simplest would be probably "use the last available" to fill in missing 2d3d4dtexcoords/2d3dcoords/rgbrgbacolors . Alternatively, "replace out of range indices with the highest in range index". Very similar but has some consequences for event routing since different fields are altered.</p></div><div><p class=MsoNormal style='margin-left:19.2pt'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:19.2pt'>-Andreas</p></div></div><p class=MsoNormal style='margin-left:19.2pt'><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-left:19.2pt'>On Thu, Jun 22, 2023 at 8:10 AM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> wrote:</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><p class=MsoNormal style='margin-left:.4in'>Andreas, </p></div><div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.4in'>I especially agree with statement """I can add recycling of texCoords in x3dom for such a case but it is almost not worth doing since the problem is that there are many reasonable strategies to divine an author's intention""" :)</p></div><div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.4in'>Exactly -- there are many possible options "what to do, what was the author's intention". There are even more options if we recall that texture coordinates may also be 3D and 4D, for 3D textures. And the same issue can occur with other per-vertex data, e.g. colors per vertex, normals, fog coordinates, shader attributes.</p></div><div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.4in'>My recommendation would be to first make a clear warning/error to user about it, so that users know to fix this issue in the model. This is also what (from my knowledge) everyone else does -- glTF, Collada, Wavefront OBJ... they all have some indexes and texture coordinates, and they just require that author provides enough texture coordinates. It's undefined what happens if model is invalid, it is even possible that renderer uploads to GPU something invalid and then GPU decides what happens (but letting GPU choose the undefined behavior is not good from security standpoint -- ideally the renderer should catch it and make reliable error/warning).</p></div><div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.4in'>We don't want to have a talk in +5 years """OK, what do we do with not enough per-vertex data, because FreeWRL now fills it with zeroes, X3DOM cycles from beginning, CGE fills it with 1s""" etc. :) We want our resolution to be "such models are invalid, authors should get message about it and know to fix the models".</p></div><div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.4in'>Regards,</p></div><div><p class=MsoNormal style='margin-left:.4in'>Michalis</p></div><div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p></div></div><p class=MsoNormal style='margin-left:.4in'><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-left:.4in'>czw., 22 cze 2023 o 03:40 John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> napisał(a):</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><p class=MsoNormal style='margin-left:38.4pt'>Here's a near perfect file before scaling. Still working on that as it view3dscene is reporting metadata errors.</p></div><p class=MsoNormal style='margin-left:38.4pt'><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-left:38.4pt'>On Wed, Jun 21, 2023 at 7:09 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:</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;margin-left:48.0pt'>Diagnostic reports for JinLOA4.x3d, file size 684156</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l3 level1 lfo2'><![if !supportLists]><span style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d</a></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l7 level1 lfo3'><![if !supportLists]><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>X3D-Edit checkmark for X3D Validator reports</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>--------- X3D Validator checks commenced for JinLOA4.x3d ---------</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing well-formed XML check...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Checking file:/C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d." target="_blank">www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d.</a>..</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Well-formed XML check: pass</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing DOCTYPE check...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>[X3dDoctypeChecker] success: valid XML declaration found.[X3dDoctypeChecker] success: final X3D 4.0 DOCTYPE found.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing DTD validation...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Checking file:/C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d." target="_blank">www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d.</a>..</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>XML DTD validation: pass</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing X3D schema validation...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Checking file:/C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d." target="_blank">www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d.</a>..</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Referenced entity at <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" target="_blank">http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd</a>.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Referenced entity at <a href="http://www.w3.org/2001/XMLSchema.dtd" target="_blank">http://www.w3.org/2001/XMLSchema.dtd</a>.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Referenced entity at <a href="http://www.w3.org/2001/datatypes.dtd" target="_blank">http://www.w3.org/2001/datatypes.dtd</a>.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>XML schema validation: pass</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing X3D regular expression (regex) values check...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D regex check: complete</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing X3dToX3dvClassicVrmlEncoding.xslt conversion check...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Performing X3D Schematron check...</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>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]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> version='2.0' with X3D version='4.0' [/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>==================================================================================================================== [/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimJoint) within skeleton hierarchy = 146[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimSegment) within skeleton hierarchy = 146[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimSite) within HAnimHumanoid = 0[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimSite//Viewpoint) within skeleton hierarchy = 0[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(HAnimDisplacer) within skeleton hierarchy = 0[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimJoint USE='*' containerField = 'joints'/>) = 146[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimSegment USE='*' containerField = 'segments'/>) = 146[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimSite USE='*' containerField = 'sites'/>) = 0[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimHumanoid DEF='hanim_JinLOA4' name='JinLOA4'/> node count(<HAnimSite DEF='*' name ends with '_view'/>) = 0[/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>==================================================================================================================== [/X3D/Scene/HAnimHumanoid, diagnostic]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimJoint DEF='hanim_l_tarsal_distal_interphalangeal_1' name='l_tarsal_distal_interphalangeal_1'/> is not a recognized name for HAnim2 HAnimJoint [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, warning]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimSegment DEF='hanim_l_tarsal_distal_phalanx_1' name='l_tarsal_distal_phalanx_1'/> has parent HAnimJoint name='l_tarsal_distal_interphalangeal_1' rather than expected parent name='l_tarsal_interphalangeal_1', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimSegment, warning]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimJoint DEF='hanim_r_tarsal_distal_interphalangeal_1' name='r_tarsal_distal_interphalangeal_1'/> is not a recognized name for HAnim2 HAnimJoint [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, warning]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimSegment DEF='hanim_r_tarsal_distal_phalanx_1' name='r_tarsal_distal_phalanx_1'/> has parent HAnimJoint name='r_tarsal_distal_interphalangeal_1' rather than expected parent name='r_tarsal_interphalangeal_1', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimSegment, warning]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimJoint DEF='hanim_vl5' name='vl5'/> has parent HAnimJoint name='sacroiliac' rather than expected parent name='humanoid_root', recommend checking model [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3], warning]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimJoint DEF='hanim_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/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/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]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'><HAnimJoint DEF='hanim_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/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/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]</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>--------- X3D Validator checks complete for JinLOA4.x3d ---------</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l1 level1 lfo4'><![if !supportLists]><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>Andreas link to X3DOM Editor</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l8 level1 lfo5'><![if !supportLists]><span style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><a href="https://andreasplesch.github.io/Library/Viewer/index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d" target="_blank">https://andreasplesch.github.io/Library/Viewer/index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d</a></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>provides following console:</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom-full.debug.js:65740 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'x')</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.registerNodeType.defineClass.nodeChanged.nodeChanged (x3dom-full.debug.js:65740:90)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12112:19)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12105:34)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at NodeList.forEach (<anonymous>)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12103:36)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12105:34)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at NodeList.forEach (<anonymous>)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12103:36)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12105:34)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> at NodeList.forEach (<anonymous>)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>nodeChanged @ x3dom-full.debug.js:65740</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12112</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>(anonymous) @ x3dom-full.debug.js:12105</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.NodeNameSpace.setupTree @ x3dom-full.debug.js:12103</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.X3DDocument._setup @ x3dom-full.debug.js:21793</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>next_step @ x3dom-full.debug.js:21731</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>next_step @ x3dom-full.debug.js:21743</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.X3DDocument.load @ x3dom-full.debug.js:21747</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.X3DCanvas.load @ x3dom-full.debug.js:2121</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>onload @ x3dom-full.debug.js:20366</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.reload @ x3dom-full.debug.js:20429</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>x3dom.Runtime.replaceWorld @ x3dom-full.debug.js:20043</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>updatex3d @ index.html?url=<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d:228" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d:228</a></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>load @ index.html?url=<a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d:214" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d:214</a></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>3. am getting similar browser console error if launched directly in X3DOM</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l6 level1 lfo6'><![if !supportLists]><span style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4X3dom.xhtml" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4X3dom.xhtml</a></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l2 level1 lfo7'><![if !supportLists]><span style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>view3dscene (launched from X3D-Edit) reports</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><img border=0 width=540 height=106 style='width:5.625in;height:1.1in' id="m_7571057224546330096m_-955594803190095707m_7801841212863721518m_-3873200037179958025m_-1408730426206811578m_-8280804171710496354m_8397409927437233748Picture_x0020_2" src="cid:image001.png@01D9A5E0.8B6FFD50"></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>Suggestion: add a button to view3dscene diagnostic that enables user to “Copy to clipboard” – usually this is provided.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>Closing the X3DOM editor did not fix this access problem.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>Closing the X3D-Edit pane for this problem did not fix this access problem, but closing X3D-Edit executable (surprisingly) did. Not sure why, will look further at that.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>Now view3dscene renders the model and provides 11 warnings:</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>11 warnings:</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: Unknown X3D field name (unhandled X3D XML attribute) "loa" in node "HAnimHumanoid"</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 4: Expected string, got "Jin"</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 19: Expected string, got "myeongwonlee@gmail"</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 3: Expected string, got integer 31</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: Error when reading MFString field "value" value. Possibly missing double quotes (treating as a single string): Error at line 1 column 7: Expected string, got "female"</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: X3D XML: More than one value specified for SFNode field MetadataSet.metadata</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>X3D: Invalid index for field TextureCoordinate.point (MFVec2f)</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Scene URL: file:///C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Use "File->View Warnings" menu to view these warnings again.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><img border=0 width=521 height=590 style='width:5.425in;height:6.15in' id="m_7571057224546330096m_-955594803190095707m_7801841212863721518m_-3873200037179958025m_-1408730426206811578m_-8280804171710496354m_8397409927437233748Picture_x0020_3" src="cid:image002.png@01D9A5E0.8B6FFD50"></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><img border=0 width=519 height=168 style='width:5.4083in;height:1.75in' id="m_7571057224546330096m_-955594803190095707m_7801841212863721518m_-3873200037179958025m_-1408730426206811578m_-8280804171710496354m_8397409927437233748Picture_x0020_4" src="cid:image003.png@01D9A5E0.8B6FFD50"></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l9 level1 lfo8'><![if !supportLists]><span style='mso-list:Ignore'>5.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>Testing in X_ITE: renders fine, shows no errors in console.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l4 level1 lfo9'><![if !supportLists]><span style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4X_ITE.html" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4X_ITE.html</a></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l5 level1 lfo10'><![if !supportLists]><span style='mso-list:Ignore'>6.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>Xj3D has a verbose console without any errors apparent, However only renders a black screen.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l5 level1 lfo10'><![if !supportLists]><span style='mso-list:Ignore'>7.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Xj3D Xj3dVersionInformation: v2.3-nps utilizing NPS Open DIS v7</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>with 3D rendering by</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>-----------------------------------------------------------------------------------------------------</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Package: org.j3d.aviatrix3d</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Extension Name: org.j3d.aviatrix3d</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Specification Title: Aviatrix3D 3.1.1-nps - NPS SF</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Specification Vendor: Justin Couch</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Specification Version: 3.1.1</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Title: Aviatrix3D 3.1.1-nps - NPS SF</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Vendor: Savage Research Group (SRG) of the Modeling, Virtual Environments and Simulation (MOVES) Institute at the Naval Postgraduate School (NPS), Monterey, CA</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Vendor ID: edu.nps.moves</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation URL: <a href="https://svn.code.sf.net/p/xj3d/code/branches/Supporting_APIs/aviatrix3d" target="_blank">https://svn.code.sf.net/p/xj3d/code/branches/Supporting_APIs/aviatrix3d</a></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Version: 3.1.1-nps built on Fri, 26 May 2023 1434 -0700</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Build: 3.1.1-nps</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Branch: branches/Supporting_APIs/aviatrix3d</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Commit: 12701</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Sources: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Classes: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Classes-this: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Natives: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Natives-this: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>-----------------------------------------------------------------------------------------------------</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>on top of</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>-----------------------------------------------------------------------------------------------------</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Package: com.jogamp</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Extension Name: com.jogamp</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Specification Title: JogAmp Java Bindings Specification</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Specification Vendor: JogAmp Community</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Specification Version: 2.5</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Title: JogAmp Java Bindings Fat Jar</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Vendor: JogAmp Community</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Vendor ID: com.jogamp</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation URL: <a href="http://jogamp.org/" target="_blank">http://jogamp.org/</a></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Version: 2.5.0-rc-20230515</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Build: 2.5-b957-20230515</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Branch: origin/master</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation Commit: 9301bf1854d91405319801b62c268e2ca09406e6</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Sources: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Classes: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Classes-this: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Natives: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Implementation SHA Natives-this: null</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>----------------------------------------------------------------------------------------------------- </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Operating system: Windows 10 10.0</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Java environment: Oracle Corporation 20.0.1</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>BuildStamp time and date: 1436 on May 26 2023</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Initializing OpenGL X3D browser in GLCanvas (AWT) mode.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Graphics architecture will support 16 samples of full screen antialiasing.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Warning: Native image loading unavailable, using default.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:84.0pt;text-indent:-.25in;mso-list:l10 level1 lfo11'><![if !supportLists]><span style='mso-list:Ignore'>8.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>Not seeing any texture coordinate arithmetic problems. There is probably a rule in X3D Schematron (within X3D Validator) to test for that. Recommend checking further and we can define/implement further validation rules as needed.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>-- </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><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></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><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></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:currentcolor currentcolor'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'><b>From:</b> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> <br><b>Sent:</b> Wednesday, June 21, 2023 2:25 PM<br><b>To:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>>; Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>>; Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>><br><b>Cc:</b> Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>>; x3dom mlist <<a href="mailto:x3dom-users@lists.sourceforge.net" target="_blank">x3dom-users@lists.sourceforge.net</a>>; x3dom-developer mlist <<a href="mailto:x3dom-developers@lists.sourceforge.net" target="_blank">x3dom-developers@lists.sourceforge.net</a>><br><b>Subject:</b> Re: HAnim sample failing in X3DOM, error in view3dscene.</p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>Yes, good analysis Andreas and Michalis, I concluded the same thing. I understand that i can bisect the file…easier said than done. What i can do is write a program to find the bug and then extend output model with a key phrase in the TextureCoordinate point field. That will be easier that searching by hand.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>I suggest a change to the x3d validator.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>John</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:48.0pt'>On Wed, Jun 21, 2023 at 10:45 AM Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'>I agree with Michalis' analysis and also remember a similar discussion, I think with regards to Joe's kick model. </p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'><a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fandreasplesch.github.io%2FLibrary%2FViewer%2Findex.html%3Furl%3Dhttps%3A%2F%2Fwww.web3d.org%2Fx3d%2Fcontent%2Fexamples%2FHumanoidAnimation%2FCharacters%2FJinLOA4.x3d&data=05%7C01%7Cbrutzman%40nps.edu%7C8b5b4f2f27684455446308db729dfd41%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638229795120886399%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=LVKN%2BcRGX7NgY6H28BVXR7iSmCefJaYdX7W17qUVnlY%3D&reserved=0" target="_blank">https://andreasplesch.github.io/Library/Viewer/index.html?url=https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.x3d</a></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'>lets you edit the xml interactively and perhaps can aid in finding the missing tex. coords.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'>Cheers, Andreas</p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'>On Wed, Jun 21, 2023 at 10:43 AM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid windowtext 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><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>There are not enough texture coordinates specified. The X3D model isn't valid. </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>(We talked about this on x3d-public already some time ago, see thread "[x3d-public] New description fields".)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>Details:</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>- Renderer doesn't have enough information what texture coordinate to assign to some vertexes. (And there's no reasonable fallback, e.g. "use last texture coordinate" wouldn't make sense -- that's not a useful thing to do with texture coordinates, at least in general models it wouldn't make sense, better to ask user to provide all texture coordinates.)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>- Spec: <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD/Part01/components/geometry3D.html#IndexedFaceSet" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD/Part01/components/geometry3D.html#IndexedFaceSet</a> , texts like</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> - """If the greatest index in the texCoordIndex field is N, then there shall be N+1 texture coordinates in the X3DTextureCoordinateNode."""</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> - """If the greatest index in the coordIndex field is N, then there shall be N+1 texture coordinates in the X3DTextureCoordinateNode node."""</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>I improved the view3dscene error message to say:</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'><br>X3D: Invalid index 44 (should be less than count 44) for field TextureCoordinate.point (type: MFVec2f)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>To pinpoint it (as I see there are many TextureCoodinate nodes), you can bisect the model (cut away this or that half, and see when it stops failing), or assign names to X3D names to pinpoint it, i.e. edit X3D to change</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'><TextureCoordinate ...</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>-></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'><TextureCoordinate DEF="something unique" ...</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>Unfortunately in view3dscene we don't have at that point knowledge about exact line number from XML file -- I know, it would be useful in this case, to say "the problem is at TextureCoordinate at line 123 in X3D XML".</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>Regards,</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>Michalis</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:67.2pt'>śr., 21 cze 2023 o 15:15 John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> napisał(a):</p></div><blockquote style='border:none;border-left:solid windowtext 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;margin-left:76.8pt'>I'm having issues with the attached file in X3DOM. Thanks for any assistance!</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'>Here's what the errors show in view3dscene:</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'><img border=0 width=602 height=363 style='width:6.2666in;height:3.7833in' id="m_7571057224546330096m_-955594803190095707m_7801841212863721518m_-3873200037179958025m_-1408730426206811578m_-8280804171710496354m_8397409927437233748Picture_x0020_1" src="cid:image004.png@01D9A5E0.8B6FFD50"></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'>x3dom-full.debug.js:65877 Uncaught TypeError: Cannot read properties of undefined (reading 'x')</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.registerNodeType.defineClass.nodeChanged.nodeChanged (x3dom-full.debug.js:65877:90)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12167:19)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12160:34)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at NodeList.forEach (<anonymous>)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12158:36)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12160:34)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at NodeList.forEach (<anonymous>)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.NodeNameSpace.setupTree (x3dom-full.debug.js:12158:36)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at x3dom.NodeNameSpace.<anonymous> (x3dom-full.debug.js:12160:34)</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:76.8pt'> at NodeList.forEach (<anonymous>)</p></div></div></div></blockquote></div></blockquote></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'><br clear=all></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'> </p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'>-- </p><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:.8in'>Andreas Plesch<br>Waltham, MA 02453</p></div></div></div></blockquote></div></div></div></div></div></div></blockquote></div></blockquote></div></blockquote></div></blockquote></div></blockquote></div><p class=MsoNormal><br clear=all></p><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal><span class=gmailsignatureprefix>-- </span></p><p class=MsoNormal>Andreas Plesch<br>Waltham, MA 02453</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>