[x3d-public] Turning on and off simultaneous animations individually
John Carlson
yottzumm at gmail.com
Thu Jan 30 20:19:28 PST 2025
This has developed more. I now have a script to add and remove routes
going to a variable number of ScalarInterpolators (adapters) in an MFNode
from a single TimeSensor. Next, we are trying to make plans by having a
TimeSensor for each collection of ScalarInterpolators called an emotion,
and scalar interpolators can be shared amongst time sensors through their
associated routes.
I’d like to have menu items which turn on and off individual animations
(units) or turn or off groups of animations (emotions), where emotions are
made up from a variable number of units.
My current thought is to have a TimeSensor per unit and a TimeSensor per
emotion. Then hook up all the routes between time sensors and scalar
interpolators in advance. This seems very doable.
Before, I was restricted to 1 TimeSensor. I think adding TimeSensors is a
good approach and one I used prior to collapsing TimeSensor. What I will
do is have 1 TimeSensor for all units and a TimeSensor for each emotion.
This seems like a good plan, and I will put menu item color changes in a
Switch.
Here’s the current example which I am modifying (I have a cleanup script
ready to clean up NO-OP nodes).
https://github.com/coderextreme/ci2had/blob/main/resources/MultiFacialAnimationMenu.x3d
On Fri, Dec 20, 2024 at 11:03 PM John Carlson <yottzumm at gmail.com> wrote:
> Andreas,
>
> I’m dealing with a variable number of HAnimDisplacers each set being run
> by ScalarInterpolators. I’d love to be able to send an event to an MFNode,
> but I guess that’s not possible without scripts. I might as well use
> add/delete Route.
>
> My original plan was to have dummy HAnimDisplacers to fill in, but that
> idea was nixed.
>
> John
>
> On Wed, Dec 11, 2024 at 3:08 PM Andreas Plesch <andreasplesch at gmail.com>
> wrote:
>
>> Hi John, group,
>>
>> Exploring how far one could get without X3D scripts and only using
>> event utilities, let me share an example of a panel of individually
>> controlled toggle buttons which then drive a simple assemblage of
>> individually animated spheres:
>>
>>
>> https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/6fd2fd0b0f745b3549b74150b7752d89/raw/37f94755f763ecc9a0439a0dab2f32441e8b12aa/toggleButtonExample.x3d
>>
>> https://gist.github.com/andreasplesch/6fd2fd0b0f745b3549b74150b7752d89
>>
>> There are two sections, one for the control panel and one for the
>> controlled assemblage. Each section has a Proto as the main building
>> block for simple reuse. The toggle button Proto is based on wrapping,
>> synced Integer and BooleanSequencers for color toggling and outputting
>> useful events corresponding to the state of the button. This is
>> probably the most useful and interesting part. Everything else is more
>> for demonstration.
>> There is also an animatedBlob Proto which shows how animations might
>> be controlled by routing events from a toggle button.
>> The animations all start out in sync after being enabled by a button
>> but then can be individually paused and resumed for arbitrarily
>> pulsating patterns.
>>
>> Event utilities generally turn out to require verbose declarative
>> code, compared to logic in scripts but that can be mitigated to a good
>> extent by Protos which also help with scene structure.
>>
>> There is one standard related question which came up for me and I
>> think that may have been raised before. The question is what the
>> value_changed should be after a Sequencer receives a first 'next'
>> event without ever having received a set_fraction or other event. In
>> this case there is not a next value because there was never any value
>> in the first place. Both x3dom and x_ite currently output the first
>> keyValue and set the first key as the current key in this case.
>>
>> x_ite and x3dom work almost the same with the example. x_ite
>> immediately starts the animations where x3dom waits as intended until
>> the related Timesensors receive a first 'enabled' event. There may be
>> a simple fix for x_ite use but I could not find it.
>>
>> Thanks, -Andreas
>>
>> On Sat, Dec 7, 2024 at 4:37 PM John Carlson <yottzumm at gmail.com> wrote:
>> >
>> > So here’s an interesting question: If I have the same ROUTE in two
>> different choices in a Switch, is one of them ignored?
>> >
>> > Not that I’m going to do that.
>> >
>> > I’m probably going to try using a Switch unless someone says that
>> ROUTEs are always active in a Switch, disagreeing with the AI.
>> >
>> > John
>> >
>> > On Sat, Dec 7, 2024 at 3:29 PM John Carlson <yottzumm at gmail.com> wrote:
>> >>
>> >> From X3D4:
>> >>
>> >>
>> >> 4.4.8.2 Routes
>> >>
>> >> Routes are not nodes.
>> >>
>> >> [snip]
>> >>
>> >> Redundant routing is ignored. If an X3D file repeats a routing path,
>> the second and subsequent identical routes are ignored. This also applies
>> for routes created dynamically using the X3D SAI.
>> >>
>> >>
>> >> Can someone clarify how statements are affected by Switches? Can I
>> have different choices of a PROTO inside a Switch? Effectively changing
>> ProtoBody content at run-time???
>> >>
>> >> John
>> >>
>> >>
>> >>
>> >> On Sat, Dec 7, 2024 at 2:40 PM John Carlson <yottzumm at gmail.com>
>> wrote:
>> >>>
>> >>> Would it be possible to put an animation’s ROUTEs in a Switch that
>> could be toggled on and off with a boolean toggle?
>> >>>
>> >>> Google AI says:
>> >>>
>> >>> Yes, you can absolutely put "ROUTE" nodes within a "Switch" node in
>> X3D; in fact, it's a common practice to use them together to dynamically
>> control which set of connections (via ROUTE) are active depending on which
>> child node of the Switch is currently selected.
>> >>>
>> >>> I didn’t realize that statements were affected by Switch.
>> >>>
>> >>> John
>> >>>
>> >>> On Sat, Dec 7, 2024 at 1:43 PM John Carlson <yottzumm at gmail.com>
>> wrote:
>> >>>>
>> >>>> We are dealing with multiple facial animations. The thing we want
>> to do is combine animations using HAnimDisplacers. Currently, our
>> animations go from key = 0 to key = 1, (weight = 0 to weight = 1) and each
>> animation is controlled by a single TimeSensor that we enable or disable.
>> What we want to do is enable multiple facial animations, yet retain a
>> single TimeSensor. I have done something with enabling multiple time
>> sensors all at the same time. So, ideally, we could toggle each facial
>> animation individually.
>> >>>>
>> >>>> Note that one can have multiple simultaneous HAnimDisplacer
>> animations on a single Coordinate, they all add up just fine. There’s no
>> single animation per body part requirement as there is in other places in
>> X3D (according to Michalis, from my understanding).
>> >>>>
>> >>>> I don’t currently know how to individually toggle multiple
>> animations without toggling multiple TimeSensors, so assistance is
>> welcome! Indeed, a multiple toggle button X3D example would be welcome
>> (hopefully, something we can put in a scenegraph).
>> >>>>
>> >>>> Here’s what we currently have
>> >>>>
>> https://github.com/coderextreme/ci2had/blob/main/resources/SingleMenuJin.x3d
>> >>>>
>> >>>> As you can see, lots of duplication.
>> >>>>
>> >>>> Viewed best in FreeWRL and Sunrize/X_ITE.
>> >>>>
>> >>>> John
>>
>>
>>
>> --
>> Andreas Plesch
>> Waltham, MA 02453
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250130/0c30ff1c/attachment.html>
More information about the x3d-public
mailing list