[x3d-public] Purpose of X3Dng -- Animation (of humanoid models)

Leonard Daly Leonard.Daly at realism.com
Sun Oct 23 20:43:50 PDT 2016


On 10/23/2016 8:30 PM, yottzumm at gmail.com wrote:
>
> Leonard,
>
> I think you wanted to say for your last sentence: “If X3Dng joint 
> animation and skin deformation was taken, perhaps wholesale, from 
> H-Anim, what would be left in H-Anim?”
>
> But you can probably word-craft better than I can.  Have another go at 
> it if you like.
>

John,

Thanks for pointing this out. I am not too particular to get the 
discussion going. What you said is correct, but I did want to give the 
opportunity to include other material that might better fit the mission 
of H-Anim. I do not know what that might be, nor do I wish to presume 
anything about that mission. I did intend it to be an open-ended 
question, though I could have improved the wording.


Leonard Daly





> John
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for 
> Windows 10
>
> *From: *Leonard Daly <mailto:Leonard.Daly at realism.com>
> *Sent: *Sunday, October 23, 2016 11:22 PM
> *To: *x3d-public at web3d.org <mailto:x3d-public at web3d.org>; Human 
> Animation working group <mailto:h-anim at web3d.org>
> *Subject: *Re: [x3d-public] Purpose of X3Dng -- Animation (of humanoid 
> models)
>
> I want to point out that my posting on X3Dng Animation 
> [http://realism.com/blog/purpose-x3d-animation] (BTW, ng == next 
> generation) is not necessarily for characters - human, humanoid, or 
> animal. It is a means of animation that is in standard use in the 
> animation industry. It is frequently applied to characters, but that 
> is not the only possible target of the animation.
>
> This method of animation is not "fool-proof" - there are some edge 
> cases that cause problems -- for example a rotation of pi radians on a 
> joint that can twist causes the skin to "candy-wrap". See 
> http://www.cs.cmu.edu/~yaser/Lecture-9-Skinning%20and%20Body%20Representations.pdf 
> <http://www.cs.cmu.edu/%7Eyaser/Lecture-9-Skinning%20and%20Body%20Representations.pdf>, 
> pages 27-34 for a visual and technical description of the issue. The 
> charts also provide a lot of the mathematical framework that Don 
> discusses below including motion capture.
>
> So I'll ask my question again, if X3Dng includes joint animation with 
> skin deformation at a profile that is generally used (e.g., Immersive 
> or less); what should the H-Anim specification cover? I am not trying 
> to imply that H-Anim should not exist, but a big chunk of the document 
> does discuss joint animation with skin deformation. If that capability 
> were part of the X3D specification, would it need to be repeated in 
> H-Anim? (If so, why?). If it was removed, what would be the 
> appropriate material to include in the document?
>
>
> Leonard Daly
>
>
>     [cc: h-anim]
>
>     Summary: a lot of capability is steadily adding up with H-Anim,
>     and beginning to overlap with Medical and CAD.
>
>     Great observations below, Joe and Michalis!  8)  Thank you. Here
>     are some reactions.
>
>     We have had a lot of work to achieve progress towards X3D version
>     4.  (Don't know what the subject-line "X3Dng" refers to.)  Recent
>     progress is confirming that the work on X3D Object Model has been
>     fundamentally important as a way to ensure that the entire X3D
>     scene graph is consistent and coherent across every file encoding
>     and every programming language binding.  So we are really building
>     for scalable, repeatable success.
>
>     Observation: SFRotation axis-angle representation is
>     mathematically equivalent to quaternions, so there is no
>     conversion issue there.  Matrix rotations are also almost-fully
>     equivalent with only a few edge-case anomalies like the
>     possibility of exceptions when computing inverses. So mapping to
>     different forms of rotations is not particularly difficult when
>     using X3D SFRotation, it just takes close attention to detail.
>     (One virtue of programming, even when challenging, is that You
>     Only Have To Get It Right Once.)
>
>     Personally, am hoping to get back to work on the
>     BVH-mocap-to-X3D-interpolators converter code before the end of
>     the year.  Goal is to have this open source Java running and
>     producing X3D animations, just like Suwon University's C++ code
>     did for their H-Anim Music Video competition.  That should
>     establish a baseline of 2 mocap-related implementations that can
>     help us continue to improve.
>
>     https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/tools/X3dEdit3.3/X3D/src/org/web3d/x3d/hanim/bvh/
>
>         BvhSkeletonParameters.java
>         Hierarchy.java
>         Joint.java
>         Motion.java
>
>     All of the recent review activity and interest during the H-Anim
>     specifications review is certainly a wonderful development.  When
>     all of the other H-Anim specification comments are assembled from
>     participating ISO national standards bodies, we can plan on an
>     Specification Editors Meeting to consider issues and best plans
>     for resolutions. Meanwhile, as time permits, the H-Anim and X3D
>     Working Groups can continue looking at the baseline mantis issues
>     list to prepare potential solutions.
>
>     I also agree that the path to success lies through implementation
>     and evaluation.  As we keep building examples, and implementing
>     conversions, and adding tool support, am expecting the differences
>     between different approaches will appear simpler, clearer, more
>     adaptable, and easier to support.  Similarly, it makes no sense to
>     change what we have in H-Anim until we have direct evidence of
>     problems or how to accomplish potential improvements.
>
>     Current H-Anim example models:
>
>     http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation
>
>     Regarding importance of H-Anim tutorials: another point well
>     taken.  Here is one with 97 slides (second half includes slides +
>     annotation notes).  Questions, corrections and suggestions for
>     improvement welcome.
>
>     http://x3dgraphics.com/slidesets/X3dForAdvancedModeling/HumanoidAnimation.pdf
>
>
>     Does it make sense to add adaptation/conversion of Blender
>     character animations into H-Anim models as a goal?  Blender does
>     have excellent general support for X3D export/import (on its
>     top-level File menu).  If so, we could add it to:
>
>         web3D.org > PARTICIPATE > Projects Wish List
>     http://www.web3d.org/projects/wish-list
>
>     Perhaps someone wants to look at Cobweb source and help out with
>     adding support for H-Anim nodes.  Not so hard, the pattern is
>     somewhat similar to CAD nodes, already implemented in X3DOM; yet
>     another open-source example implementation is available as X3D
>     prototypes (no Script needed) at:
>
>         X3D Example Archives: Basic, Humanoid Animation, HAnim Prototypes
>     http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/HAnimPrototypesIndex.html
>
>
>         Cobweb Supported Components
>     http://titania.create3000.de/cobweb/#c426
>
>     Looking further ahead.  There is one more clarion priority for
>     H-Anim progress: modeling human joints, bones, skin and motions at
>     a resolution suitable for medical applications and electronic
>     health records.  Alignment of DICOM-standard medical imagery as
>     X3D volume presentations is another emerging major asset.  Common
>     interest with CAD group in metadata annotations, 3D printed parts
>     (splints, prostheses, devices) and 3D scanning is also truly
>     compelling.  The CAD and medical workshops at the Web3D 2016
>     Conference in Anaheim a few months back showed that much is
>     possible. Early-exemplar case study:
>
>         3D Printed Heart for Printed Preoperative Planning
>         Two views of a printed heart from MRI data
>     http://www.web3d.org/example/3d-printed-heart
>
>     Assembled and aligned together, with working tools + repeatable
>     workflows + validation of correctness, the X3D family of
>     technologies holds tremendous promise to broadly improve medical
>     understanding and communication.
>
>     All of this technical scrutiny is super valuable.  Having a
>     constructive community is so valuable - we avoid blunders and
>     steadily build shared understanding.
>
>     Onward we go, step by step! Looking forward to continuing progress
>     together.
>
>
>     On 10/21/2016 5:06 PM, Joe D Williams wrote:
>
>             It would be fantastic if e.g. Blender armature animation
>             was exported
>             to X3D. It is already possible, as H-Anim supports the
>             necessary
>             features --- what is miss is the actual code on the side
>             of Blender
>             (Python) exporter to X3D.
>
>
>         Good idea, perhaps if the Blender animation data exists so it
>         can be made to work in interpolators.
>         Sometimes the export of animation intended for rendering to
>         film or video is just a list of completely rendered frames
>         rather than an actual realtime animation style.
>
>         If the data exists to export keyframe keys and keyvalues, then
>         the rotations and translations should be easy to get. In an
>         'old style' armature they were not interested in joint
>         rotation but depended upon bone orientation. That is OK
>         because the purpose was to pose the artatmure for the next
>         frame, not to worry about interpolation since they knew the
>         target frame intervals. That is OK, bone orientation and joint
>         rotation is the same.
>
>         Another detail is that the joint animation data may be in unit
>         quaternions, which is actually most likely since it is the
>         preferred form in collada and glTF.  Or, the data may use
>         euler-type angles (x-y-z) that need to be converted to x3d
>         axis-angle which can be straightforward.
>
>         That is what Part 2 of new HAnim is about, how to import mocap
>         and other types of animation data. First you consider the
>         capture skeleton, then you model it to a model of an HAnim
>         'standard' playback skeleton, convert the keyvalues as
>         required, create the positon and orientation interpolators,
>         then run the thing. Everyone's comments on this Part 2 is also
>         appreciated.
>
>         I don't think we want to also cover the idea of no interps,
>         just itty through the mocap keyvalues for video or film fixed
>         frame interval rendering and capture. X3D's target is realtime
>         or anytime and everytime. Of course you also make video or
>         film using X3D. Same for 'general' coverage of this anmation
>         technology. Of course you can do anything you want. You don't
>         need study HAnim very long until you learn that yes, you can
>         define your own joint hierarchy, use any names you wish, and
>         attach any kind of geometry and sensors you wish. If you want
>         to do different shaped skin, then fine. Finally, if you
>         understand the skelton setup, you can just fly them joints
>         around to achieve most any animations possible with your
>         model. You can easily adjust animations with a keyboard, a
>         text editor, and an X3D player.
>
>         Whatever you do, there are the same rules. Similar skeletons
>         with similar initial pose can exchange skeletal animations.
>         That is the most important point of this entire effort.
>         Exchange skins when skeleton joint hierarchy, skin vertex
>         count, order of appearance in the user code, and feature point
>         relationships are the same. Sure we could tell that story in a
>         series of tutorials but this is a spec. Maybe not this
>         example, but the spec does not always need to spell out the
>         history or details that would be obvious to an expert in the
>         field, just the bare implementation requirements.
>
>         Again, capabilities in this spec can describe any skeleton but
>         I think we want to target something concrete. Something that
>         can have a set of reference inputs and a set of reference
>         outputs. Finally, we want a 'standard' set of example
>         animations that work with each of the 'standard' LOA definitions.
>
>         For this spec effort, the most important thing is that
>         Implementors get it right. If the implementation can deliver a
>         'standard' humanoid that uses 'standard' animations, then we
>         have something. If the implemetation gets it right, then the
>         users can get most anything out of it they want. So that is
>         why the HAnim spec targets the 'standard' animatable humanoid.
>
>         When we discuss general X3D animation facilities, of which
>         there are many, then that is the job of a set of tutorials.
>         Please recall that the spec is addressing Implementors, and
>         technicallly-oriented users, not the general user. Usually the
>         spec will fail when it wanders into general tutorials aimed at
>         general users.
>
>         Still, the idea of bringing something like the HAnim DIsplacer
>         up into the same bag of tools as other styles and types of
>         interpolators would be a fine idea. I think that might be what
>         Leonard was mentioning when he said there are other more basic
>         tools than joint-actuated mesh deformation. It is easy to
>         recognize the Displacer as a basic mesh animation tool that
>         would be encountered in early animation lessons.
>
>         Thanks and Best,
>         Joe
>
>
>         ----- Original Message ----- From: "Michalis Kamburelis"
>         <michalis.kambi at gmail.com> <mailto:michalis.kambi at gmail.com>
>         To: "Leonard Daly" <Leonard.Daly at realism.com>
>         <mailto:Leonard.Daly at realism.com>
>         Cc: "Joe D Williams" <joedwil at earthlink.net>
>         <mailto:joedwil at earthlink.net>; "X3D Public"
>         <x3d-public at web3d.org> <mailto:x3d-public at web3d.org>
>         Sent: Thursday, October 20, 2016 10:34 PM
>         Subject: Re: [x3d-public] Purpose of X3Dng -- Animation
>
>
>
>             2016-10-21 6:23 GMT+02:00 Leonard Daly
>             <Leonard.Daly at realism.com> <mailto:Leonard.Daly at realism.com>:
>
>                 In all your writings you appear to be making the
>                 assumption that joint-based
>                 animation with deformable skin is H-Anim. That is not
>                 true.
>
>
>             Hi,
>
>             From my point of view, I see H-Anim as "the way to do
>             animation using
>             skeletons, bones and (optional) skins in X3D". I can
>             easily do
>             skeletal animation of anything (humans, pipes, animals)
>             with H-Anim. I
>             actually implemented it in view3dscene, and really there's
>             nothing
>             limiting this system to "humanoids". You just transform
>             the bones, and
>             optionally deform a mesh following the per-vertex weights.
>
>             Maybe we could solve the issues raised here by simply
>             changing the
>             wording (and some node names), to de-emphasize the
>             "humanoid" part in
>             the H-Anim specifications. (The X3D component
>             http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/hanim.html
>
>             and the H-Anim spec on
>             http://h-anim.org/Specifications/H-Anim200x/ISO_IEC_FCD_19774/
>             ).
>
>             Such change would more accurately reflect H-Anim's
>             capabilities (in my view).
>
>             How about we would simply rename H-Anim component in X3D
>             to "Skeletal
>             Animation"? Some additional renames would be nice, like
>             removing the
>             "HAnim*" prefix from nodes, and the main "HAnimHumanoid"
>             node could be
>             something simpler like just a "Skeleton" (with the primary
>             field being
>             "skeleton").
>
>             The fact that the H-Anim standard defines also a standard
>             "Structure
>             of a humanoid" is just "an extra" for me. I mean, it is
>             valuable!, but
>             it can also be simply ignored if you don't model a
>             humanoid (or don't
>             care about standardizing your names, to transfer the
>             animations
>             between other humanoids).
>
>             Also, adding such "Skeletal Animation" component to the
>             "Immersive"
>             (or even earlier) profile would be a nice touch. It is a
>             major
>             animation method. Putting it inside a component other than
>             "Full" is a
>             way of encouraging implementations of it. Especially since
>             it seems we
>             do have a lot of implementations of it.
>
>             It would be fantastic if e.g. Blender armature animation
>             was exported
>             to X3D. It is already possible, as H-Anim supports the
>             necessary
>             features --- what is miss is the actual code on the side
>             of Blender
>             (Python) exporter to X3D.
>
>             I hope that this opinion helps:)
>
>             Best regards,
>             Michalis
>
>
>         _______________________________________________
>         x3d-public mailing list
>         x3d-public at web3d.org <mailto:x3d-public at web3d.org>
>         http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
>
>     all the best, Don
>
> -- 
> *Leonard Daly*
> 3D Systems & Cloud Consultant
> LA ACM SIGGRAPH Chair
> President, Daly Realism - /Creating the Future/
>
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org


-- 
*Leonard Daly*
3D Systems & Cloud Consultant
LA ACM SIGGRAPH Chair
President, Daly Realism - /Creating the Future/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20161023/fd840531/attachment-0001.html>


More information about the x3d-public mailing list