[x3d-public] What are valid children of HAnimHumanoid.skin? argument for allowing containerFields in x3d.py
John Carlson
yottzumm at gmail.com
Sun Oct 29 06:05:28 PDT 2023
Ah, I guess I was looking at the wrong standard. Apologies!
John
On Sun, Oct 29, 2023 at 7:55 AM GPU Group <gpugroup at gmail.com> wrote:
>
> 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/20231029/56e92a88/attachment-0001.html>
More information about the x3d-public
mailing list