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

John Carlson yottzumm at gmail.com
Sun Dec 26 14:22:02 PST 2021


While this link is correct
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-WD2/Part01/components/hanim.html#HAnimJoint
with respect to ulimit and Ilimit defaults, the enclosed link seems
outdated.  I cannot seem to clear the cache on my phone.

Could someone check for default ulimit and limit being [] on enclosed link
(might require refresh or clearing cache)?  Not the link above.

Thanks!

John

I do want to check X3DUOM as well.
On Fri, Dec 24, 2021 at 5:04 PM John Carlson <yottzumm at gmail.com> wrote:

> 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> <yottzumm at gmail.com>
> *Sent:* Thursday, December 23, 2021 11:24 PM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu> <brutzman at nps.edu>
> *Cc:* X3D Graphics public mailing list <x3d-public at web3d.org>
> <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> <yottzumm at gmail.com>
> *Sent:* Thursday, December 23, 2021 10:40 PM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu> <brutzman at nps.edu>
> *Cc:* X3D Graphics public mailing list <x3d-public at web3d.org>
> <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
>
>
>
>    1. X3D4 Part 1: Architecture and base components, 26 Humanoid
>    Animation (HAnim) component, clause 26.3.2 HAnimHumanoid
>    2.
>    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:
>
>    1. 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.)
>
>
>
>
>
>    1. HumanoidAnimation X3D Examples Archive
>    2. https://www.web3d.org/x3d/content/examples/HumanoidAnimation
>
>
>
>
>
>    1. X3D Example Archives: Humanoid Animation, Characters, Jin LOA 4
>    2.
>    https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html
>    3.
>    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%C2%A0containerField='value'%C2%A0name='authorEmail'%C2%A0value='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.)
>
>
>
>    1. X3D Tooltips HAnimHumanoid
>    2. https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid
>
>
>
> Now checking X3D Unified Object Model (X3DUOM)
> X3dUnifiedObjectModel-4.0.xml
>
>
>
>    1. https://www.web3d.org/specifications
>    2. 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"
> <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> <yottzumm at gmail.com>
> *Sent:* Wednesday, December 22, 2021 12:44 PM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu> <brutzman at nps.edu>;
> X3D Graphics public mailing list <x3d-public at web3d.org>
> <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/20211226/0aea9130/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/20211226/0aea9130/attachment-0001.png>


More information about the x3d-public mailing list