[x3d-public] stiffness, waiting for upload. [was Re: HAnim, X3dToPython.xslt X3dToJson.xslt Upgrade X3DUOM? HAnimHumanoid explained, problem identified, corrections applied

John Carlson yottzumm at gmail.com
Thu Dec 23 23:49:45 PST 2021


Generated 10 mintues ago:

HAnimJoint(DEF='hanim_l_knee',center=(4.116,18.170,-0.863900),name='l_knee',stiffness=[0,0,0],

Not seeing MFFloat in:

$ python3 net/x3djsonld/data/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 177, 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 
"/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/x3d.py", 
line 43724, in __init__
     self.stiffness = stiffness
   File 
"/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/x3d.py", 
line 43873, in stiffness
     assertValidSFVec3f(stiffness)
   File 
"/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/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


Spotted stiffness as MFFloat in X3DUOM.


Will rebuild once there's a new python x3d.py package available.

John


> but then got a self-validation error by the JinLOA4.py python program,
>
> create python:
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d 
> processing with X3dToPython stylesheet...
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py 
> self-validation tests...
>
> validate python:
>
> x3d.py package loaded, have fun with X3D Graphics!
>
> Traceback (most recent call last):
>
>   File 
> "C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py", 
> line 169, in <module>
>
> HAnimJoint(DEF='hanim_l_tarsal_distal_interphalangeal_1',center=(2.761,0.539400,5.125),name='l_tarsal_distal_interphalangeal_1',stiffness=[0,0,0],
>
>   File "C:\x3d-code\www.web3d.org\x3d\stylesheets\python\x3d\x3d.py", 
> line 43724, in __init__
>
>     self.stiffness = stiffness
>
>   File "C:\x3d-code\www.web3d.org\x3d\stylesheets\python\x3d\x3d.py", 
> line 43873, in stiffness
>
>     assertValidSFVec3f(stiffness)
>
>   File "C:\x3d-code\www.web3d.org\x3d\stylesheets\python\x3d\x3d.py", 
> line 3953, in assertValidSFVec3f
>
>     raise X3DTypeError(str(value)[:100] + ', type=' + str(type(value)) 
> + ' is not a valid Python tuple for SFVec3f')
>
> x3d.X3DTypeError: [0, 0, 0], type=<class 'list'> is not a valid Python 
> tuple for SFVec3f
>
> Result: 1
>
> Note how stiffness=[0,0,0]was given as a list in brackets, rather than 
> a tuple value in parentheses stiffness=(0,0,0) as might be expected 
> for SFVec3f, and so this is a useful diagnostic.
>
> However the actual specification type for stiffness is MFFloat.  (This 
> was a mantis issue, might we tighten it to SFVec3f, but decided to 
> keep it MFFloat in case more-advanced kinematics engines were someday 
> of interest.
>
> * 
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimJoint
>
> 26.3.3 HAnimJoint
>
> HAnimJoint : X3DGroupingNode {
>
> […]
>
>   MFFloat    [in,out] stiffness        [0 0 0] [0,1]
>
> Applied change to X3D DTD, X3D XML Schema and again autogenerated 
> X3DUOM and x3d.py and X3D Ontology to match.
>
> 23 DEC 2021, carlson brutzman
>
> - restore type of HAnimJoint stiffness field as MFFloat (vice SFVec3f) 
> to match
>
>   specification, since more-advanced kinematics engines might someday 
> hold interest.
>
> This fixed the stiffness error.
>
> However, next got a surprising conversion error (which might have been 
> what you experienced originally):
>
> =====================
>
> create python:
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d 
> processing with X3dToPython stylesheet...
>
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py 
> self-validation tests...
>
> validate python:
>
> x3d.py package loaded, have fun with X3D Graphics!Traceback (most 
> recent call last):
>
>   File 
> "C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py", 
> line 50, in <module>
>
> HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
>
> TypeError: HAnimHumanoid.__init__() got an unexpected keyword argument 
> 'value'
>
> Result: 1
>
> =====================
>
> Which apparently was on line 1950,
>
> value=MetadataSet(name='HAnimHumanoid.info',reference='https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid',etc.
>
> This conversion should have been metadata=MetadataSet etc. Looks like 
> the field name for the HAnimHumanoid MetadataSet was not specified 
> incorrectly, the automatic conversion by X3dTidy did not apply correct 
> containerField value.
>
> I have added a rule to X3dTidy.xslt that looks for this case (for 
> either representation, X3D3 or X3D4) and corrects it.  I have added a 
> similar diagnostic rule to X3dSchematron checks.
>
> All affected HAnimHumanoid scenes have been updated and are now 
> getting compiled correctly by Python.
>
> All changes checked into subversion. Further regression testing 
> continuing, website uploads to follow.
>
> So again thanks for exposing this issue. Pretty complex but 
> resolvable.  Once again the strict nature of Python aided us in 
> achieving high Quality Assurance (QA) for X3D.
>
> Happy holidays with X3D!   8)
>
> all the best, Don
>
> -- 
>
> Don Brutzman  Naval Postgraduate School, Code USW/Br brutzman at nps.edu
>
> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    
> +1.831.656.2149
>
> X3D graphics, virtual worlds, navy robotics https:// 
> faculty.nps.edu/brutzman
>
> *From:* John Carlson <yottzumm at gmail.com>
> *Sent:* Wednesday, December 22, 2021 12:44 PM
> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; X3D Graphics 
> public mailing list <x3d-public at web3d.org>
> *Subject:* Re: HAnim, X3dToPython.xslt X3dToJson.xslt Upgrade X3DUOM?
>
> I believe I checked the right standard, here:
>
> https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html
>
>  And neither value or metadata is a field????
>
> Seems a bit strange.
>
> On Wed, Dec 22, 2021 at 2:20 PM John Carlson <yottzumm at gmail.com> wrote:
>
>     hoping to see value field added to HAnimHumanoid in X3DUOM, or
>     some notice that the package generating stylesheets are not
>     up-to-date.
>
>     Also, check to make sure stiffness is assigned the right data
>     structure (between list and tuple).   And no, iOS, I do not want
>     “Tupperware” for the second time.   We need more women
>     mathematicians (sorry for any stereotyping).  On that subject, I
>     wonder what coordinate system crocheted hats use?
>
>     On Mon, Dec 20, 2021 at 3:17 AM John Carlson <yottzumm at gmail.com>
>     wrote:
>
>         Okay, now I seem to be having a similar problem between my
>         python serializer, X3dToPython.xslt, and probably other
>         serialized stuff.  I couldn't figure out how to fix the
>         stiffness issue in X3dToPython.xslt, but hand-editing saved
>         that on this particular python file
>         (python/net/x3djsonld/data/JinLOA4.py). Other JinLOA's still
>         have lists with Don's generator.
>
>         I believe the main change I am dealing with is metadata vs
>         value containerFields.   See JSON diff below.  I'm not seeing
>         relevant changes to X3D JSON schema 4.0.  Does something need
>         to be upgraded in X3DUOM or X3D JSON schema?  I'm not seeing a
>         value field in HAnimHumanoid.
>
>         *~/X3DJSONLD/src/main/python/net/coderextreme/data*$ python
>         JinLOA4.py
>         Traceback (most recent call last):
>          File
>         "/home/coderextreme/X3DJSONLD/src/main/python/net/coderextreme/data/JinLOA4.py",
>         line 148, in <module>
>            HAnimHumanoid23.setValue(MetadataSet24)
>         AttributeError: 'org.web3d.x3d.jsail.HAnim.HAnimHumanoid'
>         object has no attribute 'setValue'. Did you mean: 'setName'?
>         *~/X3DJSONLD/src/main/python/net/x3djsonld/data*$ python
>         JinLOA4.py
>         x3d.py package loaded, have fun with X3D Graphics!
>         Traceback (most recent call last):
>          File
>         "/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/JinLOA4.py",
>         line 50, in <module>
>            HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
>
>         TypeError: HAnimHumanoid.__init__() got an unexpected keyword
>         argument 'value'
>
>
>         *~/X3DJSONLD/src/main/data*$ git diff JinLOA4.json
>         *diff --git a/src/main/data/JinLOA4.json
>         b/src/main/data/JinLOA4.json*
>         *index c970a652a..e1930f4cf 100644*
>         *--- a/src/main/data/JinLOA4.json*
>         *+++ b/src/main/data/JinLOA4.json*
>         @@ -78,7 +78,7 @@
>                   },
>                   {
>                     "@name":"translated",
>         -            "@content":"14 October 2021"
>         +            "@content":"20 December 2021"
>                   },
>                   {
>                     "@name":"generator",
>         @@ -116,7 +116,7 @@
>                       "@loa":4,
>                       "@scale":[0.0225,0.0225,0.0225],
>                       "@version":"2.0",
>         -              "-metadata":
>         +              "-value":[
>                         { "MetadataSet":
>                           {
>                             "@name":"HAnimHumanoid.info",
>         @@ -160,7 +160,8 @@
>                               }
>                             ]
>                           }
>         -                },
>         +                }
>         +              ],
>                       "-skeleton":[
>                         { "HAnimJoint":
>                           {
>
>         ===================
>
>         Validating JSON against schema:
>
>         *~/X3DJSONLD/src/main/schema*$ node
>         ~/x3dvalidate/x3dvalidate.js ../data/JinLOA4.json
>         Loading schema
>         Parsing schema
>         Adding schema
>         Schema 4.0 added
>         Schema 4.0 compiled
>         ================================================================================
>
>         File: ../data/JinLOA4.json
>         Error reading ../data/JinLOA4.json
>         keyword: required
>         instancePath: /X3D/Scene/-children/3/HAnimHumanoid
>         message: must have required property @USE
>         params: {"missingProperty":"@USE"}
>         file: ../data/JinLOA4.json
>         version: 4.0
>
>         keyword: additionalProperties
>         instancePath: /X3D/Scene/-children/3/HAnimHumanoid
>         message: must NOT have additional properties
>         params: {"additionalProperty":"-value"}
>         file: ../data/JinLOA4.json
>         version: 4.0
>
>         keyword: oneOf
>         instancePath: /X3D/Scene/-children/3/HAnimHumanoid
>         message: must match exactly one schema in "oneOf"
>         params: {"passingSchemas":null}
>         file: ../data/JinLOA4.json
>         version: 4.0
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211224/0f14ba21/attachment-0001.html>


More information about the x3d-public mailing list