[x3d-public] HAnim, X3dToPython.xslt X3dToJson.xslt Upgrade X3DUOM? HAnimHumanoid explained, problem identified, corrections applied

John Carlson yottzumm at gmail.com
Thu Dec 23 22:39:34 PST 2021


I think there's still a error in X3dToJson.xslt, conversion from XML to 
JSON produces

[snippet]

{ "HAnimHumanoid":
             {
               "@name":"JinLOA4",
               "@DEF":"hanim_JinLOA4",
               "@loa":4,
               "@scale":[0.0225,0.0225,0.0225],
               "@version":"2.0",
_*              "-value":[ *_
                 { "MetadataSet":
                   {              "-value":[


I believe this affects all my downstream serialzers.

I will double check that I am using the stylesheet.

John

On 12/23/21 13:50, Brutzman, Donald (Don) (CIV) wrote:
>
> 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.
>
> More precise URL for HAnimHumanoid in HAnim v2.0 specification is
>
>   * Part 1: Humanoid animation (HAnim) architecture, Clause 6 Object
>     Interfaces, 6.2 Humanoid
>   * https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/Obje
>     Part 1:  Humanoid animation (HAnim)
>     architecturectInterfaces.html#Humanoid
>
> 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.
>
> Corresponding X3D Architecture specification is
>
>   * X3D4 Part 1: Architecture and base components, 26 Humanoid
>     Animation (HAnim) component, clause 26.3.2 HAnimHumanoid
>   * https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid
>
> HAnimHumanoid : X3DChildNode, X3DBoundedObject {
>
>   SFVec3f    [in,out] center                0 0 0    (-∞,∞)
>
>   SFString   [in,out] description           ""
>
>   SFBool     [in,out] bboxDisplay           FALSE
>
>   SFBool     [in,out] visible               TRUE
>
>   MFString   [in,out] info                  []
>
>   MFVec3f    [in,out] jointBindingPositions []       (-∞,∞)
>
>   MFRotation [in,out] jointBindingRotations []       (-∞,∞)|[-1,1]
>
>   MFVec3f    [in,out] jointBindingScales    []       (0,∞)
>
>   MFNode     [in,out] joints                []       [HAnimJoint]
>
>   SFInt32    [in,out] loa                   -1       [-1,4]
>
>   SFNode     [in,out] metadata              NULL     [X3DMetadataObject]
>
>   MFNode     [in,out] motions               []       [HAnimMotion]
>
>   MFBool     [in,out] motionsEnabled        []
>
>   SFString   [in,out] name                  ""
>
>   SFRotation [in,out] rotation              0 0 1 0  (-∞,∞)|[-1,1]
>
>   SFVec3f    [in,out] scale                 1 1 1    (0,∞)
>
>   SFRotation [in,out] scaleOrientation      0 0 1 0  (-∞,∞)|[-1,1]
>
>   MFNode     [in,out] segments              []       [HAnimSegment]
>
>   MFNode     [in,out] sites                 []       [HAnimSite]
>
>   SFString   [in,out] skeletalConfiguration "BASIC"
>
>   MFNode     [in,out] skeleton              []       [HAnimJoint, 
> HAnimSite]
>
>   MFNode     [in,out] skin                  [] [IndexedFaceSet, 
> X3DGroupingNode, Shape][IndexedFaceSet, IndexedFanSet, IndexedQuadSet, 
> IndexedTriangleSet, IndexedTriangleStripSet]
>
>   SFNode     [in,out] skinBindingCoord      NULL     [X3DCoordinateNode]
>
>   SFNode     [in,out] skinBindingNormal     NULL     [X3DNormalNode]
>
>   SFNode     [in,out] skinCoord             NULL     [X3DCoordinateNode]
>
>   SFNode     [in,out] skinNormal            NULL     [X3DNormalNode]
>
>   SFVec3f    [in,out] translation           0 0 0    (-∞,∞)
>
>   SFString   [in,out] version               ""
>
>   MFNode     [in,out] viewpoints            []       [HAnimSite]
>
>   SFVec3f    [] bboxCenter            0 0 0    (-∞,∞)
>
>   SFVec3f    [] bboxSize              -1 -1 -1 [0,∞) or −1 −1 −1
>
> }
>
> As you can see, this node signature does include /metadata/ field.
>
> As you can also see, there is no /value/ field.
>
> 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:
>
>   * Metadata values from the /info/ field can be equivalently encoded
>     via MetadataSet containing related X3DMetadataObject nodes.
>
> Conversions are provided by X3dTidy cleanup stylesheet, and converted 
> examples online. (Not finding this information in X3D Scene Authoring 
> Hints, will add it.)
>
>   * HumanoidAnimation X3D Examples Archive
>   * https://www.web3d.org/x3d/content/examples/HumanoidAnimation
>
>   * X3D Example Archives: Humanoid Animation, Characters, Jin LOA 4
>   * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html
>   * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.html#hanim_JinLOA4
>
> <HAnimHumanoid DEF='hanim_JinLOA4' loa='4' name='JinLOA4' scale='0.0225 
> 0.0225 0.0225'>
>
>   <MetadataSet name='HAnimHumanoid.info' reference='https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid' containerField='metadata'> 
>
>
>     <MetadataString containerField='value' name='authorName' value='Jin 
> Hoon Lee and Min Joo Lee, Chul Hee Jung and Myeong Won Lee'/>
> <MetadataString containerField='value' name='authorEmail' value='myeongwonlee at gmail.com'/> 
>
>     <MetadataString containerField='value' name='creationDate' value='31 
> March 2011'/>
>     <MetadataString containerField='value' name='gender' value='female'/>
>     <MetadataFloat containerField='value' name='height' value='1.5'/>
>     <MetadataString containerField='value' name='humanoidVersion' value='"2.0"'/> 
>
>
>   </MetadataSet>
>   <HAnimJoint DEF='hanim_humanoid_root' center='0 36.709999 
> -0.707600' containerField='skeleton' name='humanoid_root'>
>
> 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.)
>
>   * X3D Tooltips HAnimHumanoid
>   * https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid
>
> Now checking X3D Unified Object Model (X3DUOM) 
> X3dUnifiedObjectModel-4.0.xml
>
>   * https://www.web3d.org/specifications
>   * https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml
>
>       <ConcreteNode name="HAnimHumanoid">
>
>          <InterfaceDefinition 
> specificationUrl=”https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid”
>
>                               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.">
>
>             <componentInfo name="HAnim" level="1"/>
>
>             <Inheritance baseType="X3DChildNode"/>
>
>             <AdditionalInheritance baseType="X3DBoundedObject"/>
>
>             <field name="bboxCenter"
>
>                    type="SFVec3f"
>
> accessType="initializeOnly"
>
>                    default="0 0 0"
>
> inheritedFrom="X3DBoundedObject"
>
>                    description="Bounding box center accompanies 
> bboxSize and provides an optional hint for bounding box position 
> offset from origin of local coordinate system."/>
>
>             <field name="bboxDisplay"
>
>                    type="SFBool"
>
> accessType="inputOutput"
>
>                    default="false"
>
> inheritedFrom="X3DBoundedObject"
>
>                    description="Whether to display bounding box for 
> associated geometry, aligned with world coordinates."/>
>
>             <field name="bboxSize"
>
>                    type="SFVec3f"
>
> accessType="initializeOnly"
>
>                    default="-1 -1 -1"
>
> inheritedFrom="X3DBoundedObject"
>
> baseType="bboxSizeType"
>
>                    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."/>
>
>             <field name="center"
>
>                    type="SFVec3f"
>
> accessType="inputOutput"
>
>                   default="0 0 0"
>
> description="Translation offset from origin of local coordinate system."/>
>
>             <field name="description"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
> description="Author-provided prose that describes intended purpose of 
> this node."/>
>
>             <field name="info"
>
>                    type="MFString"
>
> accessType="inputOutput"
>
>                    description="Contains metadata keyword=value pairs, 
> where approved keyword terms are humanoidVersion authorName 
> authorEmail copyright creationDate usageRestrictions age gender height 
> and weight."/>
>
>             <field name="IS"
>
>                    type="SFNode"
>
> accessType="inputOutput"
>
>                    default="NULL"
>
> acceptableNodeTypes="IS"
>
> inheritedFrom="X3DNode"/>
>
>             <field name="jointBindingPositions"
>
>                    type="MFVec3f"
>
> accessType="inputOutput"
>
>                    default="0 0 0"
>
>                    description="Specifies an array of position values 
> for each HAnimJoint node in the joints field, in order, corresponding 
> to each binding pose."/>
>
>             <field name="jointBindingRotations"
>
>                    type="MFRotation"
>
> accessType="inputOutput"
>
>                    default="0 0 1 0"
>
>                    description="Specifies an array of rotation values 
> for each HAnimJoint node in the joints field, in order, corresponding 
> to each binding pose."/>
>
>             <field name="jointBindingScales"
>
>                    type="MFVec3f"
>
> accessType="inputOutput"
>
>                    default="0 0 0"
>
>                    description="Specifies an array of scale values for 
> each HAnimJoint node in the joints field, in order, corresponding to 
> each binding pose."/>
>
>             <field name="joints"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="HAnimJoint"
>
>                    description="The joints field contains a list of 
> USE references for all HAnimJoint node instances found within the 
> preceding skeleton hierarchy."/>
>
>             <field name="loa"
>
>                    type="SFInt32"
>
> accessType="inputOutput"
>
>                    default="-1"
>
>                    minInclusive="-1"
>
>                    maxInclusive="4"
>
>                    baseType="loaType"
>
>                    description="Level Of Articulation 0."/>
>
>             <field name="metadata"
>
>                    type="SFNode"
>
> accessType="inputOutput"
>
>                    default="NULL"
>
> acceptableNodeTypes="X3DMetadataObject"
>
>   inheritedFrom="X3DNode"
>
> description="Information about this node can be contained in a 
> MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, 
> MetadataString or MetadataSet node."/>
>
>             <field name="motions"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="HAnimMotion"
>
>                    description="Contains any HAnimMotion nodes that 
> can animate the HAnimHumanoid."/>
>
>             <field name="name"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
>                    baseType="xs:NMTOKEN"
>
>                    description="Unique name attribute must be defined 
> so that each HAnimHumanoid node in a scene can be identified at run 
> time for animation purposes."/>
>
>             <field name="rotation"
>
>                    type="SFRotation"
>
>      accessType="inputOutput"
>
>                    default="0 0 1 0"
>
> description="Orientation of children relative to local coordinate 
> system."/>
>
>             <field name="scale"
>
>                    type="SFVec3f"
>
> accessType="inputOutput"
>
>                    default="1 1 1"
>
>                    minExclusive="0"
>
> description="Non-uniform x-y-z scale of child coordinate system, 
> adjusted by center and scaleOrientation."/>
>
>             <field name="scaleOrientation"
>
>                    type="SFRotation"
>
> accessType="inputOutput"
>
>                    default="0 0 1 0"
>
> description="Preliminary rotation of coordinate system before scaling 
> (to allow scaling around arbitrary orientations)."/>
>
>             <field name="segments"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="HAnimSegment"
>
>                    description="The segments field contains a list of 
> USE references for all HAnimSegment node instances found within the 
> preceding skeleton hierarchy."/>
>
>             <field name="sites"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="HAnimSite"
>
>                    description="sites field contains a list of USE 
> references for all HAnimSite node instances found within the preceding 
> skeleton hierarchy."/>
>
>             <field name="skeletalConfiguration"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
>                    default="BASIC"
>
>                    description="Models sharing a common skeletal 
> configuration can share animations and binding poses."/>
>
>             <field name="skeleton"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="HAnimJoint|HAnimSite"
>
>                    description="List of top-level HAnimJoint and 
> HAnimSite nodes that create the skeleton model."/>
>
>             <field name="skin"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="Group|Transform|Shape|IndexedFaceSet"
>
>                    description="List of one or more indexed mesh 
> definitions (such as IndexedFaceSet) that utilize skinCoord point and 
> skinNormal normal data."/>
>
>             <field name="skinBindingCoord"
>
>                    type="SFNode"
>
> accessType="inputOutput"
>
>                    default="NULL"
>
> acceptableNodeTypes="X3DCoordinateNode"
>
>                    description="Array of Coordinate nodes to handle 
> non-default source pose so that both skin and skeleton can be in same 
> binding pose."/>
>
>             <field name="skinBindingNormal"
>
>                    type="SFNode"
>
> accessType="inputOutput"
>
>                    default="NULL"
>
> acceptableNodeTypes="X3DNormalNode"
>
>                    description="Array of Normal nodes to handle 
> non-default source pose so that both skin and skeleton can be in same 
> binding pose."/>
>
>             <field name="skinCoord"
>
>                    type="SFNode"
>
> accessType="inputOutput"
>
>                    default="NULL"
>
> acceptableNodeTypes="X3DCoordinateNode"
>
> description="Coordinate node utilized by indexed mesh definitions for 
> skin."/>
>
>             <field name="skinNormal"
>
>                    type="SFNode"
>
> accessType="inputOutput"
>
>                    default="NULL"
>
> acceptableNodeTypes="X3DNormalNode"
>
>                    description="Single Normal node utilized by indexed 
> mesh definitions for skin."/>
>
>             <field name="translation"
>
>                    type="SFVec3f"
>
> accessType="inputOutput"
>
>                    default="0 0 0"
>
>                    description="Position of children relative to local 
> coordinate system."/>
>
>             <field name="version"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
>                    default="2.0"
>
> additionalEnumerationValuesAllowed="false"
>
> simpleType="hanimVersionChoices"
>
>                    baseType="xs:NMTOKEN"
>
>  description="HAnimHumanoid version, where value is 1.">
>
>                <enumeration value="1.0"
>
> 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."
>
> documentation="https://www.web3d.org/documents/specifications/19774/V1.0" 
> />
>
>                <enumeration value="2.0"
>
> appinfo="Revised standard HAnim 19774 version 2 (parts 1 and 2) were 
> approved by ISO in November 2019, published by Web3D Consortium May 2020."
>
> documentation="https://www.web3d.org/documents/specifications/19774/V2.0" 
> />
>
>             </field>
>
>             <field name="viewpoints"
>
>                    type="MFNode"
>
> accessType="inputOutput"
>
> acceptableNodeTypes="HAnimSite"
>
>                    description="List of HAnimSite nodes containing 
> Viewpoint nodes that appear in the skeleton model, usually as USE node 
> references."/>
>
>             <field name="visible"
>
>                    type="SFBool"
>
> accessType="inputOutput"
>
>                    default="true"
>
> inheritedFrom="X3DBoundedObject"
>
>                    description="Whether or not renderable content 
> within this node is visually displayed."/>
>
>             <field name="DEF"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
> inheritedFrom="X3DNode"
>
>                    baseType="xs:ID"
>
>                    description="DEF defines a unique ID name for this 
> node, referenceable by other nodes."/>
>
>             <field name="USE"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
> inheritedFrom="X3DNode"
>
>                    baseType="xs:IDREF"
>
>                    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)."/>
>
>             <field name="class"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
> inheritedFrom="X3DNode"
>
>                    baseType="xs:NMTOKENS"
>
>                    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."/>
>
>             <field name="id"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
> inheritedFrom="X3DNode"
>
>                    baseType="xs:NMTOKEN"
>
>                    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."/>
>
>             <field name="style"
>
>                    type="SFString"
>
> accessType="inputOutput"
>
> inheritedFrom="X3DNode"
>
>                    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."/>
>
>             <containerField default="children" type="xs:NMTOKEN"/>
>
>             <ContentModel>
>
>                <GroupContentModel name="ChildContentModelCore" 
> minOccurs="0"/>
>
>                <NodeContentModel name="HAnimJoint" minOccurs="0" 
> maxOccurs="unbounded"/>
>
>                <NodeContentModel name="HAnimSegment" minOccurs="0" 
> maxOccurs="unbounded"/>
>
>                <NodeContentModel name="HAnimSite" minOccurs="0" 
> maxOccurs="unbounded"/>
>
>                <NodeContentModel name="HAnimMotion" minOccurs="0" 
> maxOccurs="unbounded"/>
>
>                <NodeContentModel name="Group"/>
>
>                <NodeContentModel name="Transform"/>
>
>                <NodeContentModel name="Shape"/>
>
>                <NodeContentModel name="IndexedFaceSet"/>
>
>                <NodeContentModel name="Coordinate"/>
>
>                <NodeContentModel name="CoordinateDouble"/>
>
>                <NodeContentModel name="Normal" minOccurs="0" 
> maxOccurs="2"/>
>
>                <NodeContentModel name="ProtoInstance" minOccurs="0" 
> maxOccurs="unbounded"/>
>
>             </ContentModel>
>
>          </InterfaceDefinition>
>
>       </ConcreteNode>
>
> Regarding python, I checked the conversion of JinLOA4.x3d to JinLOA4.py
>
> Stylesheet X3dToPython.xstl seemed to work OK
>
> HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
>
>       skeleton=[
>
> HAnimJoint(DEF='hanim_humanoid_root',center=(0,36.709999,-0.707600),name='humanoid_root',stiffness=[0,0,0],
>
> but then got a self-validation error by the JinLOA4.py python program,
>
> create python:
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d 
> processing with X3dToPython stylesheet...
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py 
> self-validation tests...
>
> validate python:
>
> x3d.py package loaded, have fun with X3D Graphics!
>
> Traceback (most recent call last):
>
>   File 
> "C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py", 
> line 169, in <module>
>
> 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],
>
>   File "C:\x3d-code\www.web3d.org\x3d\stylesheets\python\x3d\x3d.py", 
> line 43724, in __init__
>
>     self.stiffness = stiffness
>
>   File "C:\x3d-code\www.web3d.org\x3d\stylesheets\python\x3d\x3d.py", 
> line 43873, in stiffness
>
>     assertValidSFVec3f(stiffness)
>
>   File "C:\x3d-code\www.web3d.org\x3d\stylesheets\python\x3d\x3d.py", 
> line 3953, in assertValidSFVec3f
>
>     raise X3DTypeError(str(value)[:100] + ', type=' + str(type(value)) 
> + ' is not a valid Python tuple for SFVec3f')
>
> x3d.X3DTypeError: [0, 0, 0], type=<class 'list'> is not a valid Python 
> tuple for SFVec3f
>
> Result: 1
>
> Note how stiffness=[0,0,0]was given as a list in brackets, rather than 
> a tuple value in parentheses stiffness=(0,0,0) as might be expected 
> for SFVec3f, and so this is a useful diagnostic.
>
> 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.
>
> * 
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimJoint
>
> 26.3.3 HAnimJoint
>
> HAnimJoint : X3DGroupingNode {
>
> […]
>
>   MFFloat    [in,out] stiffness        [0 0 0] [0,1]
>
> Applied change to X3D DTD, X3D XML Schema and again autogenerated 
> X3DUOM and x3d.py and X3D Ontology to match.
>
> 23 DEC 2021, carlson brutzman
>
> - restore type of HAnimJoint stiffness field as MFFloat (vice SFVec3f) 
> to match
>
>   specification, since more-advanced kinematics engines might someday 
> hold interest.
>
> This fixed the stiffness error.
>
> However, next got a surprising conversion error (which might have been 
> what you experienced originally):
>
> =====================
>
> create python:
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d 
> processing with X3dToPython stylesheet...
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py 
> self-validation tests...
>
> validate python:
>
> x3d.py package loaded, have fun with X3D Graphics!Traceback (most 
> recent call last):
>
>   File 
> "C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py", 
> line 50, in <module>
>
> HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
>
> TypeError: HAnimHumanoid.__init__() got an unexpected keyword argument 
> 'value'
>
> Result: 1
>
> =====================
>
> Which apparently was on line 1950,
>
> value=MetadataSet(name='HAnimHumanoid.info',reference='https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid',etc.
>
> This conversion should have been metadata=MetadataSet 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.
>
> 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.
>
> All affected HAnimHumanoid scenes have been updated and are now 
> getting compiled correctly by Python.
>
> All changes checked into subversion. Further regression testing 
> continuing, website uploads to follow.
>
> 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.
>
> Happy holidays with X3D!   8)
>
> all the best, Don
>
> -- 
>
> Don Brutzman  Naval Postgraduate School, Code USW/Br brutzman at nps.edu
>
> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    
> +1.831.656.2149
>
> X3D graphics, virtual worlds, navy robotics https:// 
> faculty.nps.edu/brutzman
>
> *From:* John Carlson <yottzumm at gmail.com>
> *Sent:* Wednesday, December 22, 2021 12:44 PM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; X3D Graphics 
> public mailing list <x3d-public at web3d.org>
> *Subject:* Re: HAnim, X3dToPython.xslt X3dToJson.xslt Upgrade X3DUOM?
>
> I believe I checked the right standard, here:
>
> https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html
>
>  And neither value or metadata is a field????
>
> Seems a bit strange.
>
> On Wed, Dec 22, 2021 at 2:20 PM John Carlson <yottzumm at gmail.com> wrote:
>
>     hoping to see value field added to HAnimHumanoid in X3DUOM, or
>     some notice that the package generating stylesheets are not
>     up-to-date.
>
>     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?
>
>     On Mon, Dec 20, 2021 at 3:17 AM John Carlson <yottzumm at gmail.com>
>     wrote:
>
>         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.
>
>         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.
>
>         *~/X3DJSONLD/src/main/python/net/coderextreme/data*$ python
>         JinLOA4.py
>         Traceback (most recent call last):
>          File
>         "/home/coderextreme/X3DJSONLD/src/main/python/net/coderextreme/data/JinLOA4.py",
>         line 148, in <module>
>            HAnimHumanoid23.setValue(MetadataSet24)
>         AttributeError: 'org.web3d.x3d.jsail.HAnim.HAnimHumanoid'
>         object has no attribute 'setValue'. Did you mean: 'setName'?
>         *~/X3DJSONLD/src/main/python/net/x3djsonld/data*$ python
>         JinLOA4.py
>         x3d.py package loaded, have fun with X3D Graphics!
>         Traceback (most recent call last):
>          File
>         "/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/JinLOA4.py",
>         line 50, in <module>
>            HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
>
>         TypeError: HAnimHumanoid.__init__() got an unexpected keyword
>         argument 'value'
>
>
>         *~/X3DJSONLD/src/main/data*$ git diff JinLOA4.json
>         *diff --git a/src/main/data/JinLOA4.json
>         b/src/main/data/JinLOA4.json*
>         *index c970a652a..e1930f4cf 100644*
>         *--- a/src/main/data/JinLOA4.json*
>         *+++ b/src/main/data/JinLOA4.json*
>         @@ -78,7 +78,7 @@
>                   },
>                   {
>                     "@name":"translated",
>         -            "@content":"14 October 2021"
>         +            "@content":"20 December 2021"
>                   },
>                   {
>                     "@name":"generator",
>         @@ -116,7 +116,7 @@
>                       "@loa":4,
>                       "@scale":[0.0225,0.0225,0.0225],
>                       "@version":"2.0",
>         -              "-metadata":
>         +              "-value":[
>                         { "MetadataSet":
>                           {
>                             "@name":"HAnimHumanoid.info",
>         @@ -160,7 +160,8 @@
>                               }
>                             ]
>                           }
>         -                },
>         +                }
>         +              ],
>                       "-skeleton":[
>                         { "HAnimJoint":
>                           {
>
>         ===================
>
>         Validating JSON against schema:
>
>         *~/X3DJSONLD/src/main/schema*$ node
>         ~/x3dvalidate/x3dvalidate.js ../data/JinLOA4.json
>         Loading schema
>         Parsing schema
>         Adding schema
>         Schema 4.0 added
>         Schema 4.0 compiled
>         ================================================================================
>
>         File: ../data/JinLOA4.json
>         Error reading ../data/JinLOA4.json
>         keyword: required
>         instancePath: /X3D/Scene/-children/3/HAnimHumanoid
>         message: must have required property @USE
>         params: {"missingProperty":"@USE"}
>         file: ../data/JinLOA4.json
>         version: 4.0
>
>         keyword: additionalProperties
>         instancePath: /X3D/Scene/-children/3/HAnimHumanoid
>         message: must NOT have additional properties
>         params: {"additionalProperty":"-value"}
>         file: ../data/JinLOA4.json
>         version: 4.0
>
>         keyword: oneOf
>         instancePath: /X3D/Scene/-children/3/HAnimHumanoid
>         message: must match exactly one schema in "oneOf"
>         params: {"passingSchemas":null}
>         file: ../data/JinLOA4.json
>         version: 4.0
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211224/6e7a3830/attachment-0001.html>


More information about the x3d-public mailing list