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

John Carlson yottzumm at gmail.com
Thu Dec 23 23:30:17 PST 2021


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

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:
>
>   * <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>
> *Sent:* Thursday, December 23, 2021 10:40 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
>
> 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/3c91a2fb/attachment-0001.html>


More information about the x3d-public mailing list