[x3d-public] HAnimHumanoid.skinCoord should be before HAnimHumanoid.skin
John Carlson
yottzumm at gmail.com
Mon Oct 30 19:35:47 PDT 2023
HAnimHumanoid.skinCoord should be before HAnimHumanoid.skin, per my reading
of Don’s HAnim standard quote, included below.
First example from the archive:
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html
Coordinate DEF='Joe_SkinCoord
<https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_SkinCoord>
' point='0.0 1.77 0
[snip]
<Coordinate USE=' Joe_SkinCoord
<https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_SkinCoord>
' containerField='skinCoord'/>
Please update to correct order (not the above) in the archive and
validate. I have not validated yet. Please don’t shoot the messenger.
If your QA validator don’t catch the wrong order, please update your
validator as well.
If you like, I can create a comprehensive report on the HAnim archive, but
this has been frowned upon in the past, so I am reluctant. Perhaps we
should fix the archive validators first. I have a batch XML validator
based on X3DJSAIL if people are interested. It uses a typical ant script
and is customizable. I’m not sure if X3DJSAIL catches this issue, so a
report is probably more desirable.
For example, if you add X3JSONLD.java, it will also validate JSON. A
potential unwanted side-effect that can be edited out are the products of
X3DJSONLD, XML documents, which can also be validated using X3DJSAIL. The
main validator is much simpler than something like X3DJSAIL’s CommandLine,
and is easily verified visually.
I can do a zoom demo if people are interested. I’ll make sure my current
changes are checked in before the demo.
Thanks,
John
On Mon, Oct 30, 2023 at 8:26 PM John Carlson <yottzumm at gmail.com> wrote:
> Yes, this means skinCoord DEF comes before skin Coordinate USE, which is
> the information I was looking for.
>
> At least this is my reading of the standard.
>
> Joe, do you concur? The next thing to do is look at what’s done in the
> archive.
>
> Thanks,
>
> John
>
> On Mon, Oct 30, 2023 at 12:04 AM Brutzman, Donald (Don) (CIV) <
> brutzman at nps.edu> wrote:
>
>> Please use latest url for X3D 4.0 Architecture:
>>
>>
>>
>> -
>> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/
>> -
>> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/hanim.html#HAnimHumanoid
>>
>>
>>
>> HAnimHumanoid : X3DChildNode, X3DBoundedObject {
>>
>> […]
>>
>> MFNode [in,out] skin [] [Group, LOD, Shape, Switch, Transform,
>> IndexedFaceSet, IndexedFanSet, IndexedLineSet, IndexedQuadSet,
>> IndexedTriangleSet, IndexedTriangleStripSet]
>>
>>
>>
>> Further please note that the functional descriptions are provided in the
>> HAnim 2.0 standard:
>>
>>
>>
>> - HAnim 2.0 Part 1: Humanoid animation (HAnim) architecture, 6
>> Object interfaces, 6.2 Humanoid
>> -
>> https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid
>>
>>
>>
>> “The *skin* field contains one or more indexed mesh definitions. Those
>> indexed mesh definitions utilize the point and normal data that is defined
>> within the *skinCoord* and *skinNormal* fields, respectively, of the
>> *Humanoid* object. This field is defined as an generic type for which
>> the specific representation is defined by each binding to a presentation
>> system. Annex C VRML binding
>> <https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/VRMLInterface.html> contains
>> a binding for VRML. Annex D X3D binding
>> <https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/X3DInterface.html> describes
>> the Humanoid animation component of X3D specified in ISO/IEC 19775-1
>> <https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/bibliography.html#I19775_1>
>> .”
>>
>>
>>
>>
>>
>> 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:* x3d-public <x3d-public-bounces at web3d.org> *On Behalf Of *GPU
>> Group
>> *Sent:* Sunday, October 29, 2023 5:56 AM
>> *To:* John Carlson <yottzumm at gmail.com>
>> *Cc:* X3D Graphics public mailing list <x3d-public at web3d.org>
>> *Subject:* Re: [x3d-public] What are valid children of
>> HAnimHumanoid.skin? argument for allowing containerFields in x3d.py
>>
>>
>>
>>
>> https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/hanim.html#HAnimHumanoid
>>
>>
>> - skin [IndexedFaceSet, X3DGroupingNode, Shape]
>>
>> I haven't tried it but I don't see how freewrl could render a skin with
>> bare IFS, it needs to be wrapped in at least a Shape, and HAnimHumanoid
>> doesn't inherit from Shape
>>
>> HAnimHumanoid : X3DChildNode, X3DBoundedObject
>>
>>
>>
>> On Sun, Oct 29, 2023 at 6:45 AM GPU Group <gpugroup at gmail.com> wrote:
>>
>> xml with no containerField > freeWRL: Group and Transform, and today I
>> added Shape.
>>
>> Basically whatever ends up in that skin field, freewrl renders as normal
>> scenegraph, so you can have a transform hierarchy of skin chunks / shapes
>> and freewrl doesn't mind. (It's the skeleton and coordinate field that
>> changes the shape of anything that uses the same coordinates, and the scene
>> author presumes there's no weird transforms between chunks, but freewrl
>> doesn't enforce that).
>>
>> -Doug
>>
>>
>>
>> On Sun, Oct 29, 2023 at 4:24 AM John Carlson <yottzumm at gmail.com> wrote:
>>
>> * I am specifically speaking of the lack of containerField in XML output
>> from x3d.py. I also have issues with overuse of the “children”container
>> fields in VRML. I am speaking of instances where view3dscene reports an
>> error or does not show the scene (even trying tovrmlx3d would help). The
>> problem stems from lack of testing on HAnim VRML and XML outputs from
>> x3d.py. I could show Don an example, but he’s got a whole section of the
>> archive devoted to examples which do show the same behavior when tested
>> properly.
>>
>>
>>
>> One cannot just type in “containerField” in a python program and expect
>> x3d.py to list it in output. I might be able to subclass, but that would
>> require my own X3dToPython.xslt stylesheet.
>>
>>
>>
>> * Skin/shape is another topic in the email. See standard, where Shape is
>> not mentioned under skin, rather, indexed mesh nodes are. There is no
>> children field under Shape, but there’s a skin field under HAnimHumanoid.
>> Skin has an MFNode field type, and has SFNode children, AFAIK. The
>> question is whether these children should be Shapes or indexed meshes.
>>
>>
>>
>> On Sat, Oct 28, 2023 at 2:16 PM Joe D Williams <joedwil at earthlink.net>
>> wrote:
>>
>> > argument for allowing containerFields in x3d.py
>>
>>
>>
>> I don't understand. If no container fields then not able to do all of
>> x3d. We had to use containerField for the admittedly rare instance where
>> the default is not true. These are cases where looking up the
>> containerField in schema is not enough.
>>
>>
>>
>> Some are tricky, like skeleton where only the root Joint has to have the
>> containerField as skeleton.
>>
>>
>>
>> skin contains a Shape which does not have children.
>>
>>
>>
>> However we are investigating the idea of how to code LOD choices for
>> skin. I think we already know how to do that for that for Segment geometry.
>>
>>
>>
>>
>> Thanks,
>>
>> Joe
>>
>>
>>
>>
>>
>> -----Original Message-----
>> From: John Carlson <yottzumm at gmail.com>
>> Sent: Oct 26, 2023 10:08 AM
>> To: Joe D Williams <joedwil at earthlink.net>, X3D Graphics public mailing
>> list <x3d-public at web3d.org>
>> Subject: What are valid children of HAnimHumanoid.skin? argument for
>> allowing containerFields in x3d.py
>>
>>
>>
>> From: https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/hanim.html#HAnimHumanoid
>>
>> I see:
>>
>> MFNode [in,out] skin [] [IndexedFaceSet, IndexedFanSet, IndexedQuadSet, IndexedTriangleSet, IndexedTriangleStripSet]
>>
>> And fromL https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid
>>
>> sequence<Object> skin [] [indexed mesh objects as defined by the representation]
>>
>>
>>
>> But in actual practice, I see:
>>
>>
>>
>> <Shape DEF='Joe_Shape <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_Shape>' containerField='skin'>
>>
>> <Appearance DEF='Joe_skin_Appearance
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_skin_Appearance>'>
>>
>>
>> <Material DEF='Joe_skin_Material
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#Joe_skin_Material>
>> ' diffuseColor='0.3 0.3 0.6' emissiveColor='0.3 0.3 0.6'/>
>> <ImageTexture DEF='JoeSkinImageTexture
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#JoeSkinImageTexture>
>> '
>> url=' "JoeBodyTexture29.png
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeBodyTexture29.png>"
>> "
>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png
>>
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png>"
>> ' />
>>
>> <!-- *ROUTE* information for KickTextureTransform node: [*from*
>> SkinInterpolator.value_changed *to* rotation
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#ROUTE_194>]
>> -->
>> <TextureTransform DEF='KickTextureTransform
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.html#KickTextureTransform>
>> '/>
>>
>> </Appearance>
>>
>>
>>
>> From:
>>
>>
>>
>>
>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html
>>
>>
>>
>> And
>>
>>
>>
>> skin [
>>
>> DEF Joe_Shape Shape {
>>
>> appearance DEF Joe_skin_Appearance Appearance {
>>
>> material DEF Joe_skin_Material Material {
>>
>> diffuseColor 0.3 0.3 0.6
>>
>> emissiveColor 0.3 0.3 0.6
>>
>> }
>>
>> texture DEF JoeSkinImageTexture ImageTexture {
>>
>> url [ "JoeBodyTexture29.png" "
>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JoeBodyTexture29.png"
>> ]
>>
>> }
>>
>> textureTransform DEF KickTextureTransform TextureTransform {
>>
>> }
>>
>> }
>>
>> ==================================================
>>
>> So it would seem like Shapes with an Indexed geometry is what we're
>> aiming for in the standard as one of the possibly many children of the skin
>> container field (note the space).
>>
>>
>>
>> That is all okay, AFAIAC, just extremely confusing when deciding where to
>> add containerFields in DOM documents.
>>
>>
>>
>>
>>
>> For example, consider the below:
>>
>>
>>
>> <HAnimJoint
>> USE='hanim_l_carpal_distal_interphalangeal_4'/>
>>
>> <HAnimJoint USE='hanim_l_metacarpophalangeal_3'/>
>>
>> <HAnimJoint
>> USE='hanim_l_carpal_proximal_interphalangeal_3'/>
>>
>> <HAnimJoint
>> USE='hanim_l_carpal_distal_interphalangeal_3'/>
>>
>> <HAnimJoint USE='hanim_l_metacarpophalangeal_2'/>
>>
>> <HAnimJoint
>> USE='hanim_l_carpal_proximal_interphalangeal_2'/>
>>
>> <HAnimJoint
>> USE='hanim_l_carpal_distal_interphalangeal_2'/>
>>
>> [ etc. ]
>>
>>
>>
>> It may not be apparent, but X3DJSAIL complains about this. There's no
>> containerField='joints', right? But I'm generating this code using x3d.py
>> which doesn't allow me to list containerFields!
>>
>>
>>
>> Grr! Here are some of the "brutzman" messages from X3DJSAI, which are
>> valid. I really want to assign joints as a containerField, so perhaps I
>> will just do it in X3DJSONLD.
>>
>>
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>> [apply] [error] X3DLoaderDOM: Parent-child node relationship not
>> found! (parent HAnimHumanoid, child HAnimJoint, containerField='children')
>> Please report this problem to brutzman at nps.edu
>>
>>
>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20231030/fd742cbe/attachment-0001.html>
More information about the x3d-public
mailing list