[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