<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>JinLOA4.java (your conversion) still produces code to large (see
earlier email for code examples to get around this for the most
part).</p>
<p>I will attempt to make sure that the setMetadata method is called
instead of the addValue metadata in my JSON->Java load/export
code.</p>
<p>John<br>
</p>
<div class="moz-cite-prefix">On 12/23/21 21:34, John Carlson wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAGC3UE=Wz8ZnLvG-kDXLuB6bz50gKUv99Vg35OjM6QMQ+r1cPg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="auto">Don,</div>
<div dir="auto"><br>
</div>
<div dir="auto">I don’t know if I also mentioned my conversions
from JSON to Java failed…used setValue instead of setMetadata.
I have some free time this evening and will work on JSON schema
validation, fieldTypes.js, and mapToMethod.js as generated from
X3DUOM and found in X3DJSONLD. These JS files impact my
serializers (exported Java) and schema validation of
JINLOA4.json. Likely I will be able to do a build, and then do
spot checking for any issues.</div>
<div dir="auto"><br>
</div>
<div dir="auto">I did not understand the difference between
Humanoid in the abstract spec and HAnimHumanoid in the concrete
spec.</div>
<div dir="auto"><br>
</div>
<div dir="auto">Excellent analysis, Don, and Merry Xmas to you and
yours.</div>
<div><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Dec 23, 2021 at 1:50
PM Brutzman, Donald (Don) (CIV) <<a
href="mailto:brutzman@nps.edu" moz-do-not-send="true"
class="moz-txt-link-freetext">brutzman@nps.edu</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div link="blue" vlink="purple" style="word-wrap:break-word"
lang="EN-US">
<div class="m_-409662890751525771WordSection1">
<p class="MsoNormal">Hi John, thanks for this
elaboration of the question. Here is an in-depth
explanation giving multiple related references that
answer the question: yes, the /metadata/ field is part
of HAnimHumanoid node.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">More precise URL for HAnimHumanoid
in HAnim v2.0 specification is</p>
<p class="MsoNormal"> </p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in">Part 1: Humanoid animation
(HAnim) architecture, Clause 6 Object Interfaces,
6.2 Humanoid</li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/Obje"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/Obje</a>
Part 1: Humanoid animation (HAnim)
architecturectInterfaces.html#Humanoid</li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">HAnim architecture specification is
abstract and must be implemented by other
specifications. Thus you have to look in X3D
Architecture specification for corresponding X3D
details.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Corresponding X3D Architecture
specification is</p>
<p class="MsoNormal"> </p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in">X3D4 Part 1: Architecture
and base components, 26 Humanoid Animation (HAnim)
component, clause 26.3.2 HAnimHumanoid</li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid</a></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black">HAnimHumanoid : X3DChildNode,
X3DBoundedObject {</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFVec3f [in,out]
center 0 0 0 (-∞,∞)</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFString [in,out]
description ""</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFBool [in,out]
bboxDisplay FALSE</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFBool [in,out]
visible TRUE</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFString [in,out]
info []</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFVec3f [in,out]
jointBindingPositions [] (-∞,∞)</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFRotation [in,out]
jointBindingRotations [] (-∞,∞)|[-1,1]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFVec3f [in,out]
jointBindingScales [] (0,∞)</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
joints [] [HAnimJoint]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFInt32 [in,out]
loa -1 [-1,4]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFNode [in,out]
metadata NULL [X3DMetadataObject]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
motions [] [HAnimMotion]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFBool [in,out]
motionsEnabled []</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFString [in,out]
name ""</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFRotation [in,out]
rotation 0 0 1 0 (-∞,∞)|[-1,1]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFVec3f [in,out]
scale 1 1 1 (0,∞)</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFRotation [in,out]
scaleOrientation 0 0 1 0 (-∞,∞)|[-1,1]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
segments [] [HAnimSegment]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
sites [] [HAnimSite]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFString [in,out]
skeletalConfiguration "BASIC"</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
skeleton [] [HAnimJoint,
HAnimSite]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
skin []
<s style="font-family:"Courier New""><span
style="font-family:"Courier
New";background-color:orange">[IndexedFaceSet,
X3DGroupingNode, Shape]</span></s><span
style="font-family:"Courier
New";background-color:yellow">[IndexedFaceSet,
IndexedFanSet, IndexedQuadSet, IndexedTriangleSet,
IndexedTriangleStripSet]</span></span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFNode [in,out]
skinBindingCoord NULL [X3DCoordinateNode]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFNode [in,out]
skinBindingNormal NULL [X3DNormalNode]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFNode [in,out]
skinCoord NULL [X3DCoordinateNode]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFNode [in,out]
skinNormal NULL [X3DNormalNode]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFVec3f [in,out]
translation 0 0 0 (-∞,∞)</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFString [in,out]
version ""</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> MFNode [in,out]
viewpoints [] [HAnimSite]</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFVec3f []
bboxCenter 0 0 0 (-∞,∞)</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black"> SFVec3f []
bboxSize -1 -1 -1 [0,∞) or −1 −1 −1</span></p>
<p class="MsoNormal" style="margin-left:18.75pt"><span
style="font-size:8.5pt;font-family:"Courier
New";color:black">}</span></p>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal">As you can see, this node
signature does include /metadata/ field.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">As you can also see, there is no
/value/ field.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Of note is that there is an
HAnimHumanoid /info/ field for metadata information,
an MFString array of “name=value” pairs. Very
clumsy to use in practice. The X3D4 Architecture
notes in 26.3.2 the preferred alternative approach:</p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><span
style="background-color:yellow">Metadata values
from the
<i>info</i> field can be equivalently encoded
via MetadataSet containing related
X3DMetadataObject nodes.</span>
</li>
</ul>
<p class="MsoNormal">Conversions are provided by
X3dTidy cleanup stylesheet, and converted examples
online. (Not finding this information in X3D Scene
Authoring Hints, will add it.)</p>
<div style="border-style:none none
solid;border-bottom-width:1.5pt;padding:0in 0in
1pt;border-bottom-color:windowtext">
<p class="MsoNormal" style="border:none;padding:0in"> </p>
</div>
<p class="MsoNormal"> </p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in">HumanoidAnimation X3D
Examples Archive</li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/x3d/content/examples/HumanoidAnimation</a></li>
</ul>
<div style="border-style:none none
solid;border-bottom-width:1.5pt;padding:0in 0in
1pt;border-bottom-color:windowtext">
<p class="MsoNormal" style="border:none;padding:0in"> </p>
</div>
<p class="MsoNormal"> </p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in">X3D Example Archives:
Humanoid Animation, Characters, Jin LOA 4</li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html</a></li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.html#hanim_JinLOA4"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.html#hanim_JinLOA4</a></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><HAnimHumanoid DEF='hanim_JinLOA4' loa='4' name='JinLOA4' scale='0.0225
0.0225 0.0225'>
</p>
<p class="MsoNormal"> <MetadataSet name='HAnimHumanoid.info' reference='<a
href="https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid</a>' containerField='metadata'>
</p>
<p class="MsoNormal"> <MetadataString containerField='value' name='authorName' value='Jin
Hoon Lee and Min Joo Lee, Chul Hee Jung and Myeong
Won Lee'/>
<br>
<MetadataString containerField='value' name='authorEmail' value='<a
href="mailto:myeongwonlee@gmail.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">myeongwonlee@gmail.com</a>'/>
<br>
<MetadataString containerField='value' name='creationDate' value='31
March 2011'/>
<br>
<MetadataString containerField='value' name='gender' value='female'/>
<br>
<MetadataFloat containerField='value' name='height' value='1.5'/>
<br>
<MetadataString containerField='value' name='humanoidVersion' value='"2.0"'/>
</p>
<div style="border-style:none none
solid;border-bottom-width:1.5pt;padding:0in 0in
1pt;border-bottom-color:windowtext">
<p class="MsoNormal" style="border:none;padding:0in"> </MetadataSet>
<br>
<a
name="m_-409662890751525771_hanim_humanoid_root"
moz-do-not-send="true"></a> <HAnimJoint DEF='hanim_humanoid_root' center='0
36.709999
-0.707600' containerField='skeleton' name='humanoid_root'></p>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Reviewing X3D Tooltips confirms
this answer to your question, along with convenient
links to clauses in both specifications. (Each of
the node names e.g. HAnimHumanoid links to the
current X3D Architecture CD1 clause.)</p>
<p class="MsoNormal"> </p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in">X3D Tooltips HAnimHumanoid
</li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid</a></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Now checking X3D Unified Object
Model (X3DUOM) X3dUnifiedObjectModel-4.0.xml</p>
<p class="MsoNormal"> </p>
<ul style="margin-top:0in" type="disc">
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/specifications"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/specifications</a></li>
<li class="m_-409662890751525771MsoListParagraph"
style="margin-left:0in"><a
href="https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml</a></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> <ConcreteNode
name="HAnimHumanoid"></p>
<p class="MsoNormal"> <InterfaceDefinition
specificationUrl=”<a
href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid</a>”
</p>
<p class="MsoNormal"> appinfo="The
HAnimHumanoid node is used to: (a) store references
to the joints, segments, sites, skeleton, optional
skin, and fixed viewpoints, (b) serve as a container
for the entire humanoid, (c) provide a convenient
way of moving the humanoid through its environment,
and (d) store human-readable metadata such as name,
version, author, copyright, age, gender and other
information."></p>
<p class="MsoNormal"> <componentInfo
name="HAnim" level="1"/></p>
<p class="MsoNormal"> <Inheritance
baseType="X3DChildNode"/></p>
<p class="MsoNormal">
<AdditionalInheritance
baseType="X3DBoundedObject"/></p>
<p class="MsoNormal"> <field
name="bboxCenter"</p>
<p class="MsoNormal"> type="SFVec3f"</p>
<p class="MsoNormal">
accessType="initializeOnly"</p>
<p class="MsoNormal"> default="0 0
0"</p>
<p class="MsoNormal">
inheritedFrom="X3DBoundedObject"</p>
<p class="MsoNormal">
description="Bounding box center accompanies
bboxSize and provides an optional hint for bounding
box position offset from origin of local coordinate
system."/></p>
<p class="MsoNormal"> <field
name="bboxDisplay"</p>
<p class="MsoNormal"> type="SFBool"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
default="false"</p>
<p class="MsoNormal">
inheritedFrom="X3DBoundedObject"</p>
<p class="MsoNormal">
description="Whether to display bounding box for
associated geometry, aligned with world
coordinates."/></p>
<p class="MsoNormal"> <field
name="bboxSize"</p>
<p class="MsoNormal"> type="SFVec3f"</p>
<p class="MsoNormal">
accessType="initializeOnly"</p>
<p class="MsoNormal"> default="-1 -1
-1"</p>
<p class="MsoNormal">
inheritedFrom="X3DBoundedObject"</p>
<p class="MsoNormal">
baseType="bboxSizeType"</p>
<p class="MsoNormal">
description="Bounding box size is usually omitted,
and can easily be calculated automatically by an X3D
player at scene-loading time with minimal
computational cost."/></p>
<p class="MsoNormal"> <field
name="center"</p>
<p class="MsoNormal"> type="SFVec3f"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0 0"</p>
<p class="MsoNormal">
description="Translation offset from origin of local
coordinate system."/></p>
<p class="MsoNormal"> <field
name="description"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
description="Author-provided prose that describes
intended purpose of this node."/></p>
<p class="MsoNormal"> <field name="info"</p>
<p class="MsoNormal">
type="MFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
description="Contains metadata keyword=value pairs,
where approved keyword terms are humanoidVersion
authorName authorEmail copyright creationDate
usageRestrictions age gender height and
weight."/></p>
<p class="MsoNormal"> <field name="IS"</p>
<p class="MsoNormal"> type="SFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="NULL"</p>
<p class="MsoNormal">
acceptableNodeTypes="IS"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"/></p>
<p class="MsoNormal"> <field
name="jointBindingPositions"</p>
<p class="MsoNormal"> type="MFVec3f"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0
0"</p>
<p class="MsoNormal">
description="Specifies an array of position values
for each HAnimJoint node in the joints field, in
order, corresponding to each binding pose."/></p>
<p class="MsoNormal"> <field
name="jointBindingRotations"</p>
<p class="MsoNormal">
type="MFRotation"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0 1
0"</p>
<p class="MsoNormal">
description="Specifies an array of rotation values
for each HAnimJoint node in the joints field, in
order, corresponding to each binding pose."/></p>
<p class="MsoNormal"> <field
name="jointBindingScales"</p>
<p class="MsoNormal"> type="MFVec3f"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0
0"</p>
<p class="MsoNormal">
description="Specifies an array of scale values for
each HAnimJoint node in the joints field, in order,
corresponding to each binding pose."/></p>
<p class="MsoNormal"> <field
name="joints"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="HAnimJoint"</p>
<p class="MsoNormal">
description="The joints field contains a list of USE
references for all HAnimJoint node instances found
within the preceding skeleton hierarchy."/></p>
<p class="MsoNormal"> <field name="loa"</p>
<p class="MsoNormal"> type="SFInt32"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="-1"</p>
<p class="MsoNormal">
minInclusive="-1"</p>
<p class="MsoNormal">
maxInclusive="4"</p>
<p class="MsoNormal">
baseType="loaType"</p>
<p class="MsoNormal">
description="Level Of Articulation 0."/></p>
<p class="MsoNormal"> <field
name="metadata"</p>
<p class="MsoNormal"> type="SFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="NULL"</p>
<p class="MsoNormal">
acceptableNodeTypes="X3DMetadataObject"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"</p>
<p class="MsoNormal">
description="Information about this node can be
contained in a MetadataBoolean, MetadataDouble,
MetadataFloat, MetadataInteger, MetadataString or
MetadataSet node."/></p>
<p class="MsoNormal"> <field
name="motions"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="HAnimMotion"</p>
<p class="MsoNormal">
description="Contains any HAnimMotion nodes that can
animate the HAnimHumanoid."/></p>
<p class="MsoNormal"> <field name="name"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
baseType="xs:NMTOKEN"</p>
<p class="MsoNormal">
description="Unique name attribute must be defined
so that each HAnimHumanoid node in a scene can be
identified at run time for animation purposes."/></p>
<p class="MsoNormal"> <field
name="rotation"</p>
<p class="MsoNormal">
type="SFRotation"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0 1
0"</p>
<p class="MsoNormal">
description="Orientation of children relative to
local coordinate system."/></p>
<p class="MsoNormal"> <field
name="scale"</p>
<p class="MsoNormal"> type="SFVec3f"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="1 1
1"</p>
<p class="MsoNormal">
minExclusive="0"</p>
<p class="MsoNormal">
description="Non-uniform x-y-z scale of child
coordinate system, adjusted by center and
scaleOrientation."/></p>
<p class="MsoNormal"> <field
name="scaleOrientation"</p>
<p class="MsoNormal">
type="SFRotation"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0 1
0"</p>
<p class="MsoNormal">
description="Preliminary rotation of coordinate
system before scaling (to allow scaling around
arbitrary orientations)."/></p>
<p class="MsoNormal"> <field
name="segments"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="HAnimSegment"</p>
<p class="MsoNormal">
description="The segments field contains a list of
USE references for all HAnimSegment node instances
found within the preceding skeleton hierarchy."/></p>
<p class="MsoNormal"> <field
name="sites"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="HAnimSite"</p>
<p class="MsoNormal">
description="sites field contains a list
of USE references for all HAnimSite node instances
found within the preceding skeleton hierarchy."/></p>
<p class="MsoNormal"> <field
name="skeletalConfiguration"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
default="BASIC"</p>
<p class="MsoNormal">
description="Models sharing a common skeletal
configuration can share animations and binding
poses."/></p>
<p class="MsoNormal"> <field
name="skeleton"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="HAnimJoint|HAnimSite"</p>
<p class="MsoNormal">
description="List of top-level HAnimJoint and
HAnimSite nodes that create the skeleton
model."/></p>
<p class="MsoNormal"> <field name="skin"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="Group|Transform|Shape|IndexedFaceSet"</p>
<p class="MsoNormal">
description="List of one or more indexed mesh
definitions (such as IndexedFaceSet) that utilize
skinCoord point and skinNormal normal data."/></p>
<p class="MsoNormal"> <field
name="skinBindingCoord"</p>
<p class="MsoNormal"> type="SFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="NULL"</p>
<p class="MsoNormal">
acceptableNodeTypes="X3DCoordinateNode"</p>
<p class="MsoNormal">
description="Array of Coordinate nodes to handle
non-default source pose so that both skin and
skeleton can be in same binding pose."/></p>
<p class="MsoNormal"> <field
name="skinBindingNormal"</p>
<p class="MsoNormal"> type="SFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="NULL"</p>
<p class="MsoNormal">
acceptableNodeTypes="X3DNormalNode"</p>
<p class="MsoNormal">
description="Array of Normal nodes to handle
non-default source pose so that both skin and
skeleton can be in same binding pose."/></p>
<p class="MsoNormal"> <field
name="skinCoord"</p>
<p class="MsoNormal"> type="SFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="NULL"</p>
<p class="MsoNormal">
acceptableNodeTypes="X3DCoordinateNode"</p>
<p class="MsoNormal">
description="Coordinate node utilized by indexed
mesh definitions for skin."/></p>
<p class="MsoNormal"> <field
name="skinNormal"</p>
<p class="MsoNormal"> type="SFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="NULL"</p>
<p class="MsoNormal">
acceptableNodeTypes="X3DNormalNode"</p>
<p class="MsoNormal">
description="Single Normal node utilized by indexed
mesh definitions for skin."/></p>
<p class="MsoNormal"> <field
name="translation"</p>
<p class="MsoNormal"> type="SFVec3f"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="0 0
0"</p>
<p class="MsoNormal">
description="Position of children relative to local
coordinate system."/></p>
<p class="MsoNormal"> <field
name="version"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="2.0"</p>
<p class="MsoNormal">
additionalEnumerationValuesAllowed="false"</p>
<p class="MsoNormal">
simpleType="hanimVersionChoices"</p>
<p class="MsoNormal">
baseType="xs:NMTOKEN"</p>
<p class="MsoNormal">
description="HAnimHumanoid version, where value is
1."></p>
<p class="MsoNormal"> <enumeration
value="1.0"</p>
<p class="MsoNormal">
appinfo="International standard HAnim 19774 version
1 approved by ISO in 2006. Note that HAnim version
2.0 has more capabilties, while version 1.0 includes
several small incompatibilities. Since no other
versions were formally approved, no other values are
allowed for earlier HAnim versions."</p>
<p class="MsoNormal">
documentation="<a
href="https://www.web3d.org/documents/specifications/19774/V1.0"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774/V1.0</a>"
/></p>
<p class="MsoNormal"> <enumeration
value="2.0"</p>
<p class="MsoNormal">
appinfo="Revised standard HAnim 19774 version 2
(parts 1 and 2) were approved by ISO in November
2019, published by Web3D Consortium May 2020."</p>
<p class="MsoNormal">
documentation="<a
href="https://www.web3d.org/documents/specifications/19774/V2.0"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774/V2.0</a>"
/></p>
<p class="MsoNormal"> </field></p>
<p class="MsoNormal"> <field
name="viewpoints"</p>
<p class="MsoNormal"> type="MFNode"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
acceptableNodeTypes="HAnimSite"</p>
<p class="MsoNormal">
description="List of HAnimSite nodes containing
Viewpoint nodes that appear in the skeleton model,
usually as USE node references."/></p>
<p class="MsoNormal"> <field
name="visible"</p>
<p class="MsoNormal"> type="SFBool"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal"> default="true"</p>
<p class="MsoNormal">
inheritedFrom="X3DBoundedObject"</p>
<p class="MsoNormal">
description="Whether or not renderable content
within this node is visually displayed."/></p>
<p class="MsoNormal"> <field name="DEF"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"</p>
<p class="MsoNormal">
baseType="xs:ID"</p>
<p class="MsoNormal">
description="DEF defines a unique ID name for this
node, referenceable by other nodes."/></p>
<p class="MsoNormal"> <field name="USE"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"</p>
<p class="MsoNormal">
baseType="xs:IDREF"</p>
<p class="MsoNormal">
description="USE means reuse an already DEF-ed node
ID, excluding all child nodes and all other
attributes (except for containerField, which can
have a different value)."/></p>
<p class="MsoNormal"> <field
name="class"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"</p>
<p class="MsoNormal">
baseType="xs:NMTOKENS"</p>
<p class="MsoNormal">
description="The class attribute on each X3D node
and statement is a space-separated list of classes,
reserved for use by Cascading Style Sheets (CSS) and
XML stylesheets."/></p>
<p class="MsoNormal"> <field name="id"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"</p>
<p class="MsoNormal">
baseType="xs:NMTOKEN"</p>
<p class="MsoNormal">
description="The id attribute on each X3D node and
statement is considered a unique identifier when
used as part of an encompassing HTML/DOM
context."/></p>
<p class="MsoNormal"> <field
name="style"</p>
<p class="MsoNormal">
type="SFString"</p>
<p class="MsoNormal">
accessType="inputOutput"</p>
<p class="MsoNormal">
inheritedFrom="X3DNode"</p>
<p class="MsoNormal">
description="The style attribute on each X3D node
and statement provides an inline block of CSS source
for element styling, reserved for use by Cascading
Style Sheets (CSS) and XML stylesheets."/></p>
<p class="MsoNormal"> <containerField
default="children" type="xs:NMTOKEN"/></p>
<p class="MsoNormal"> <ContentModel></p>
<p class="MsoNormal">
<GroupContentModel name="ChildContentModelCore"
minOccurs="0"/></p>
<p class="MsoNormal">
<NodeContentModel name="HAnimJoint"
minOccurs="0" maxOccurs="unbounded"/></p>
<p class="MsoNormal">
<NodeContentModel name="HAnimSegment"
minOccurs="0" maxOccurs="unbounded"/></p>
<p class="MsoNormal">
<NodeContentModel name="HAnimSite" minOccurs="0"
maxOccurs="unbounded"/></p>
<p class="MsoNormal">
<NodeContentModel name="HAnimMotion"
minOccurs="0" maxOccurs="unbounded"/></p>
<p class="MsoNormal">
<NodeContentModel name="Group"/></p>
<p class="MsoNormal">
<NodeContentModel name="Transform"/></p>
<p class="MsoNormal">
<NodeContentModel name="Shape"/></p>
<p class="MsoNormal">
<NodeContentModel name="IndexedFaceSet"/></p>
<p class="MsoNormal">
<NodeContentModel name="Coordinate"/></p>
<p class="MsoNormal">
<NodeContentModel name="CoordinateDouble"/></p>
<p class="MsoNormal">
<NodeContentModel name="Normal" minOccurs="0"
maxOccurs="2"/></p>
<p class="MsoNormal">
<NodeContentModel name="ProtoInstance"
minOccurs="0" maxOccurs="unbounded"/></p>
<p class="MsoNormal"> </ContentModel></p>
<p class="MsoNormal">
</InterfaceDefinition></p>
<p class="MsoNormal"> </ConcreteNode></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Regarding python, I checked the
conversion of JinLOA4.x3d to JinLOA4.py</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Stylesheet X3dToPython.xstl
seemed to work OK </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">
HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> skeleton=[</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">
HAnimJoint(DEF='hanim_humanoid_root',center=(0,36.709999,-0.707600),name='humanoid_root',stiffness=[0,0,0],</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">but then got a self-validation
error by the JinLOA4.py python program,
</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">create python:</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d
processing with X3dToPython stylesheet...</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py
self-validation tests...</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">validate python:</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">x3d.py package loaded, have fun with
X3D Graphics!</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">Traceback (most recent call last):</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> File "C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py",
line 169, in <module></span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">
HAnimJoint(DEF='hanim_l_tarsal_distal_interphalangeal_1',center=(2.761,0.539400,5.125),name='l_tarsal_distal_interphalangeal_1',stiffness=[0,0,0],</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> File "C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\stylesheets\python\x3d\x3d.py",
line 43724, in __init__</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> self.stiffness = stiffness</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> File "C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\stylesheets\python\x3d\x3d.py",
line 43873, in stiffness</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> assertValidSFVec3f(stiffness)</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> File "C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\stylesheets\python\x3d\x3d.py",
line 3953, in assertValidSFVec3f</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> raise X3DTypeError(str(value)[:100]
+ ', type=' + str(type(value)) + ' is not a valid
Python tuple for SFVec3f')</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">x3d.X3DTypeError: [0, 0, 0],
type=<class 'list'> is not a valid Python
tuple for SFVec3f</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">Result: 1</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Note how <span
style="font-size:10pt;font-family:"Courier
New"">
stiffness=[0,0,0]</span>was given as a list in
brackets, rather than a tuple value in parentheses
<span
style="font-size:10pt;font-family:"Courier
New"">stiffness=(0,0,0)</span> as might be
expected for SFVec3f, and so this is a useful
diagnostic.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">However the actual specification
type for stiffness is MFFloat. (This was a mantis
issue, might we tighten it to SFVec3f, but decided
to keep it MFFloat in case more-advanced kinematics
engines were someday of interest.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">* <a
href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimJoint"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimJoint</a></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">26.3.3 HAnimJoint</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">HAnimJoint : X3DGroupingNode {</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">[…]</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> MFFloat [in,out] stiffness
[0 0 0] [0,1]</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Applied change to X3D DTD, X3D
XML Schema and again autogenerated X3DUOM and x3d.py
and X3D Ontology to match.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">23 DEC 2021, carlson brutzman</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">- restore type of HAnimJoint stiffness
field as MFFloat (vice SFVec3f) to match</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> specification, since more-advanced
kinematics engines might someday hold interest.</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">This fixed the stiffness error.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">However, next got a surprising
conversion error (which might have been what you
experienced originally):</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">=====================</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">create python:</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d
processing with X3dToPython stylesheet...</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py
self-validation tests...</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">validate python:</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">x3d.py package loaded, have fun with
X3D Graphics!Traceback (most recent call last):</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> File "C:\x3d-code\<a
href="http://www.web3d.org" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true">www.web3d.org</a>\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py",
line 50, in <module></span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">
HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">TypeError: HAnimHumanoid.__init__() got
an unexpected keyword argument 'value'</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">Result: 1</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">=====================</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal">Which apparently was on line
1950,</p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">
value=MetadataSet(name='HAnimHumanoid.info',reference='<a
href="https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid"
target="_blank" style="font-family:"Courier
New"" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid</a>',
</span>etc.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">This conversion should have been
<span
style="font-size:10pt;font-family:"Courier
New"">
metadata=MetadataSet</span> etc. Looks like the
field name for the HAnimHumanoid MetadataSet was not
specified incorrectly, the automatic conversion by
X3dTidy did not apply correct containerField value.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I have added a rule to
X3dTidy.xslt that looks for this case (for either
representation, X3D3 or X3D4) and corrects it. I
have added a similar diagnostic rule to
X3dSchematron checks.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">All affected HAnimHumanoid scenes
have been updated and are now getting compiled
correctly by Python.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">All changes checked into
subversion. Further regression testing continuing,
website uploads to follow.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">So again thanks for exposing this
issue. Pretty complex but resolvable. Once again
the strict nature of Python aided us in achieving
high Quality Assurance (QA) for X3D.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Happy holidays with X3D! 8)<span
style="font-size:10pt;font-family:"Courier
New""></span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New""> </span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">all the best, Don</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">-- </span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">Don Brutzman Naval Postgraduate
School, Code USW/Br <a
href="mailto:brutzman@nps.edu" target="_blank"
style="font-family:"Courier New""
moz-do-not-send="true"
class="moz-txt-link-freetext">brutzman@nps.edu</a></span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">Watkins 270, MOVES Institute, Monterey
CA 93943-5000 USA +1.831.656.2149</span></p>
<p class="MsoNormal"><span
style="font-size:10pt;font-family:"Courier
New"">X3D graphics, virtual worlds, navy
robotics https://</span>
<span
style="font-size:10pt;font-family:"Courier
New""><a
href="http://faculty.nps.edu/brutzman"
target="_blank" style="font-family:"Courier
New"" moz-do-not-send="true">faculty.nps.edu/brutzman</a></span></p>
</div>
<p class="MsoNormal"> </p>
<div>
<div style="border-style:solid none
none;border-top-width:1pt;padding:3pt 0in
0in;border-top-color:rgb(225,225,225)">
<p class="MsoNormal"><b>From:</b> John Carlson <<a
href="mailto:yottzumm@gmail.com" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">yottzumm@gmail.com</a>>
<br>
<b>Sent:</b> Wednesday, December 22, 2021 12:44 PM<br>
<b>To:</b> Brutzman, Donald (Don) (CIV) <<a
href="mailto:brutzman@nps.edu" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">brutzman@nps.edu</a>>;
X3D Graphics public mailing list <<a
href="mailto:x3d-public@web3d.org"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">x3d-public@web3d.org</a>><br>
<b>Subject:</b> Re: HAnim, X3dToPython.xslt
X3dToJson.xslt Upgrade X3DUOM?</p>
</div>
</div>
<p class="MsoNormal"> </p>
<div>
<div>
<p class="MsoNormal">I believe I checked the right
standard, here:</p>
</div>
<div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal"><a
href="https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html</a></p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<p class="MsoNormal"> And neither value or metadata
is a field????</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Seems a bit strange.</p>
</div>
<div>
<p class="MsoNormal"> </p>
<div>
<div>
<p class="MsoNormal">On Wed, Dec 22, 2021 at
2:20 PM John Carlson <<a
href="mailto:yottzumm@gmail.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">yottzumm@gmail.com</a>>
wrote:</p>
</div>
<blockquote style="border-style:none none none
solid;border-left-width:1pt;padding:0in 0in 0in
6pt;margin-left:4.8pt;margin-right:0in;border-left-color:rgb(204,204,204)">
<div>
<p class="MsoNormal">hoping to see value field
added to HAnimHumanoid in X3DUOM, or some
notice that the package generating
stylesheets are not up-to-date.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Also, check to make sure
stiffness is assigned the right data
structure (between list and tuple). And
no, iOS, I do not want “Tupperware” for the
second time. We need more women
mathematicians (sorry for any
stereotyping). On that subject, I wonder
what coordinate system crocheted hats use?</p>
</div>
<div>
<p class="MsoNormal"> </p>
<div>
<div>
<p class="MsoNormal">On Mon, Dec 20, 2021
at 3:17 AM John Carlson <<a
href="mailto:yottzumm@gmail.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">yottzumm@gmail.com</a>>
wrote:</p>
</div>
<blockquote style="border-style:none none
none
solid;border-left-width:1pt;padding:0in
0in 0in
6pt;margin-left:4.8pt;margin-right:0in;border-left-color:rgb(204,204,204)">
<div>
<p>Okay, now I seem to be having a
similar problem between my python
serializer, X3dToPython.xslt, and
probably other serialized stuff. I
couldn't figure out how to fix the
stiffness issue in X3dToPython.xslt,
but hand-editing saved that on this
particular python file
(python/net/x3djsonld/data/JinLOA4.py).
Other JinLOA's still have lists with
Don's generator.</p>
<p>I believe the main change I am
dealing with is metadata vs value
containerFields. See JSON diff
below. I'm not seeing relevant
changes to X3D JSON schema 4.0. Does
something need to be upgraded in
X3DUOM or X3D JSON schema? I'm not
seeing a value field in HAnimHumanoid.</p>
<p><b><span
style="font-family:"Courier
New";background-color:white;color:rgb(84,84,255)">~/X3DJSONLD/src/main/python/net/coderextreme/data</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">$
python JinLOA4.py </span><span
style="font-family:"Courier
New""><br>
Traceback (most recent call last): <br>
File
"/home/coderextreme/X3DJSONLD/src/main/python/net/coderextreme/data/JinLOA4.py",
line 148, in <module>
<br>
HAnimHumanoid23.setValue(MetadataSet24) <br>
AttributeError:
'org.web3d.x3d.jsail.HAnim.HAnimHumanoid'
object has no attribute 'setValue'.
Did you mean: 'setName'?
<br>
<b style="font-family:"Courier
New""><span
style="font-family:"Courier
New";background-color:white;color:rgb(84,84,255)">~/X3DJSONLD/src/main/python/net/x3djsonld/data</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">$
python JinLOA4.py </span><br>
x3d.py package loaded, have fun with
X3D Graphics! <br>
Traceback (most recent call last): <br>
File
"/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/JinLOA4.py",
line 50, in <module>
<br>
HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
<br>
TypeError: HAnimHumanoid.__init__()
got an unexpected keyword argument
'value'</span></p>
<p> </p>
<p> </p>
<p><br>
<b><span
style="font-family:"Courier
New";background-color:white;color:rgb(84,84,255)">~/X3DJSONLD/src/main/data</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">$
git diff JinLOA4.json
</span><span
style="font-family:"Courier
New""><br>
<b style="font-family:"Courier
New""><span
style="font-family:"Courier
New";background-color:white;color:black">diff --git
a/src/main/data/JinLOA4.json
b/src/main/data/JinLOA4.json</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<b style="font-family:"Courier
New""><span
style="font-family:"Courier
New";background-color:white;color:black">index c970a652a..e1930f4cf
100644</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<b style="font-family:"Courier
New""><span
style="font-family:"Courier
New";background-color:white;color:black">---
a/src/main/data/JinLOA4.json</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<b style="font-family:"Courier
New""><span
style="font-family:"Courier
New";background-color:white;color:black">+++
b/src/main/data/JinLOA4.json</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,178)">@@
-78,7 +78,7 @@</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
}, <br>
{ <br>
"@name":"translated", <br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(178,24,24)">-
"@content":"14 October
2021"</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,24)">+
"@content":"20 December
2021"</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
}, <br>
{ <br>
"@name":"generator", <br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,178)">@@
-116,7 +116,7 @@</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
"@loa":4, <br>
"@scale":[0.0225,0.0225,0.0225], <br>
"@version":"2.0", <br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(178,24,24)">-
"-metadata":</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,24)">+
"-value":[</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
{ "MetadataSet": <br>
{ <br>
"@name":"HAnimHumanoid.info", <br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,178)">@@
-160,7 +160,8 @@</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
} <br>
] <br>
} <br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(178,24,24)">-
},</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,24)">+
}</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
<span
style="font-family:"Courier
New";background-color:white;color:rgb(24,178,24)">+
],</span><span
style="font-family:"Courier
New";background-color:white;color:black">
</span><br>
"-skeleton":[ <br>
{ "HAnimJoint": <br>
{<br>
<br>
===================</span></p>
<p><span
style="font-family:"Courier
New"">Validating JSON against
schema:</span></p>
<p><b><span
style="font-family:"Courier
New";background-color:white;color:rgb(84,84,255)">~/X3DJSONLD/src/main/schema</span></b><span
style="font-family:"Courier
New";background-color:white;color:black">$
node ~/x3dvalidate/x3dvalidate.js
../data/JinLOA4.json </span><span
style="font-family:"Courier
New""><br>
Loading schema <br>
Parsing schema <br>
Adding schema <br>
Schema 4.0 added <br>
Schema 4.0 compiled <br>
================================================================================
<br>
File: ../data/JinLOA4.json <br>
Error reading ../data/JinLOA4.json <br>
keyword: required <br>
instancePath:
/X3D/Scene/-children/3/HAnimHumanoid
<br>
message: must have required property
@USE <br>
params: {"missingProperty":"@USE"} <br>
file: ../data/JinLOA4.json <br>
version: 4.0 <br>
<br>
keyword: additionalProperties <br>
instancePath:
/X3D/Scene/-children/3/HAnimHumanoid
<br>
message: must NOT have additional
properties <br>
params:
{"additionalProperty":"-value"} <br>
file: ../data/JinLOA4.json <br>
version: 4.0 <br>
<br>
keyword: oneOf <br>
instancePath:
/X3D/Scene/-children/3/HAnimHumanoid
<br>
message: must match exactly one
schema in "oneOf" <br>
params: {"passingSchemas":null} <br>
file: ../data/JinLOA4.json <br>
version: 4.0</span></p>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</body>
</html>