[x3d-public] Displacer and normals ?
Andreas Plesch
andreasplesch at gmail.com
Wed Feb 12 09:09:31 PST 2025
Responses below:
> Date: Tue, 11 Feb 2025 15:58:40 -0600
> From: John Carlson <yottzumm at gmail.com>
> To: "Extensible 3D (X3D) Graphics public discussion"
> <x3d-public at web3d.org>
> Subject: Re: [x3d-public] Displacer and normals ?
>
> Did you get the black tongue effect? I?ve seen that in Sunrize, and
> reported it there. Holger had a response about providing normals.
>
I found https://github.com/create3000/sunrize/issues/9
Yes, I think this is similar. x-ite/sunrize just may not automatically
recalculate normals for performance reasons which in some cases may be
beneficial by avoiding the effects of degenerate triangles.
The displacers were taken from CoordinateInterpolators in the
> HumanoidAnimation/FacialAnimation X3D archive.
>
> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/index.html
> Perhaps we could derive normals from those examples, realizing only one set
> of meshes is chosen for the final version.
>
> It?s relevant, because I will be providing a unified skin mesh for FACS,
> and it would be nice to provide normals.
>
I noticed the effect actually only in combined displacers/morphers, eg. the
Contempt combo. That brings up the future question of how pre-computed
normals from multiple displacers may be combined, maybe just by averaging
the slerped orientation from each.
There may have been studies on how to best recombine facial subexpressions
for a valid result.
-Andreas
> On Tue, Feb 11, 2025 at 3:41?PM Andreas Plesch via x3d-public <
> x3d-public at web3d.org> wrote:
>
> > I noticed that some displacers cause degenerate or flipped triangles
> which
> > may cause rendering problems, mostly due to problems calculating
> > automatically a good normal vector.
> >
> > In general, for best rendering results, it is necessary to provide
> > precomputed normals. rather than rely on automatic normal calculations.
> Was
> > there a discussion on how to have displacers provide precomputed normals
> > along with the displacement of the vertices ? That would help with
> > rendering quality, and may be necessary for some use cases.
> >
> > This may be deemed a long term feature to consider.
> >
> > Perhaps an idea would be a MFRotation normalRotations field which has the
> > rotation required to rotate the normal (per vertex, or perhaps per face)
> > from the rest orientation to the final orientation. Weights are applied
> > with slerp. For animation authors it would be probably easier to be able
> to
> > just directly provide the final orientation.
> >
> > Any feedback or comment much welcome, -Andreas
> >
> >
> > --
> > Andreas Plesch
> > Waltham, MA 02453
> > _______________________________________________
> > 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/20250211/a4be3c1a/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 3
> Date: Wed, 12 Feb 2025 11:27:59 -0500
> From: Andreas Plesch <andreasplesch at gmail.com>
> To: John Carlson <yottzumm at gmail.com>
> Cc: Holger Seelig <holger.seelig at yahoo.de>, X3D Graphics public
> mailing list <x3d-public at web3d.org>, Joe D Williams
> <joedwil at earthlink.net>
> Subject: Re: [x3d-public] Turning on and off simultaneous animations
> individually
> Message-ID:
> <
> CAKdk67vXRSz1pM4QLjcxuCQHfjY4LUT924cSmX7rPAasroPUCw at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi,
>
> I took a first stab at Displacers in Segments for x3dom and use it now in
> the editor:
>
>
> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/ManyClocks.x3d
>
> This is experimental and mostly for testing purposes. If there is an
> example combining Displacers in both Joints and Segments that would be
> interesting as it is not necessarily expected to work.
> The experimental implementation is inefficient and expensive as it is
> weight_changed event driven. If you activate multiple displacers the frame
> rate starts to drop. It probably is not very useful at this point.
>
> Fee free to give it a try, -Andreas
>
> On Wed, Feb 5, 2025, 4:11?PM Andreas Plesch <andreasplesch at gmail.com>
> wrote:
>
> > Hi John,
> >
> > Thanks. I found the tongue.x3d example but if you can create another one
> > that would be helpful in general.
> >
> > You vastly overestimate my ability and availability ;) This would be a
> > longer term project. I have an idea what to do.
> >
> > Andreas
> >
> >
> > On Wed, Feb 5, 2025, 1:31?PM John Carlson <yottzumm at gmail.com> wrote:
> >
> >> I had one I sent to Holger, probably derived from this one:
> >>
> >>
> >>
> https://github.com/coderextreme/ci2had/blob/main/resources/JinMouthStretch.x3d
> >>
> >>
> >> What I would do (again) is take out all the segments but the tongue.
> >>
> >> There?s no menus involved in this one.
> >>
> >> If you need further assistance, like a smaller example, I can help.
> Also
> >> all the Jin*.x3d FACS action units can also provide examples.
> >>
> >> I?ll be pretty unbusy today. I can allocate some time for creating a
> >> model, make sure it animates, etc.
> >>
> >> If you?re able to allocate some time today, great, we have an HAnim
> >> meeting tomorrow and showing off X3DOM editor using Displacers would be
> >> fantastic!
> >>
> >> Remember there?s a coord field in HAnimSegment that the HAnimDisplacer
> >> operates on!
> >>
> >> John
> >>
> >> On Wed, Feb 5, 2025 at 12:01?PM Andreas Plesch <andreasplesch at gmail.com
> >
> >> wrote:
> >>
> >>> Hi John,
> >>>
> >>> The reason is that Displacers are currently implemented in x3dom only
> >>> for Joints, but not for Segments, unfortunately. Do you know of a
> simple
> >>> but instructive test case of Segments with Displacers ?
> >>>
> >>> Andreas
> >>>
> >>>
> >>> On Tue, Feb 4, 2025, 2:33?PM John Carlson <yottzumm at gmail.com> wrote:
> >>>
> >>>> I will try to test this in castle model converter.
> >>>>
> >>>> I did try setting a value for the outputOnly fields, but the converter
> >>>> wouldn?t shut up.
> >>>>
> >>>> The model below doesn?t seem to animate when one presses the menu
> >>>> items. Did you get it to animate?
> >>>>
> >>>> On Tue, Feb 4, 2025 at 12:27?PM Andreas Plesch <
> andreasplesch at gmail.com>
> >>>> wrote:
> >>>>
> >>>>> Hi John, all,
> >>>>>
> >>>>> It turns out that x3dom currently expects a default value for Proto
> >>>>> fields even for outputOnly fields. This is due to how Proto fields
> are
> >>>>> initialized. They always need to have a value. While the spec. does
> not
> >>>>> require this, it seems still good practice to always define a
> default value
> >>>>> in the ProtoInterface. There may be a case where an outputOnly field
> is
> >>>>> used in ISing where a valid value would be expected. There may be
> other
> >>>>> corner cases.
> >>>>>
> >>>>> Here is your example with added default values for outputOnly fields:
> >>>>>
> >>>>>
> >>>>>
> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/af5ff3148c1159f71d34fb78c1f63024/raw/b3d4470107ab74e301ed48448ab2a4f4154672e0/ManyClocks_John.x3d
> >>>>>
> >>>>> This could be fixed in x3dom, by always setting some default value.
> Is
> >>>>> there a list of recommended defaults for each data type if no other
> source
> >>>>> of defaults is available? For SFTime it seems to be -1.
> >>>>>
> >>>>>
> >>>>> -Andreas
> >>>>>
> >>>>>
> >>>>> On Mon, Feb 3, 2025 at 7:39?AM Andreas Plesch <
> andreasplesch at gmail.com>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi John,
> >>>>>>
> >>>>>> On Mon, Feb 3, 2025 at 12:48?AM John Carlson <yottzumm at gmail.com>
> >>>>>> wrote:
> >>>>>>
> >>>>>>> Andreas, "startTime" is an accessType outputOnly field, so why do I
> >>>>>>> need to provide a value attribute in fieldValue? I'm kind of
> confused.
> >>>>>>> I'm probably missing something in the spec.
> >>>>>>>
> >>>>>>
> >>>>>> You are right, I only outlined scenarios where the accessType allows
> >>>>>> input or initialization..
> >>>>>> In the outputOnly case it is not necessary to provide a fieldValue
> >>>>>> node at all since there is no value which can be provided.
> Providing the
> >>>>>> node would indeed be confusing, to both the user code reader and
> any X3D
> >>>>>> browser.
> >>>>>> I believe the spec. is silent on this case in any encoding.
> >>>>>>
> >>>>>> Best, Andreas
> >>>>>>
> >>>>>> Thanks for any clarification.
> >>>>>>>
> >>>>>>> I have finally enabled schematron on the project, but I'm finding
> it
> >>>>>>> hard to understand the messages, and modifications that I make,
> while
> >>>>>>> removing the immediate problems, seem to move the problems
> elsewhere.
> >>>>>>>
> >>>>>>> Explaining why I need a "startTime" fieldValue value is my main
> lack
> >>>>>>> of understanding, but perhaps I need a whole review of accessType.
> >>>>>>>
> >>>>>>> Castle Model Converter reports:
> >>>>>>>
> >>>>>>> castle-model-converter: Warning: X3D: X3D XML: <fieldValue> element
> >>>>>>> references unknown field name "enabled"
> >>>>>>> castle-model-converter: Warning: X3D: X3D XML: <fieldValue> element
> >>>>>>> references unknown field name "startTime"
> >>>>>>> castle-model-converter: Warning: X3D: X3D XML: <fieldValue> element
> >>>>>>> references unknown field name "stopTime"
> >>>>>>>
> >>>>>>> I will try providing a field value in the ProtoInterface
> >>>>>>>
> >>>>>>> If I "cleanup" enabled, startTime and stopTime, I get:
> >>>>>>>
> >>>>>>> castle-model-converter: Warning: VRML/X3D: Within prototype
> >>>>>>> "MenuItem", event "inputTrue" references (by "IS" clause)
> non-existing
> >>>>>>> event "enabled"
> >>>>>>> castle-model-converter: Warning: VRML/X3D: Within prototype
> >>>>>>> "MenuItem", event "triggerTime" references (by "IS" clause)
> non-existing
> >>>>>>> event "startTime"
> >>>>>>> castle-model-converter: Warning: VRML/X3D: Within prototype
> >>>>>>> "MenuItem", event "triggerTime" references (by "IS" clause)
> non-existing
> >>>>>>> event "stopTime"
> >>>>>>>
> >>>>>>> I guess what I conclude at this point is, startTime and stopTime
> are
> >>>>>>> bad DEF names, but what about enabled as a field? The dominoes
> are falling.
> >>>>>>>
> >>>>>>> About your two scenarios in the other message, perhaps this is
> >>>>>>> revealing.
> >>>>>>>
> >>>>>>> See attached attempt to fix original issue, which resulted in the
> >>>>>>> above.
> >>>>>>>
> >>>>>>> John
> >>>>>>>
> >>>>>>> On Sun, Feb 2, 2025 at 3:59?PM Andreas Plesch <
> >>>>>>> andreasplesch at gmail.com> wrote:
> >>>>>>>
> >>>>>>>> I think x3dom, reasonably, expects a value for the fieldValue
> nodes:
> >>>>>>>>
> >>>>>>>> For example:
> >>>>>>>>
> >>>>>>>> <fieldValue name="startTime" />
> >>>>>>>>
> >>>>>>>> and others.
> >>>>>>>>
> >>>>>>>> On Sun, Feb 2, 2025 at 5:42?AM John Carlson <yottzumm at gmail.com>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Andreas, Joe,
> >>>>>>>>>
> >>>>>>>>> Reset Button, Reset_Clock added.
> >>>>>>>>>
> >>>>>>>>> See attached zip for details, or visit link;
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/CleanedYouClocks.x3d
> >>>>>>>>>
> >>>>>>>>> For some reason, this link doesn't show the live scene?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/CleanedYouClocks.x3d
> >>>>>>>>>
> >>>>>>>>> Puzzled, haven't researched it yet. Looks good in Sunrize and
> >>>>>>>>> X_ITE, will try FreeWRL next.
> >>>>>>>>>
> >>>>>>>>> John
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Andreas Plesch
> >>>>>>>> Waltham, MA 02453
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Andreas Plesch
> >>>>>> Waltham, MA 02453
> >>>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Andreas Plesch
> >>>>> Waltham, MA 02453
> >>>>>
> >>>>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250212/6f37d6ce/attachment.html
> >
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
> ------------------------------
>
> End of x3d-public Digest, Vol 191, Issue 57
> *******************************************
>
--
Andreas Plesch
Waltham, MA 02453
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250212/22579bfb/attachment-0001.html>
More information about the x3d-public
mailing list