[x3d-public] HAnim progress summary: finding omissions, inserting missing top-level USE nodes in HAnimHumanoid

Don Brutzman brutzman at nps.edu
Sun Jan 7 20:04:41 PST 2018


Summary: lots of Humanoid Animation (HAnim) progress is in motion and getting delivered publicly.

Updated tooltips better describe HAnimHumanoid top-level USE-node fields for joints, segments and sites.

	X3D Tooltips: HAnimHumanoid (see 5 HAnim nodes total)
	http://www.web3d.org/x3d/content/X3dTooltips.html#HAnimHumanoid

Updated X3D XML Schema and DOCTYPE properly handle HAnimHumanoid skin, which is an IndexedFaceSet node.

	http://www.web3d.org/specifications/X3dSchemaDocumentation3.3/x3d-3.3_HAnimHumanoid.html
	http://www.web3d.org/specifications/X3dDoctypeDocumentation3.3.html#HAnimHumanoid

Schematron rules in X3D Validator are now able to detect when proper occurrences occur.  Am striving to have every specification requirement, hint or warning in tooltips measured by one or more validation rules.

	X3D Validator
	https://savage.nps.edu/X3dValidator

	X3D Quality Assurance
	http://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance

Examples are updated at

	X3D Example Archives: Basic, Humanoid Animation
	http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation
and
	X3D Example Archives: Basic, Medical
	http://www.web3d.org/x3d/content/examples/Basic/Medical

TODO: wondering if a Group containerField='skin' holding multiple Shape nodes makes sense?  Seems OK when a single Coordinate is used, since indexing scheme remains consistent.  This content model modification is close our prior version (X3DChildNode) than a single IndexedFaceSet, but think we might find a better constraint with X3DGroupingNode, similar to CAD approaches, or perhaps simply Group|Transform|IndexedFaceSet|Shape.  Likely some more testing and schema/DTD/schematron modifications to follow (allowing IFS/Group/Transform/Shape as skin field).  This is an active specification-review issue with the expectation that other indexed mesh types are allowed in the upcoming HAnim draft.  Anyway, reasonable Group/multiple-Shape/single-Coordinate example scenes follow and each currently validates.

	http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/BoxManIndex.html

	http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/BoxManAnimationPanelIndex.html

X3dTidy cleanup rules are now able to find omissions and inserting missing top-level USE nodes in HAnimHumanoid.  These run from command line (and Ant) OK.

	http://www.web3d.org/x3d/stylesheets/X3dTidy.html

Also available: autogenerated Java source examples in the Example Archives.

	X3D Example Archives: Basic, Humanoid Animation, Javadoc Package Basic.HumanoidAnimation
	http://www.web3d.org/x3d/content/examples/Basic/javadoc/index.html?Basic/HumanoidAnimation/package-summary.html

All of these updates have been deployed in a new version of X3D-Edit.  X3D-Edit is a free, open-source Extensible 3D (X3D) Graphics authoring tool for simple high-quality authoring, editing, import/export, validation and viewing of X3D scenes.

	X3D-Edit Authoring Tool
	https://savage.nps.edu/X3D-Edit

For example, such USE-node fixes can be found in the KoreanCharacters*.x3d models online:

	X3D Example Archives: Basic, Humanoid Animation
	http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation

Precise insertions of USE can be viewed in the version-control diff logs

	https://sourceforge.net/p/x3d/code/26238/

+      <HAnimJoint USE='hanim_HumanoidRoot' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_hip' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_knee' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_ankle' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_midtarsal' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_hip' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_knee' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_ankle' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_midtarsal' containerField='joints'/>
+      <HAnimJoint USE='hanim_sacroiliac' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_shoulder' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_elbow' containerField='joints'/>
+      <HAnimJoint USE='hanim_l_wrist' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_shoulder' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_elbow' containerField='joints'/>
+      <HAnimJoint USE='hanim_r_wrist' containerField='joints'/>
+      <HAnimJoint USE='hanim_vl5' containerField='joints'/>
+      <HAnimJoint USE='hanim_skullbase' containerField='joints'/>
+      <HAnimSegment USE='hanim_sacrum' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_thigh' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_calf' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_hindfoot' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_middistal' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_thigh' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_calf' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_hindfoot' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_middistal' containerField='segments'/>
+      <HAnimSegment USE='hanim_pelvis' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_upperarm' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_forearm' containerField='segments'/>
+      <HAnimSegment USE='hanim_l_hand' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_upperarm' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_forearm' containerField='segments'/>
+      <HAnimSegment USE='hanim_r_hand' containerField='segments'/>
+      <HAnimSegment USE='hanim_l5' containerField='segments'/>
+      <HAnimSegment USE='hanim_skull' containerField='segments'/>

which is great!  These rules caught a number of missing USE nodes in other scenes as well, including top-level sites.  Better + better.  8)

Meanwhile one of the KoreanCharacter models has some geometry asymmetry alerts.  Wondering if these are fixable errors or just, um, model personality?

	http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/KoreanCharacter05JuIndex.html

--------- Commence validation checks for KoreanCharacter05Ju.x3d ---------
<HAnimJoint DEF='hanim_l_ankle' name='l_ankle' center='3.467000 3.522000 0.118000'/> has asymmetric center value that does not match corresponding <HAnimJoint DEF='hanim_r_ankle' name='r_ankle' center='-3.679000 3.522000 0.118000'/> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint, warning]

<HAnimJoint DEF='hanim_l_midtarsal' name='l_midtarsal' center='3.467000 3.251000 1.465000'/> has asymmetric center value that does not match corresponding <HAnimJoint DEF='hanim_r_midtarsal' name='r_midtarsal' center='-3.679000 3.251000 1.465000'/> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint, warning]
--------- Validation checks complete for KoreanCharacter05Ju.x3d ---------

There has also been excellent progress improving the BVH import capabilities and corresponding tooltips/diagnostics.  We will also be comparing implementations, conversion results and validation checks in Seoul.

	X3D Example Archives: X3D for Advanced Modeling, Motion Animation
	http://x3dgraphics.com/examples/X3dForAdvancedModeling/MotionAnimation

More reviews and comparisons will occur in another week in Seoul during annual Web3D Korea Chapter meeting 15-19 JAN 2018.

The specification editors are working hard to finish up all national-body and Web3D contributor comments on both HAnim and Motion Capture specification drafts.  They are looking quite mature, we have perhaps 15-20 comments left to resolve.  I'm hoping that we are a month away from having smoothed drafts ready for Web3D members and participating ISO national bodies, then the public.

These HAnim changes have all been comprehensive and a long time coming - much work is involved.  There are multiple implementations out there that should have little trouble adjusting to the HAnim specification refinements.  It is exciting to think that we are approaching medical rigor (for skeleton hands feet) with corresponding ability to adapt/convert motion-animation files (such as the BVH format, which is widespread).  Many thanks are due to many people... when we cross that next mile-marker line.  Meanwhile everything posted here is usable today.

Have fun with X3D HAnim!  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 http://faculty.nps.edu/brutzman



More information about the x3d-public mailing list