[x3d-public] What is H-Anim?

Joe D Williams joedwil at earthlink.net
Thu Oct 13 23:43:46 PDT 2016


I reread this and saw that you had other comments

----- Original Message ----- 
From: "Leonard Daly" <Leonard.Daly at realism.com>
To: <x3d-public at web3d.org>
Sent: Thursday, October 13, 2016 5:49 PM
Subject: Re: [x3d-public] What is H-Anim?


> This may not be easy to read. The important part is X3D needs to 
> support
> deformable skin at the basic animation level (or don't bother to 
> support
> animated models). If X3D has that capability, what should be in the
> H-Anim spec.

this is the comment I responeded to in the last message.
more below

>
>
>
>>
>> ----- Original Message ----- From: "Leonard Daly"
>> <Leonard.Daly at realism.com>
>> To: "X3D Public" <x3d-public at web3d.org>
>> Sent: Thursday, October 13, 2016 10:39 AM
>> Subject: [x3d-public] What is H-Anim?
>>
>>
>>> From reading H-Anim in detail (especially Part 1), it appears to 
>>> me
>>> that it is primarily doing two things
>>
>> Where would you get the idea that HAnim does not do deformable 
>> skin?
>
> Where did you get the idea that I said it doesn't? In fact, I 
> explicitly
> state that it does do that.
>

Good

>
>>
>>>
>>> 1) Defining animation with deformable skin
>>>
>>
>> I would say it is defining a 'standard' skeleton with a 'standard'
>> pose that can use geometry as children of segments or a deformable
>> skin that is a child of the humanoid. Either or both segment 
>> geometry
>> and/or skin geometry can be used. The segment geometry is animated
>> when the segments move by animating the rotation of joints in the
>> skeleton hierarchy. Skin is animated by weighted displacement of
>> individual mesh vertices according to individual or multiple joint
>> rotations.
>
> Animation of deformable skin is industry standard operation. It is 
> not
> unique to 3D humans or humanoids.
>

Depends on what you mean.coordinate interpolators or controlled by 
joints

I'm not sure you are making a point about general animation of meshes 
using various means like coordinate interpolators to move vertices 
around or as controlled by joint-like objects.

>
>
>>
>>>
>>> 2) Define bone definition and naming for humanoids.
>>>
>>
>> Yes we have standardized names and example 'human' space dimensions
>> for Joints, Segments, and Sites
>> We don't call it a bone, we call the bone a segment.
>>
>>>
>>>  I noted that
>>> humanoids (as defined in the spec 4.2.1) are not required to have 
>>> the
>>> normal human-like appendages (1 head, 2 arms, 2 legs)
>>
>> tha spec humanoid is one of 5 defined LOAs. All LOA choices include
>> site locations for all appendages but may not include the complete
>> skeketon
>
> It may be a complete skeleton, just with 4 arms, 3 legs, and 2 
> heads.
> That is allowed in the spec.

That is just one piece of the whole thing that tells about how 
versatile it is.

>
>
>
>
>>
>>> [http://www.web3d.org/documents/specifications/19774-
>>> 1/V2.0/HAnim/concepts.html#HAnimFiguresOverview]
>>>
>>
>> That is just an isolated paragraph about the versatility of the 
>> basic
>> hierarchal joint model. Besides, your comment is based on a 
>> paragraph
>> that has had no vetting this round. To study the HAnim, you should
>> base it on V1.0 and figure that the CD V2.0 for Part 1 is a bit
>> scrambled and incomplete at this point relative to V1.0.
>
> V1 is over 10 years old. I don't think you want to be comparing 
> current
> industry standards to something that was done isolated from industry 
> 10
> years ago.

Well, nothing in the stuff we do has changed. There is some new stuff 
we don't do. YOu could help figure out what we don't do.

>
>
>>
>> All other information is clear that the target is a humanoid figure
>> with a level of articulation that depends upon the number and
>> hierarchy of the joints.
>>
>>>
>>> If X3D were to included deformable skin animation as an intrinsic 
>>> part
>>> of the X3D specification, ...
>>
>> it already does
>
> Only if the H-Anim component is used. I stated an "intrinsic" 
> meaning at
> the base level of animations.

Now please study how the deformable skin is done. When you figur that 
out then you will know why this technique is not a general form. We 
can make waving hair out of a string of joints but we don't mention 
that.


>
>
>>
>>>  ... would #1 be required?
>>>
>>
>> Not sure what you mean. Animation of a continious mesh deformable 
>> skin
>> according to joint rotation is one feature of HAnim. Another tool 
>> for
>> deformable geometry is the DIsplacer node. All big time authoring
>> tools do these, although for many the skin animation binding target 
>> is
>> illustrated as a bone. No difference.
>
>
> I mean for all objects, not just those declared H-Anim.

Again, please study how the mesh is animated with hanim and you will 
understand why there is no other general purpose node in X3D for this. 
Also pleae understand how the Displacer works as a simplification of 
the user code and interfaces for an operation that wold otherwise use 
coordinate interpolators. In fact, from your comments, the Displacer 
node could be a choice if you wanted to move something like it into 
the geral node population. .

>
>
>
>
>> .
>>>
>>> If not, that leaves #2. It seems to me that this section is 
>>> optional
>>>
>>
>> Hey, a general concept: To have deformable skin, you use a 
>> skeleton.
>> If not, then that technology is not avaliable to X3D. Or else you 
>> are
>> mistaking calling the dragging lumps of 'skin' geometry not 
>> connected
>> to a skeleton around from keyframe to keyframe as skin animation. 
>> That
>> is not the 'standard' sort of skin animation we do.
>
>
> Skeletons and bones do not imply a humanoid. They can be used for 
> all
> animation, including trees, animals (even octopus).

Yes, so what, we are producing a spec relating to realistic humanoids, 
not squid.

>
>
>
>>
>>> based on references in the document to "are common", "generally
>>> categorize", "may have", "model specific". It seems that if one is
>>> modeling a human (not humanoid), then this structure should be 
>>> used; but
>>> if not a human, the the variations are endless.
>>>
>>
>> True, the variations are endless, like real life except for life 
>> there
>> is an end. However, we are aiming at a 'standard' humanoid 
>> dimensioned
>> in 'human' space having a realistic skelton that can use 'standard'
>> animations.
>
> So are you saying that this is just a specification for defining how
> humanoids are rigged and animated?

Why not? it is after all called Humanoid animation and it does have 
some text that says hey, you can actually use this for any sort of 
jointed contraption.

>
>
>
>>
>> The actual geometry used to produce surface features of the model
>> includes any sort of X3D geomentry. For skin we seem to do best 
>> with
>> an indexed geometry since for deformable skin animation we need to
>> know the order of appearance in the user code of each vertex of the
>> skin field.
>
> Not really, that's just the way the implementation did it. The 
> important
> part is to know how much weight each bone exerts on a skin vertex. 
> How
> that is done is really implementation dependent. The spec may state 
> a
> certain manner because it is easier to handle, but it is not a
> requirement of the algorithms.

No really, that ishow it is done everywhere. fain, please ake the time 
to look at examples.
You will see that the Joint node contains fields that define which 
Joint produce an effect upon which vertices and the weight value of 
displacements applied to each vertex as related joint nodes are 
rotated. The spec states a certain way to do it because that is the 
way it is done. If you rig a skeleton and skin in max or anywhere else 
and are clever enough to get the data out of the tool, hen you will 
find that this isthe way it is done. The internal tool data formats 
are differeetn, but AjAnim capures the exact mdata and mechanics used 
everywhere for this.

>
>
>>
>>>
>>> I think the document needs an improved focus
>>>
>>
>> True in part. Mostly it needs consolidation of important skeleton
>> realtionships and some better examples.
>>
>>>
>>> and close work with X3D WG
>>> to determine if deformable skin animation is to be included in a 
>>> future
>>> version of X3D.
>>>
>>
>> Too late, the horse is out of the barn. We do it the way everyone 
>> does
>> it. It already is included. The document is much at fault for you 
>> to
>> miss that. Look at the skinCoordIndex and skinCoordWeight fields of
>> the Joint and their descriptions.
>>
>> Why not actually look at user code of some examples and actually 
>> look
>> at some examples of this humanoid really running?
>
> Because I am looking at a much bigger picture than a particular
> implementation or example. It is important to get the big picture 
> right
> or everything else underneath it will be a kludge. The document does 
> not
> use industry standard terminology and notation. It makes general
> statements about what is required. Perhaps that is the fault of this
> version of the document; but it is very important to get the big 
> picture
> right.

yes, keep learning about what we have and bring forward some of the 
industry standard terminology and notation we are missing.
yes, part of your view is due to the content and arrangement of v2.0 
CD. Please look at V1.0 and some examples.
Please.

> It is important to get the big picture right
> or everything else underneath it will be a kludge.

so true and I am pleased that you are taking a good look at this.
Do you have an X3D browser that will run some of the examples.
Like I said in another message, the HAnim group took the best 
available and it still works.

Dig into lesson 6 or so of some of those links to tools you sent 
before and you will begin to see the bigger picture.

Getting the big picture right means you start in a place that lessons 
1-5 are correct enough so that you don't have to start over in lesson 
6. Build one for yourself from examples we have. Its the best way 
since HAnim is probably the most complex interconected plan for any 
group of nodes but not any more complex than it need to be. Afer all, 
we are modeling real life.

>
>> See attached. Please look at the user code also. Runs best in BS
>> Contact free.
>> Sorry, as far as I know X3DOM don't do skin yet.
>> Please tell me what you think.
>>
>> I agree with your recommendation that the X3D working group should
>> look at the standard, but since deformable skin animation is 
>> included
>> in V1.0 and demonstrated by multiple X3D browsers, please pick 
>> another
>> item upon which we should make a detailed determination.
>>
>> My comment along these lines is that HAnim seems to need at least 
>> two
>> support levels:
>> 1 is just segment geometry and
>> 2 is add skin geometry.
>> because implementing 2 seems to be a large step up for some 
>> browsers
>
> That's the fault of the browsers and the spec for not pushing them.

Can you tell me which X3D browsers can or cannot do what I described 
as level 1?
Well, there are none because we have the prototypes to run in any 
conforming X3D browser.
What about level 2?
Level 2 is harder because the math is intense. Thus it is harder to do 
using prototype. A prototype is shown in our Boxman example but this 
really needs native implemtation because there is lots of computing 
involved.

Can you tell me about other tools that wil not import X3D HAnim?
What about other tools that will not export X3D HAnim?
If found, those are the folks we should want to talk to.

> Blender does it, Maya does it, Unity does it, Unreal does it, (I 
> could
> add other examples here).

Of course they do and so does BS and so did Flux and others. As far as 
I know, X3DOM does not do level 2 though skincoordindex and 
skincoordweight are noted as supported. Again, name all the names of 
toolmakers you can find and you will see they all do it the same and 
X3D HAnim does it the same using the same data and the same 
algorithms. But try to read their user code.

Since many older tools did not expose the joint concept to users, they 
relied on skin vertex binding to bones which ends up being the same 
thing if you apply the bone orientation to the correct joint 
rotation..


> Deformable skin needs to be part of X3D V4. If
> it's not; there probably is not much purpose in supporting anything 
> but
> static models.

Don't worry. Even if X3DV4 doesn't use HAnim, you can still create 
dynamic mesh deformations using other X3D nodes. It is just that the 
X3D HAnim nodes are tuned for typical best practices character 
animation.

> Life is flexible. if X3D is going to model that, it needs
> to be flexible too.

Don't be in that static model tailspin. There is no point is 
supporting only static models. They are no fun.

If you are going to animate humanoids or any other sort of jointed and 
segmented fantasima then check out the X3D HAnim nodes. They have been 
around for a while but still do basic and advanced industry standard 
stuffs just like the big boys in the industry so you won't be wasting 
your time by actually taking a cut at learning about and using what we 
have.

try the example

http://www.hypermultimedia.com/x3d/hanim/hanimLOA3A8320130611Allanimtests.x3dv

read the code

http://www.hypermultimedia.com/x3d/hanim/hanimLOA3A8320130611Allanimtests.txt

no skin in that one, just segment and site geometries.

Talking about more advanced animations, a big contribution would be to 
use rigid body physics nodes to control the character.

Joe

>
>
> Leonard Daly
>
>
>>
>> Thanks,
>> Joe
>>
>> Can't wait to see your comments on Part 2.
>>
>>
>>>
>>>
>>> -- 
>>> *Leonard Daly*
>>> 3D Systems & Cloud Consultant
>>> LA ACM SIGGRAPH Chair
>>> President, Daly Realism - /Creating the Future/
>>>
>>
>
>
> -- 
> *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
> 




More information about the x3d-public mailing list