[x3d-public] Turning on and off simultaneous animations individually

Andreas Plesch andreasplesch at gmail.com
Wed Dec 11 13:08:13 PST 2024


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



More information about the x3d-public mailing list