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

John Carlson yottzumm at gmail.com
Fri Dec 24 15:04:14 PST 2021


I don't see the "empty array" ulimit and llimit defaults  They look like 
0 0 0.  Perhaps the attached screenshot is wrong?

See:

https://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_HAnimJoint.html

screenshot attached.

On 12/24/21 11:14, Brutzman, Donald (Don) (CIV) wrote:
>
> The default containerField values can always be found in X3D DTD, XML 
> Schema and X3DUOM.
>
> A containerField error can only occur if it incorrectly describes the 
> field relationship between a node and a parent.  Our validation tools 
> are pretty robust so you only have to worry about conversion errors if 
> you want.  As we saw during this thread, the root-cause problem can 
> occur due to incorrect X3D model.
>
> Found an error in X3D XML Schema and X3DUOM:  default values for 
> HAnimJoint ulimit llimit fields are empty array, not 0 0 0.  Checked 
> in, will deploy updates.
>
> I found some other small adjustments in X3D Canonicalizer and X3dTidy 
> during regression testing last night.  For author clarity, am always 
> including containerField values for X3D3 scenes.  For terseness, only 
> Metadata* containerField=’metadata’ is included for X3D4.  All 
> HumanoidAnimation .x3d examples are rechecked with tools, updated and 
> checked in.  Re-running regression tests and will eventually upload 
> updated models (probably while Santa is somewhere overhead).
>
> 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:* Thursday, December 23, 2021 11:24 PM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
> *Cc:* X3D Graphics public mailing list <x3d-public at web3d.org>
> *Subject:* Re: HAnim, X3dToPython.xslt X3dToJson.xslt Upgrade X3DUOM? 
> HAnimHumanoid explained, problem identified, corrections applied
>
> Excellent catch!  What should the default be if there's no 
> containerField?  Throw an error?
>
> John
>
> On 12/24/21 00:45, Brutzman, Donald (Don) (CIV) wrote:
>
>     The error was in the source .x3d file, the MetadataSet within
>     HAnimHumanoid need correct containerField definition:
>
>      1. <MetadataSet name='HAnimHumanoid.info'
>         containerField='metadata' etc.
>
>     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> <mailto:yottzumm at gmail.com>
>     *Sent:* Thursday, December 23, 2021 10:40 PM
>     *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>     <mailto:brutzman at nps.edu>
>     *Cc:* X3D Graphics public mailing list <x3d-public at web3d.org>
>     <mailto:x3d-public at web3d.org>
>     *Subject:* Re: HAnim, X3dToPython.xslt X3dToJson.xslt Upgrade
>     X3DUOM? HAnimHumanoid explained, problem identified, corrections
>     applied
>
>     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
>
>          1. Part 1:  Humanoid animation (HAnim) architecture, Clause 6
>             Object Interfaces, 6.2 Humanoid
>          2. 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
>
>          3. X3D4 Part 1: Architecture and base components, 26 Humanoid
>             Animation (HAnim) component, clause 26.3.2 HAnimHumanoid
>          4. 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:
>
>          5. 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.)
>
>          6. HumanoidAnimation X3D Examples Archive
>          7. https://www.web3d.org/x3d/content/examples/HumanoidAnimation
>
>          8. X3D Example Archives: Humanoid Animation, Characters, Jin
>             LOA 4
>          9. https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html
>         10. 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'/>
>         <mailto: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.)
>
>         11. X3D Tooltips HAnimHumanoid
>         12. https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid
>
>         Now checking X3D Unified Object Model (X3DUOM)
>         X3dUnifiedObjectModel-4.0.xml
>
>         13. https://www.web3d.org/specifications
>         14. 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”
>         <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"
>         <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"
>         <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
>         <http://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
>         <http://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
>         <http://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
>         <http://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
>         <http://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
>         <http://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
>         <http://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
>         <http://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
>         <http://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>
>         <mailto:yottzumm at gmail.com>
>         *Sent:* Wednesday, December 22, 2021 12:44 PM
>         *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>         <mailto:brutzman at nps.edu>; X3D Graphics public mailing list
>         <x3d-public at web3d.org> <mailto: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/9ebe5644/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rlx0kbhxs1zRr0at.png
Type: image/png
Size: 150163 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211224/9ebe5644/attachment-0001.png>


More information about the x3d-public mailing list