[x3d-public] HAnimDisplacer effect on coord.point
Joe D Williams
joedwil at earthlink.net
Mon Feb 10 04:27:50 PST 2025
> Having a coord field is wise as it makes it unambiguous how displacers are applied.
Level 1 can include displacers operating on geometry defined in coord fields in a Segment or child Site nodes.
Level 2 is can include displacers operating on geometry defined in the skinCoord field of the Humanoid.
Level 2 can include Level 1.
To me the spec is clear, the displacers in a Segment control points indexed in order of appearance in the Segment.
A separate list of displacer-affected points is not necessary
This is not in conflict with 'skin' where displacers in a Joint control points indexed by order of appearance in the skinCoord field.
Segment geometry is not 'skin' so we would need a node maybe named
segmentCoord Coordinate point which would contain all points of all geometries in the Segment?
Does not seem useful when the information is there already in the geometry as it appears directly in the code.
The skin is special because the skinCoord Coordinate point field list the specific points
to be used in the skin animation process, as weighted by one or more Joint rotation data.
This listing may (1) duplicate (USE) a coord Coordinate point field defining skin mesh or,
(2) a sampling of points found in coord Coordinate point fields of various Segment geometry.
The latter (2) is some kind of tricky way to constitute a skin from a set of individual geometries
contained in various Segment nodes.
Again, for Level 2, the skin points are animated as weighted algorithm as certain Joint rotation(s) are applied,
then any points also controlled by Joint displacers is applied.
For Level 1 the child geometry of Segment is moved directly by the parent Joint rotation,
then any Segment displacers is applied.
So yes it can be complicated but if the Level 1 Segment geometry and the Level 2 skin geometry
are separate then it gets easy again.
Thanks and Best,
Joe
-----Original Message-----
From: Andreas Plesch <andreasplesch at gmail.com>
Sent: Feb 9, 2025 2:35 PM
To: John Carlson <yottzumm at gmail.com>
Cc: Joe D Williams <joedwil at earthlink.net>, Brutzman Donald (Don) (CIV) <brutzman at nps.edu>, Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>, Carol McDonald <cemd2 at comcast.net>
Subject: Re: [x3d-public] HAnimDisplacer effect on coord.point
Having a coord field is wise as it makes it unambiguous how displacers are applied.
The ManyClocks.x3d example has a lot of HAnimSegment nodes which are empty, only have default values, and seem useless.
In particular a NULL coord field invites problems.
Probably such a node should be just ignored but it would be good to have more specific spec. guidance, eg. allowing undefined browser behavior similar to many other nodes.
There is also a weird Segment node (hanim___4) which does not have geometry and a NULL coord field, but has a displacer. The displacer is even the target of a route. It would be good if such self in-consistent content would be allowed to lead to undefined browser behavior as well.
Andreas
On Sun, Feb 9, 2025, 2:34 PM John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)> wrote:
Perhaps we should just make the coord field optional with Segment and Site displacers? If not specified, look in HAnimHumanoid.skinCoord, or make the search for coords hierarchical. As Joe says, a cascade.
Wondering,
John
On Sun, Feb 9, 2025 at 12:33 PM Andreas Plesch <andreasplesch at gmail.com (mailto:andreasplesch at gmail.com)> wrote:
That would be the point field of a Coordinate node
https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#Coordinate
which is used by the coord field of
https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSegment
Andreas
On Sun, Feb 9, 2025, 12:36 PM Joe D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)> wrote:
> coord node emit a point_changed event
sorry,I don't see a field anywhere with that event. Displacer is likely to change several points when new weight is sent. All part of the cascade to produce the changed mesh?
Thanks,
Joe
-----Original Message-----
From: Andreas Plesch <andreasplesch at gmail.com (mailto:andreasplesch at gmail.com)>
Sent: Feb 9, 2025 4:25 AM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu (mailto:brutzman at nps.edu)>
Cc: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>, Carol McDonald <cemd2 at comcast.net (mailto:cemd2 at comcast.net)>, Joe D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)>, John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)>
Subject: Re: [x3d-public] HAnimDisplacer effect on coord.point
Don, Joe and John
Thanks for collecting these references.
But I am not sure if there is an answer to my original question. Let me rephrase a bit the question:
After a Displacer contained in a Segment node receives a set_weight input, should then the coord node emit a point_changed event ?
I do not think HAnim is concerned about that, so it is really a X3D question.
Thanks, Andreas
On Sun, Feb 9, 2025, 12:49 AM Brutzman, Donald (Don) (CIV) <brutzman at nps.edu (mailto:brutzman at nps.edu)> wrote:
Thanks for pointing in the right direction John.
Direct links to functional requirements for Displacer in HAnim 2.0 specification:
* HAnim 2.0. Part 1: Humanoid animation (HAnim) architecture, Clause 4 Concepts, 4.7 Displacer object
* https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#DisplacerObject
* HAnim 2.0. Part 1: Humanoid animation (HAnim) architecture, Clause 6 Object interfaces, 6.6 Displacer
* https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Displacer
and
* X3D 4.0 Architecture, Clause 26 Humanoid Animation (HAnim) component, 26.3.1 HAnimDisplacer
* https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimDisplacer
and informative
* X3D Tooltips, HAnimDisplacer
* https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimDisplacer
Thanks for implementation efforts and careful scrutiny.
Questions and potential issues/clarifications/corrections are always welcome.
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
From: x3d-public <x3d-public-bounces at web3d.org (mailto:x3d-public-bounces at web3d.org)> on behalf of John Carlson via x3d-public <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Sent: Saturday, February 8, 2025 3:43 AM
To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>; Carol McDonald <cemd2 at comcast.net (mailto:cemd2 at comcast.net)>; Joe D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)>
Cc: John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)>; Andreas Plesch <andreasplesch at gmail.com (mailto:andreasplesch at gmail.com)>
Subject: Re: [x3d-public] HAnimDisplacer effect on coord.point
Here’s what HAnim spec says under Displacer:
https://www.web3d.org/documents/specifications/19774/V2.0/index.html
“For the Displacer objects that are contained in the displacers field of the Segment objects, the displacements are defined and applied in the Segment coordinate system. The base mesh for the morphed Segment is the original mesh defined in the Segment.”
And here’s what it says under Segment:
“
The coord field is used for Segment objects that have deformable meshes and shall contain coordinates referenced from the indexed mesh for the Segment object. The coordinates are given the same name as the Segment object, but with a "_coords" appended (e.g.,"skull_coords").”
displacements are an offset from the mesh, with weight from 0 to 1. So weight times displacement is total offset from base mesh. 0 weight = no offset, 1 weight = full displacements offset
The Coordinate point is maintained to handle weight = 0. Weight ranges from 0 to 1, but double check.
Joe or Carol might know where to find it in the HAnim spec.
I believe the answer is, “during rendering,”. Since weight can vary with animation, and so can displacements, AFAIK. More than one displacer can be applied to the mesh.
I have not read the spec.
John
On Sat, Feb 8, 2025 at 5:13 AM Andreas Plesch via x3d-public <x3d-public at web3d.org (mailto:x3d-public at web3d.org)> wrote:
https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/hanim.html#HAnimDisplacer
does not directly explain what the effect of the displacer on the coord.point field of the containing HAnimSegment is. But it mentions the coord.point field and seems to imply that the coord.point field is involved.
So the question is if the Displacer should alter the coord.point field in order to achieve a graphical displacement, or if the Browser should only apply the displacements during rendering without a change in the coord.point field ?
This is relevant if the coord.point field is accessed by routes or scripts, in addition to displacers.
Thanks for any feedback or ideas,
Andreas
--
Andreas Plesch
Waltham, MA 02453
_______________________________________________
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/20250210/ed532016/attachment-0001.html>
More information about the x3d-public
mailing list