[x3d-public] X3D scene vs X3D scene graph?

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Sun Jan 29 16:58:56 PST 2023


You are looking at complex library internals, or advanced utility methods, not user-facing library calls. You will not find parent methods in the SAI.  No need for that.

Please exit the interior, go to the other end of the telescope, and look at how 4000 x3d models have been consistently translated into Java using simple, straightforward, verbally speakable methods.  Same for Python JSON and Turtle. Those are the design patterns and examples that programmers or authors can use to build X3D models.

Easy is good.

v/r Don
________________________________
From: x3d-public <x3d-public-bounces at web3d.org> on behalf of John Carlson <yottzumm at gmail.com>
Sent: Sunday, January 29, 2023 12:36
To: X3D Graphics public mailing list <x3d-public at web3d.org>
Subject: Re: [x3d-public] X3D scene vs X3D scene graph?

X3D4 looks like it conforms to Don’s ideas, addChildren is feasible, but addParents is not.  Some structures (X3DNode, X3DChildNode) don’t currently support parent(s) in the node fields.

In X3DJSAIL, parent methods are available in X3DConcreteElement, X3DConcreteNode X3DConcreteStatement.   Whether there are direct references or search techniques to get parent(s) is unknown.  It’s also unknown whether the classes appear in standard(s).

Please confirm or deny the above.

John

On Sun, Jan 29, 2023 at 11:53 AM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
Indeed, the X3D3 scene graph is a directed acyclic graph, not a tree:
https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/concepts.html#Scenegraphhierarchy

I’ll look at X3D4 next.

Is the X3D scene different from the X3D scene graph?  View vs Model?

I’ll start looking at node declarations next.

John

On Sun, Jan 29, 2023 at 11:02 AM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
We’ve had “X3D scene has a tree structure” discussion in email before, and we got into DEF/USE and ID/IDREF.

I am aware that the HAnim skeleton is a tree, per the standard.

I’m guessing SAI has potential for adding a child to more than one parent, if not the encodings.   Is this allowed or restricted?

I’m pretty sure XML DOM an HTML DOM restrict nodes to one parent.

John

On Sun, Jan 29, 2023 at 12:50 AM Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>> wrote:
John, it is definitely helpful to know that every X3D scene has a tree structure and thus contains no loops.


  *   Wikipedia Tree (data structure)
  *   https://en.wikipedia.org/wiki/Tree_(data_structure)<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTree_(data_structure)&data=05%7C01%7Cbrutzman%40nps.edu%7C6995fc01be50439d6b0b08db02386eb9%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638106213646601157%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EV4T0xo2bmSwz2GxWzGBdXBxQ3OiYIAQ3n0E8j531ng%3D&reserved=0>

So each node only has one parent, and perhaps multiple ancestors in a straight line above that (each with only one parent).

These kinds of relationships and constraints can appear in many ways outside of X3D.  Also interesting:


  *   Wikipedia: Tree structure
  *   https://en.wikipedia.org/wiki/Tree_structure<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTree_structure&data=05%7C01%7Cbrutzman%40nps.edu%7C6995fc01be50439d6b0b08db02386eb9%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638106213646601157%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Ke5KVJ7evmT2FjauZwdUgumcvyvSiajL%2Fy8HSLLh9Vc%3D&reserved=0>

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu<mailto: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<http://faculty.nps.edu/brutzman>

From: John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>>
Sent: Saturday, January 28, 2023 10:18 PM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>>
Cc: Joseph D Williams <joedwil at earthlink.net<mailto:joedwil at earthlink.net>>; X3D Graphics public mailing list <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Subject: Re: HAnim2 LOA4 Hierarchy from X3DUOM

NPS WARNING: *external sender* verify before acting.

Make that 2 USE and 1 DEF.

Ugh, i fall into confusion now.

The parents have different names and the child has 1 DEF and 2 USE.

Sorry!

John

On Sun, Jan 29, 2023 at 12:09 AM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
Actually I haven’t checked my code for “several parent” issues yet.  I have no idea what several parents would look like, except for 3 USE/1 DEF nodes with same name field value.  I’m pretty sure this only applies to LOA4—we don’t have a lot of LOA4 examples of yet.

If this is not yet included in your tools, that would be helpful to check.

I hope we haven’t lost this info!

It’s my recollection that this occurred in either the hands or feet.

John

I made a couple of changes from previous mail, below, sorry for confusion.

On Sat, Jan 28, 2023 at 11:45 PM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
It’s also useful to recall that a couple of parts of the skeleton have multiple parents (with the root as topmost parent), which I have yet to include, FYI.   More details would be welcome!

John

On Sat, Jan 28, 2023 at 3:19 PM Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>> wrote:
As part of followup actions from yesterday’s three specific parent-child relationship corrections, am now autogenerating the following table using X3DUOM.  It should match the international-standard hand-generated HAnim2 specification for LOA-4 Hierarchy.

Spot check:

  1.  Joint vl5 has parent humanoid_root
  2.  Joint l_sternoclavicular has parent vt1
  3.  Joint r_sternoclavicular has parent vt1

Am hoping that someone can check that everything matches correctly -- hey, this should match your body too!  Any remaining parent-child relationship errors that are similar to yesterday’s errors should stand out.  All corrections are most welcome.

This is another great confirmation test to continue improving our confidence when producing and diagnosing the correctness of HAnim models.  The autogeneration stylesheet and these results are all checked into version control, and they are now part of our production chain for X3D4 validation.  I will continue work on various other autogenerated diagnostics (X3D Schematron, X3D Validator, X3D-Edit etc.) and report when everything is ready.

Thanks again to Joe and John for dogged persistence tracking down the errors in the first place.  Essential work.

Have fun with HAnim and X3D!  8)


HAnim2 LOA4 Hierarchy from X3DUOM
https://www.web3d.org/x3d/stylesheets/HAnimLOA4HierarchyTable.txt

Authoritative reference: HAnim version 2, Part 1: Humanoid animation (HAnim) architecture,
  clause 4 Concepts, section 4.9.6.4 LOA‑4 hierarchy
https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#Hierarchy4
  clause 4 Concepts, Figure 4.7 — LOA‑4 joints
https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#f-LOA4Joints

humanoid_root : sacrum
  sacroiliac : pelvis
  | l_hip : l_thigh
  | | l_knee : l_calf
  | |   l_talocrural : l_talus
  | |     l_talocalcaneonavicular : l_navicular
  | |     | l_cuneonavicular_1 : l_cuneiform_1
  | |     | | l_tarsometatarsal_1 : l_metatarsal_1
  | |     | |   l_metatarsophalangeal_1 : l_tarsal_proximal_phalanx_1
  | |     | |     l_tarsal_interphalangeal_1 : l_tarsal_distal_phalanx_1
  | |     | l_cuneonavicular_2 : l_cuneiform_2
  | |     | | l_tarsometatarsal_2 : l_metatarsal_2
  | |     | |   l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2
  | |     | |     l_tarsal_proximal_interphalangeal_2 : l_tarsal_middle_phalanx_2
  | |     | |       l_tarsal_distal_interphalangeal_2 : l_tarsal_distal_phalanx_2
  | |     | l_cuneonavicular_3 : l_cuneiform_3
  | |     |   l_tarsometatarsal_3 : l_metatarsal_3
  | |     |     l_metatarsophalangeal_3 : l_tarsal_proximal_phalanx_3
  | |     |       l_tarsal_proximal_interphalangeal_3 : l_tarsal_middle_phalanx_3
  | |     |         l_tarsal_distal_interphalangeal_3 : l_tarsal_distal_phalanx_3
  | |     l_calcaneocuboid : l_calcaneus
  | |       l_transversetarsal : l_cuboid
  | |         l_tarsometatarsal_4 : l_metatarsal_4
  | |         | l_metatarsophalangeal_4 : l_tarsal_proximal_phalanx_4
  | |         |   l_tarsal_proximal_interphalangeal_4 : l_tarsal_middle_phalanx_4
  | |         |     l_tarsal_distal_interphalangeal_4 : l_tarsal_distal_phalanx_4
  | |         l_tarsometatarsal_5 : l_metatarsal_5
  | |           l_metatarsophalangeal_5 : l_tarsal_proximal_phalanx_5
  | |             l_tarsal_proximal_interphalangeal_5 : l_tarsal_middle_phalanx_5
  | |               l_tarsal_distal_interphalangeal_5 : l_tarsal_distal_phalanx_5
  | r_hip : r_thigh
  |   r_knee : r_calf
  |     r_talocrural : r_talus
  |       r_talocalcaneonavicular : r_navicular
  |       | r_cuneonavicular_1 : r_cuneiform_1
  |       | | r_tarsometatarsal_1 : r_metatarsal_1
  |       | |   r_metatarsophalangeal_1 : r_tarsal_proximal_phalanx_1
  |       | |     r_tarsal_interphalangeal_1 : r_tarsal_distal_phalanx_1
  |       | r_cuneonavicular_2 : r_cuneiform_2
  |       | | r_tarsometatarsal_2 : r_metatarsal_2
  |       | |   r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2
  |       | |     r_tarsal_proximal_interphalangeal_2 : r_tarsal_middle_phalanx_2
  |       | |       r_tarsal_distal_interphalangeal_2 : r_tarsal_distal_phalanx_2
  |       | r_cuneonavicular_3 : r_cuneiform_3
  |       |   r_tarsometatarsal_3 : r_metatarsal_3
  |       |     r_metatarsophalangeal_3 : r_tarsal_proximal_phalanx_3
  |       |       r_tarsal_proximal_interphalangeal_3 : r_tarsal_middle_phalanx_3
  |       |         r_tarsal_distal_interphalangeal_3 : r_tarsal_distal_phalanx_3
  |       r_calcaneocuboid : r_calcaneus
  |         r_transversetarsal : r_cuboid
  |           r_tarsometatarsal_4 : r_metatarsal_4
  |           | r_metatarsophalangeal_4 : r_tarsal_proximal_phalanx_4
  |           |   r_tarsal_proximal_interphalangeal_4 : r_tarsal_middle_phalanx_4
  |           |     r_tarsal_distal_interphalangeal_4 : r_tarsal_distal_phalanx_4
  |           r_tarsometatarsal_5 : r_metatarsal_5
  |             r_metatarsophalangeal_5 : r_tarsal_proximal_phalanx_5
  |               r_tarsal_proximal_interphalangeal_5 : r_tarsal_middle_phalanx_5
  |                 r_tarsal_distal_interphalangeal_5 : r_tarsal_distal_phalanx_5
  vl5 : l5
    vl4 : l4
      vl3 : l3
        vl2 : l2
          vl1 : l1
            vt12 : t12
              vt11 : t11
                vt10 : t10
                  vt9 : t9
                    vt8 : t8
                      vt7 : t7
                        vt6 : t6
                          vt5 : t5
                            vt4 : t4
                              vt3 : t3
                                vt2 : t2
                                  vt1 : t1
                                    vc7 : c7
                                    | vc6 : c6
                                    |   vc5 : c5
                                    |     vc4 : c4
                                    |       vc3 : c3
                                    |         vc2 : c2
                                    |           vc1 : c1
                                    |             skullbase : skull
                                    |               l_eyelid_joint : l_eyelid
                                    |               r_eyelid_joint : r_eyelid
                                    |               l_eyeball_joint : l_eyeball
                                    |               r_eyeball_joint : r_eyeball
                                    |               l_eyebrow_joint : l_eyebrow
                                    |               r_eyebrow_joint : r_eyebrow
                                    |               temporomandibular : jaw
                                    l_sternoclavicular : l_clavicle
                                    | l_acromioclavicular : l_scapula
                                    |   l_shoulder : l_upperarm
                                    |     l_elbow : l_forearm
                                    |       l_radiocarpal : l_carpal
                                    |         l_midcarpal_1 : l_trapezium
                                    |         | l_carpometacarpal_1 : l_metacarpal_1
                                    |         |   l_metacarpophalangeal_1 : l_carpal_proximal_phalanx_1
                                    |         |     l_carpal_interphalangeal_1 : l_carpal_distal_phalanx_1
                                    |         l_midcarpal_2 : l_trapezoid
                                    |         | l_carpometacarpal_2 : l_metacarpal_2
                                    |         |   l_metacarpophalangeal_2 : l_carpal_proximal_phalanx_2
                                    |         |     l_carpal_proximal_interphalangeal_2 : l_carpal_middle_phalanx_2
                                    |         |       l_carpal_distal_interphalangeal_2 : l_carpal_distal_phalanx_2
                                    |         l_midcarpal_3 : l_capitate
                                    |         | l_carpometacarpal_3 : l_metacarpal_3
                                    |         |   l_metacarpophalangeal_3 : l_carpal_proximal_phalanx_3
                                    |         |     l_carpal_proximal_interphalangeal_3 : l_carpal_middle_phalanx_3
                                    |         |       l_carpal_distal_interphalangeal_3 : l_carpal_distal_phalanx_3
                                    |         l_midcarpal_4_5 : l_hamate
                                    |           l_carpometacarpal_4 : l_metacarpal_4
                                    |           | l_metacarpophalangeal_4 : l_carpal_proximal_phalanx_4
                                    |           |   l_carpal_proximal_interphalangeal_4 : l_carpal_middle_phalanx_4
                                    |           |     l_carpal_distal_interphalangeal_4 : l_carpal_distal_phalanx_4
                                    |           l_carpometacarpal_5 : l_metacarpal_5
                                    |             l_metacarpophalangeal_5 : l_carpal_proximal_phalanx_5
                                    |               l_carpal_proximal_interphalangeal_5 : l_carpal_middle_phalanx_5
                                    |                 l_carpal_distal_interphalangeal_5 : l_carpal_distal_phalanx_5
                                    r_sternoclavicular : r_clavicle
                                      r_acromioclavicular : r_scapula
                                        r_shoulder : r_upperarm
                                          r_elbow : r_forearm
                                            r_radiocarpal : r_carpal
                                              r_midcarpal_1 : r_trapezium
                                              | r_carpometacarpal_1 : r_metacarpal_1
                                              |   r_metacarpophalangeal_1 : r_carpal_proximal_phalanx_1
                                              |     r_carpal_interphalangeal_1 : r_carpal_distal_phalanx_1
                                              r_midcarpal_2 : r_trapezoid
                                              | r_carpometacarpal_2 : r_metacarpal_2
                                              |   r_metacarpophalangeal_2 : r_carpal_proximal_phalanx_2
                                              |     r_carpal_proximal_interphalangeal_2 : r_carpal_middle_phalanx_2
                                              |       r_carpal_distal_interphalangeal_2 : r_carpal_distal_phalanx_2
                                              r_midcarpal_3 : r_capitate
                                              | r_carpometacarpal_3 : r_metacarpal_3
                                              |   r_metacarpophalangeal_3 : r_carpal_proximal_phalanx_3
                                              |     r_carpal_proximal_interphalangeal_3 : r_carpal_middle_phalanx_3
                                              |       r_carpal_distal_interphalangeal_3 : r_carpal_distal_phalanx_3
                                              r_midcarpal_4_5 : r_hamate
                                                r_carpometacarpal_4 : r_metacarpal_4
                                                | r_metacarpophalangeal_4 : r_carpal_proximal_phalanx_4
                                                |   r_carpal_proximal_interphalangeal_4 : r_carpal_middle_phalanx_4
                                                |     r_carpal_distal_interphalangeal_4 : r_carpal_distal_phalanx_4
                                                r_carpometacarpal_5 : r_metacarpal_5
                                                  r_metacarpophalangeal_5 : r_carpal_proximal_phalanx_5
                                                    r_carpal_proximal_interphalangeal_5 : r_carpal_middle_phalanx_5
                                                      r_carpal_distal_interphalangeal_5 : r_carpal_distal_phalanx_5


all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu<mailto: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<http://faculty.nps.edu/brutzman>

From: Brutzman, Donald (Don) (CIV)
Sent: Friday, January 27, 2023 7:02 PM
To: Joseph D Williams <joedwil at earthlink.net<mailto:joedwil at earthlink.net>>; John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>>
Cc: X3D Graphics public mailing list <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>; brutzman at nps.edu<mailto:brutzman at nps.edu>
Subject: RE: HAnim Schematron output sampled

Thanks for discussion Joe, really helpful.  We definitely have had some mixed signals here.

Summary of changes we applied to HAnim schema relationships:

  1.  Joint vl5 has parent humanoid_root
  2.  Joint l_sternoclavicular has parent vt1
  3.  Joint r_sternoclavicular has parent vt1

I will work on updating these corrections into all the tools accordingly – X3DUOM, X3D Schematron, X3DJSAIL Java, X3DPSAIL Python, and X3D-Edit..

Thanks too for fixing multiple models together.

Awesome work, sincere thanks, take care.

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu<mailto: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<http://faculty.nps.edu/brutzman>

From: Joseph D Williams <joedwil at earthlink.net<mailto:joedwil at earthlink.net>>
Sent: Sunday, January 22, 2023 11:53 AM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>>; John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>>
Cc: X3D Graphics public mailing list <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Subject: RE: HAnim Schematron output sampled


  *   vl5 has parent humanoid_root rather than expected sacroiliac
  *   l_sternoclavicular has parent vt1 rather than expected vc7
  *   r_sternoclavicular has parent vt1 rather than expected vc7

Don, these three items serve as a summary when processing a model that is correct according to the diagram.
Much to discuss regarding some existing examples.
Joe

From: Brutzman, Donald (Don) (CIV)<mailto:brutzman at nps.edu>
Sent: Sunday, January 22, 2023 10:09 AM
To: Joseph D Williams<mailto:joedwil at earthlink.net>; John Carlson<mailto:yottzumm at gmail.com>
Cc: X3D Graphics public mailing list<mailto:x3d-public at web3d.org>
Subject: Re: HAnim Schematron output sampled

Sounds like progress, but not quite focused enough to make any fixes yet…. Clarity his critical.

Hopefully you guys can create a simple list consisting of simple triplets:

  *   suspect joint or segment name,
  *   the incorrect parent described in the X3D XML schema,, and
  *   the correct parent shown by the diagrams in the specifications.

If there is such a simple list of a few names/errors/corrections available, I hope to have some time Monday or Tuesday afternoon to work on it together.  Onward…

v/r Don
[cid:185fe6662c2ad7999131]
From: Joseph D Williams <joedwil at earthlink.net<mailto:joedwil at earthlink.net>>
Sent: Saturday, January 21, 2023 11:07:06 PM
To: John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>>; Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>>; X3D Graphics public mailing list <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Subject: RE: HAnim Schematron output sampled


Hi,

The expected ones are not correct.  Vl5 is a child of root and sternos and vc7 are childs of vt1. The schematron claims are wrong.

The schematron is wrong according to the Concepts 4 diagrams for loa3 and loa4.



  *   Yes, vl5 is a child of sacroiliac, according to Joe.   X3DUOM/schematron wins!



No, vl5 is a child of root. Schematron is wrong.

The diagrams are correct.

Joe



From: John Carlson<mailto:yottzumm at gmail.com>
Sent: Sunday, January 15, 2023 5:46 PM
To: Joe D Williams<mailto:joedwil at earthlink.net>; Don Brutzman<mailto:brutzman at nps.edu>; X3D Graphics public mailing list<mailto:x3d-public at web3d.org>
Subject: Re: HAnim Schematron output sampled


vl5 has parent humanoid_root rather than expected sacroiliac.  Yes, vl5 is a child of sacroiliac, according to Joe.   X3DUOM/schematron wins!

l_sternoclavicular has parent vt1 rather than expected vc7.  Please confirm.

r_sternoclavicular has parent vt1 rather than expected vc7.  Please confirm.



_______________________________________________
x3d-public mailing list
x3d-public at web3d.org<mailto: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/20230130/2c587aa4/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 159 bytes
Desc: image001.png
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230130/2c587aa4/attachment-0001.png>


More information about the x3d-public mailing list