[x3d-public] New description fields and Displacer

John Carlson yottzumm at gmail.com
Sun Feb 12 17:24:48 PST 2023


Don, the HAnimDisplacer.weight has the wording “The weigh factor” in the
tooltip field description (see your link and scroll down to weight field).
Perhaps there should be an additional “t”, as in “The weight factor”?

I don’t know how I do it!   Perhaps something I learned in math class?

Perhaps someone can suggest an authoring tool for HAnim that authors
displacers?   More assistance, like visual feedback of displacer events in
the user interface would be terrific!  Makehuman?  I’ll check out the
resources page.

John

On Sun, Feb 12, 2023 at 6:28 PM Brutzman, Donald (Don) (CIV) <
brutzman at nps.edu> wrote:

> It will be good to get some HAnimDisplacer examples authored and
> available. We have very few. When Joe has a few displaces working in his
> sophisticated kicking and walking models, we will also extract some simple
> ones as standalone demonstrations for testing.  Hopefully they will
> facilitate good support, troubleshooting and conformance.
>
> Succinct field summary with links:
> https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimDisplacer
>
> v/r Don
> ------------------------------
> *From:* Joseph D Williams <joedwil at earthlink.net>
> *Sent:* Sunday, February 12, 2023 10:46
> *To:* Michalis Kamburelis <michalis.kambi at gmail.com>
> *Cc:* John Carlson <yottzumm at gmail.com>; Brutzman, Donald (Don) (CIV) <
> brutzman at nps.edu>; GPU Group <gpugroup at gmail.com>; X3D Graphics public
> mailing list <x3d-public at web3d.org>
> *Subject:* RE: New description fields and Displacer
>
>
> First, please get Displacer running. I can’t or haven’t been able to test
> some others. All I really have is old BS Contact demo
>
> Thank You for fine Hanim, except Displacer:)
>
>
>
> Please try to get one working with one segment or site geometry.
>
> The coordIndex is the order of points as appears in the user code.
>
> The Displacer is operating in coordinate space of target geometry of
> parent Transform.
>
>
>
> Humanoid
>
> .Skeleton
>
> ..Joint
>
> ...Segment
>
> ....Geometry
>
> ....Displacer
>
> ....Site
>
> .....Geometry
>
> .....Displacer
>
> ...Joint …
>
> .Skin
>
> ..Geometry
>
> ..Displacer
>
>   (coded as direct child of controlling Joint)
>
>
>
> As a simple pattern, since Displacer is not a container and does not carry
> a reference to the target geometry.
>
> From that, please insert the Displacer immediately following the target
> geometry.
>
>
>
> If the Displacer is acting upon skin vertices, there is indication that
> the Displacer should be direct child of Joint with control of all or subset
> of vertices also controlled by the Joint. That would make the Displacer as
> allowed child of Joint, an honor otherwise shared only by Segment and
> Joint.
>
>
>
> Somewhere in the past it was set that the Displacer is not a container and
> does not need a coded reference
>
> to the target geometry. So, each Displacer must be associated with
> specific vertices
>
> of a particular geometry by its location in the user code.
>
>
>
> Thus, it seems reasonable to define that for Segment or Site geometry,
>
> the Displacer should be child in the same coordinate space as the
> geometry.
>
> Sibling of Segment geometry or Transform holding Segment geometry.
>
> Sibling of Site geometry or Transform holding Site geometry.
>
> Likewise, it seems natural that for skeleton-driven skin animation the
>
> Displacer is used to enhance control of points associated with
>
> a certain Joint, so we want to closely associate a Displacer with a
> Joint.
>
>
>
> Overall, the Displacer is expected to actuate after skeleton-driven
> animation
>
> for the frame is complete.
>
>
>
> HAnimDisplacer : X3DGeometricPropertyNode {
>
>   MFInt32  [in,out] coordIndex    []   [0,∞) or -1
>
>   MFVec3f  [in,out] displacements []
>
>   SFNode   [in,out] metadata      NULL [X3DMetadataObject]
>
>   SFString [in,out] name          ""
>
>   SFFloat  [in,out] weight        0.0  [0,∞)
>
> }
>
>
>
> So, you supply index of the vertex you wish to displace
>
> and the maximum displacement along a 3D vector you wish to move it.
>
> Then when you wish to move it, you send the Displacer a weight event,
> float 0 to 1.
>
> If the new weight is 0 then nothing is added.
>
> If the weight is 1, then the vertex is moved the full displacement along
> the 3D vector.
>
>
>
> Of course this is eversoslightlycomplicated by the fact that displacements
> are
>
> 3D vectors relative to the specified vertex in default pose coordinate
> space
>
> of the target geometry.
>
>
>
> As an example, here is the JoeKick example simplified to one vertex,
>
> the skull apex point.
>
>
>
> <HAnimDisplacer
>
> DEF='Joe_skull_tip_raiser_action'
>
> name='skull_tip_raiser_action'
>
> coordIndex='0'
>
> displacements='0 0.15 0' />
>
>
>
> This displacements value says create a 3D vector
>
> from 0 0 0 at the current vertex location to 0 0.15 0.
>
> Move that vertex along that Y-axis vector 0 to 100 percent,
>
> depending upon the 0 to 1 floating point weight event
>
> I will send. The reference coordinate system of the
>
> vertex in the default position is retained even if the
>
> vertex has been moved by other actions.
>
>
>
> Of course this is eversoslightly complicated by
>
> the fact that the each displacement is actually a 3D vector.
>
> The 0 0 0 base and 0 0 1 0 orientation is relative to the
>
> default pose and is retained for displacer animation.
>
>
>
> Wait, do I need to consider vertex coordinate space and orientation of a
> vertex?
>
> Well, Yes, but just like Joint nodes, We will best be served when we
> understand the default, before animation pose and the default orientation
> of each item we wish to animate. So, for Joint nodes of the skeleton we
> orient the Joint to transform default, meaning if you are sitting on the
> Joint, then +Y is Up and left is +x, and you are facing +z. Regardless of
> how the parent joint is animated, the child joint retains its reference
> orientation.
>
> So, yes, you navigate 3D space the same for Joint(s) and vertices
> controlled by Displacer.
>
>
>
> Now, when I send 'Joe_skull_tip_raiser_action' the weight event,
>
> the vertex 0 of the geometry will be moved along the 3D vector
>
> defined by the displacements value.
>
> Notice that if, for instance the vertex has been moved due to skeleton
> animation,
>
> the displacement will be as expected because the vertex remembers its
> default orientation.
>
>
>
> About placement of the ROUTE statement. Expected something got something
> else.
>
> I thought we agreed that the grammar shows ROUTE can be free and as a
> field in a node.
>
> So, I still get those errors where you tell me my node markup is wrong.
>
>
>
> Thanks, Again,
>
> Joe
>
>
>
>
>
>
>
> *From: *Michalis Kamburelis <michalis.kambi at gmail.com>
> *Sent: *Thursday, February 9, 2023 2:48 PM
> *To: *Joseph D Williams <joedwil at earthlink.net>
> *Cc: *John Carlson <yottzumm at gmail.com>; Don Brutzman <brutzman at nps.edu>; GPU
> Group <gpugroup at gmail.com>; X3D Graphics public mailing list
> <x3d-public at web3d.org>
> *Subject: *Re: New description fields
>
>
>
> 1.
>
>
>
> > Just reuse the last set on the list to fill out the list.
>
> > What is so bad about that?
>
> > Do you fail if not enough colors?
>
>
>
> Reusing the last value of a per-vertex attribute (like texture
>
> coordinate) would be a bit useless, at least in most cases.
>
>
>
> Yes, we also throw a warning when there are not enough colors.
>
>
>
> This is also following X3D specification, see e.g. IndexedFaceSet:
>
>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD/Part01/components/geometry3D.html#IndexedFaceSet
>
>
>
> """
>
> If the greatest index in the coordIndex field is N, the Coordinate
>
> node shall contain N+1 coordinates (indexed as 0 to N).
>
> ...
>
> If the greatest index in the colorIndex field is N, then there shall
>
> be N+1 colours in the X3DColorNode node.
>
> ...
>
> If the greatest index in the texCoordIndex field is N, then there
>
> shall be N+1 texture coordinates in the X3DTextureCoordinateNode.
>
> ...
>
> If the texCoordIndex field is empty, then the coordIndex array is used
>
> to choose texture coordinates from the X3DTextureCoordinateNode node.
>
> If the greatest index in the coordIndex field is N, then there shall
>
> be N+1 texture coordinates in the X3DTextureCoordinateNode node.
>
> """
>
>
>
> All these sentences say a similar thing: if you provide a per-vertex
>
> data, we expect you to provide as much data as you want to index.
>
> Adding a processing on browser side to "reuse the last data" would be
>
> extra work, not necessary in many cases, and it is actually better in
>
> many cases to throw an error in this case. It is better to consider
>
> this "not valid file".
>
>
>
> Note that view3dscene still displays the mesh, this is just a warning.
>
>
>
> It's not an X3D invention either. glTF, Collada follow this too.
>
>
>
> If you want to just reuse the last coordinate, then I guess duplicate
>
> it in TextureCoordinate. But is this really what you want? You want to
>
> have 3 vertexes with texture coordinates like this:
>
>
>
> - 0 0
>
> - 0.5 0.5
>
> - 0.5 0
>
>
>
> ... and then 300+ vertexes with equal texture coordinate 0 0.5 ? This
>
> seems a bit weird texture mapping. If most of vertexes have the same
>
> texture coordinate then most faces will just display a single color
>
> from the texture. This would be valid but rather non-standard use of
>
> textures.
>
>
>
> 2. HAnimDisplacer is indeed simply not implemented in
>
> view3dscene/Castle Game Engine for now.
>
>
>
> 3. As for routes, you mention """Also, the item about the route
>
> statements being in a place you don’t like did not get fixed in
>
> 4.3.0.""" -- sorry, I do not recall the issue. But I have too many
>
> TODO lists, maybe something slipped my mind. Please refresh my memory,
>
> point me to the thread or bugreport about it.
>
>
>
> Regards,
>
> Michalis
>
>
>
> czw., 9 lut 2023 o 19:44 Joseph D Williams <joedwil at earthlink.net>
> napisał(a):
>
> >
>
> > Otherwise X3D browser doesn't know what do you mean --
>
> >
>
> > what texture coordinate is supposed to be associated with vertex with
>
> >
>
> > index 9.
>
> >
>
> >
>
> >
>
> > Yes it does, or it should. Just reuse the last set on the list to fill
> out the list.
>
> >
>
> > What is so bad about that?
>
> >
>
> >  Do you fail if not enough colors?
>
> >
>
> >
>
> >
>
> > Anyway, the Displacer is not working in 4.3.0 with no errors on that.
>
> >
>
> >
>
> >
>
> >
> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html
>
> >
>
> >
>
> >
>
> > Also, the item about the route statements being in a place you don’t
> like did not get fixed in 4.3.0.
>
> >
>
> >
>
> >
>
> > Can you or someone please help me with <TextureCoordinate point='0 0 0.5
> 0.5 0.5 0 0 0.5'/> since I an’t seem to get the right number for happiness
> even when it seems right and works elsewhere.
>
> >
>
> >
>
> >
>
> > X3D: Invalid number of items in a normal or texture coordinate array for
> shape
> "Joe_Humanoid:Joe_Kick:Joe_Shape:IndexedFaceSet(Joe_skin_IndexedFaceSet)":
> Invalid index: 141, but we have 139 items
>
> >
>
> >
>
> >
>
> >
>
> >
>
> > Even when the numbers match at the correct numver ofverts it fails.
>
> >
>
> > Is this finding something in the texture transform?
>
> >
>
> >
>
> >
>
> > Sure would like to see Displacer working.
>
> >
>
> > Thanks,
>
> >
>
> > Joe
>
> >
>
> >
>
> >
>
> >
>
> >
>
> >
>
> >
>
> > From: Michalis Kamburelis
>
> > Sent: Thursday, February 9, 2023 7:30 AM
>
> > To: Joseph D Williams
>
> > Cc: John Carlson; Don Brutzman; GPU Group; X3D Graphics public mailing
> list
>
> > Subject: Re: New description fields
>
> >
>
> >
>
> >
>
> > Yes :) I know we had a few communications about this already, so maybe
>
> >
>
> > you already fixed it in some version of the file and it is just not
>
> >
>
> > updated on that page.
>
> >
>
> >
>
> >
>
> > I just report that
>
> >
>
> >
>
> >
>
> >
> http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d
>
> >
>
> >
>
> >
>
> > still has this error. Specifically, it contains geometry like this:
>
> >
>
> >
>
> >
>
> >           <IndexedFaceSet DEF='Joe_skin_IndexedFaceSet' coordIndex='0
>
> >
>
> > 9 5 -1 0 7 9 ...' creaseAngle='3.14'>
>
> >
>
> >             <Coordinate DEF='Joe_SkinCoord' point='0.0 1.77 ..../>
>
> >
>
> >             <TextureCoordinate point='0 0 0.5 0.5 0.5 0 0 0.5'/>
>
> >
>
> >           </IndexedFaceSet>
>
> >
>
> >
>
> >
>
> > So you use coordinate index "9" (and larger, later, like 386) ... but
>
> >
>
> > your "TextureCoordinate.point" has only 4 items. So you can only use
>
> >
>
> > indexes 0..3. Otherwise X3D browser doesn't know what do you mean --
>
> >
>
> > what texture coordinate is supposed to be associated with vertex with
>
> >
>
> > index 9.
>
> >
>
> >
>
> >
>
> > Regards,
>
> >
>
> > Michalis
>
> >
>
> >
>
> >
>
> > czw., 9 lut 2023 o 14:48 Joseph D Williams <joedwil at earthlink.net>
> napisał(a):
>
> >
>
> > >
>
> >
>
> > > > X3D: Invalid number of items in an attribute array for shape
>
> >
>
> > >
>
> >
>
> > > >
> "Joe_Humanoid/Joe_Kick/Joe_Shape/IndexedFaceSet(Joe_skin_IndexedFaceSet)":
>
> >
>
> > >
>
> >
>
> > > > Invalid index: 9, but we have 4 items in 2D texture coordinates
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > ... and the error is valid from what I can see. TextureCoordinate has
>
> >
>
> > >
>
> >
>
> > > > too few points.
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > Is this back to telling me I have to have all texcoords for all points?
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > Thanks,
>
> >
>
> > >
>
> >
>
> > > Joe
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > From: Michalis Kamburelis
>
> >
>
> > > Sent: Thursday, February 9, 2023 5:23 AM
>
> >
>
> > > To: John Carlson
>
> >
>
> > > Cc: Don Brutzman; GPU Group; Joe D Williams; X3D Graphics public
> mailing list
>
> >
>
> > > Subject: Re: New description fields
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > To other X3D browser implementors adding "description":
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > If you also have been implementing RenderedTexture node (not in X3D
>
> >
>
> > >
>
> >
>
> > > spec, but common extension, at least in InstantReality, Xj3d, and
>
> >
>
> > >
>
> >
>
> > > CGE/view3dscene), note that you should remove the
>
> >
>
> > >
>
> >
>
> > > "RenderedTexture.description" field. It can (and should) now inherit
>
> >
>
> > >
>
> >
>
> > > "X3DSingleTextureNode.description".
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > Sometimes automatic tests catch real errors :) (This nuance was caught
>
> >
>
> > >
>
> >
>
> > > by CGE automatic tests.)
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > Regards,
>
> >
>
> > >
>
> >
>
> > > Michalis
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > czw., 9 lut 2023 o 14:04 Michalis Kamburelis
>
> >
>
> > >
>
> >
>
> > > <michalis.kambi at gmail.com> napisał(a):
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > I added to view3dscene/Castle Game Engine handling of "description"
> field on
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > - X3DSingleTextureNode
>
> >
>
> > >
>
> >
>
> > > > - HAnimDisplacer
>
> >
>
> > >
>
> >
>
> > > > - HAnimHumanoid
>
> >
>
> > >
>
> >
>
> > > > - HAnimJoint
>
> >
>
> > >
>
> >
>
> > > > - HAnimSegment
>
> >
>
> > >
>
> >
>
> > > > - HAnimSite
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > I also added HAnimHumanoid.loa .
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > As usual, the fix will be available in snapshot view3dscene versions
>
> >
>
> > >
>
> >
>
> > > > on https://castle-engine.io/view3dscene.php (also part of larger CGE
>
> >
>
> > >
>
> >
>
> > > > download, https://castle-engine.io/download ). Please give Jenkins a
>
> >
>
> > >
>
> >
>
> > > > 6-8 hours to process it and run all automated tests.
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > Note that these "description" fields seem unrelated to
>
> >
>
> > >
>
> >
>
> > > >
> http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d
>
> >
>
> > >
>
> >
>
> > > > . That file only used "description" on Viewpoint, which we already
>
> >
>
> > >
>
> >
>
> > > > handled.
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > After adding "HAnimHumanoid.loa", this file reports just this error
>
> >
>
> > >
>
> >
>
> > > > (many times) in view3dscene:
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > X3D: Invalid number of items in an attribute array for shape
>
> >
>
> > >
>
> >
>
> > > >
> "Joe_Humanoid/Joe_Kick/Joe_Shape/IndexedFaceSet(Joe_skin_IndexedFaceSet)":
>
> >
>
> > >
>
> >
>
> > > > Invalid index: 9, but we have 4 items in 2D texture coordinates
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > ... and the error is valid from what I can see. TextureCoordinate has
>
> >
>
> > >
>
> >
>
> > > > too few points.
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > Regards,
>
> >
>
> > >
>
> >
>
> > > > Michalis
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > >
>
> >
>
> > >
>
> >
>
> > > > śr., 8 lut 2023 o 03:45 John Carlson <yottzumm at gmail.com>
> napisał(a):
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > I'm trying to collect information into one message.  Michalis,
> please check view3dscene 4.3, I believe ImageTexture and HAnimDisplacer
> were missing description field in view3dscene 4.2 and 4.3. See links below
> for X3D4 tooltips specifics.  The issue with view3dscene stems from adding
> a description fields in X3D4 using X3D-Edit (for the most part).  There are
> also schema issues with the file in question (JohnJoint18.x3d).
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > I’ll double check the tooltips while I am at it.
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > >
> https://www.web3d.org/x3d/content/X3dTooltips.html#ImageTexture.description
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > (Yellow)
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > >
> https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimDisplacer.description
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > (Yellow)
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > If there are examples of HAnimDisplacer in the community, consider
> donating them to our testing effort.
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > The good news is we have one good HAnimDisplacer node from
> www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d (in
> the file system on the x3d project our sourceforge).   Michalis, Joe, the
> issue is that view3dscene throws all kinds of issues with the file.
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > I was able to add the HAnimDisplacer in JoeKick to my
> JohnJoint18.x3d and not increase the number of errors reported by
> view3dscene (HAnimDisplacer without description seems to be working).
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > Thanks!
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > John
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > >
>
> >
>
> > >
>
> >
>
> > > > > On Tue, Feb 7, 2023 at 2:18 PM GPU Group <gpugroup at gmail.com>
> wrote:
>
> >
>
> > >
>
> >
>
> > > > >>
>
> >
>
> > >
>
> >
>
> > > > >> No. I'm finished with that project, its somewhere in web3d. I
> think I referred to tooltips, which has v4 added fields in yellow.
>
> >
>
> > >
>
> >
>
> > > > >> -Doug
>
> >
>
> > >
>
> >
>
> > > > >>
>
> >
>
> > >
>
> >
>
> > > > >>
>
> >
>
> > >
>
> >
>
> > > > >> On Tue, Feb 7, 2023 at 12:40 PM John Carlson <yottzumm at gmail.com>
> wrote:
>
> >
>
> > >
>
> >
>
> > > > >>>
>
> >
>
> > >
>
> >
>
> > > > >>> Doug,
>
> >
>
> > >
>
> >
>
> > > > >>>
>
> >
>
> > >
>
> >
>
> > > > >>> could you add nodes which have a new description field to your
> browser builder guide?
>
> >
>
> > >
>
> >
>
> > > > >>>
>
> >
>
> > >
>
> >
>
> > > > >>> Thanks!
>
> >
>
> > >
>
> >
>
> > > > >>>
>
> >
>
> > >
>
> >
>
> > > > >>> John and Don
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230212/3222cb88/attachment-0001.html>


More information about the x3d-public mailing list