[x3d-public] HAnimDisplacer effect on coord.point

Joe D Williams joedwil at earthlink.net
Sun Feb 9 09:21:59 PST 2025


> Unless you can figure out how to restore the original point values when changing weight

Doesn't the inverse bind matrix give you original values?
After joint-weighted animations are done then the displacer-weighted value is added.
Joe

-----Original Message-----
From: Andreas Plesch <andreasplesch at gmail.com>
Sent: Feb 9, 2025 8:35 AM
To: John Carlson <yottzumm at gmail.com>
Cc: 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>, Joe D Williams <joedwil at earthlink.net>, Holger Seelig <holger.seelig at yahoo.de>, GPU Group <gpugroup at gmail.com>
Subject: Re: [x3d-public] HAnimDisplacer effect on coord.point

Good points. The tension is that a Displacer manipulates the points from the coord.point field on the one hand but may not affect the value of the coord.point field on the other hand.

This tension may not have to be resolved and left open to browser interpretation and preference.
 
A use case could be a script which wants to use the actual vertex positions of a displaced Segment geometry to further distort the geometry.
 
An implementation of Displacer may consist of an internal route from the weighted displacements added to the resting coordinates to the coord.point field of the parent node(s).
 
-Andreas
 
On Sun, Feb 9, 2025, 9:27 AM John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)> wrote:
I tried to answer that I don’t think the point is actually changed.  It’s the weight that changes, and the final mesh.  I realize the desire to have a final point value visible in the debugger, but I don’t like the backward math to recompute the point, if the weight changes.  But yeah, if you want to add the math to compute the final mesh point from a previous final mesh point, each time, go for it.  I would batch all the changes into a single event per mesh.  I also realize a mesh uses a lot of space, and there’s a desire to optimize space.
 
That’s my best guess.
 
So yes, probably there’s a lot of multiplication and adding done during rendering each frame.
 
Unless you can figure out how to restore the original point values when changing weights.  It might be possible, but it sounds possibly more expensive than the above.  I prefer simple straightforward solutions to complicated ones, realizing there’s a debugging need, and HTML provides that.
 
I realize one needs to compute the final onscreen point each time, and it’s valuable to retain the final point for debugging.
 
I don’t need an event if the point changes.  Maybe we should wait for a use case?  How many events would I get if a point changes?
 
Is there any harm in assuming that no event is generated? Does something else need the event?  Is there any harm generating the event?  Can people listen for when the weight changes?
 
I think more browser vendors should weigh in.  Frankly, I’m on the fence, and I don’t have a use case.  What did we do for Joint displacers?
There shouldn’t be surprises.
 
John
 
On Sun, Feb 9, 2025 at 6:25 AM Andreas Plesch <andreasplesch at gmail.com (mailto:andreasplesch at gmail.com)> wrote:
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/20250209/0469524b/attachment-0001.html>


More information about the x3d-public mailing list