[x3d-public] HTML slider and TimeSensor scrubbing behavior

Andreas Plesch andreasplesch at gmail.com
Tue Dec 17 11:41:39 PST 2019


https://jsitor.com/embed/_CpK0lylL?html&result&light&

shows what I had in mind.

Notice how the timesensor output is never routed directly to the
interpolator but goes through a script. It is a DOM script for x3dom
but presumably could be a x3d script as well.

-Andreas

On Tue, Dec 17, 2019 at 8:06 AM Andreas Plesch <andreasplesch at gmail.com> wrote:
>
> Hi Mike,
>
> let me try. Since there is no way to directly set the fraction of the timesensor, I think you can only use it indirectly if you want to use it in combination with another control on the progress of an animation.
>
> Let's call the position on the slider progress. The idea would be to add the timesensor's fraction_changed to current progress when play is requested. To keep things simple it might be best set start time to now when play is pressed to start with a fraction of 0 to add.
>
> Then when the slider is dragged stop the time sensor and update progress by the sliders value.
>
> Then when dragging stops it would be probably easiest and least surprising if playing would pause until the play button is pressed again.
>
> The main point is that the timesensors time should not directly represent playing time or progress.
>
> I think that approach could work,
>
> Andreas
>
> ---on the phone---
>
>
> On Mon, Dec 16, 2019 at 11:36 AM Mike McCann <mccann at mbari.org> wrote:
> >
> > I Andreas,
> >
> > I did get Vince’s suggestion of "InterpolatorNode.setFieldValue('set_fraction', ts_fraction)” to work. I will try your suggestion as well.
> >
> > Regarding your suggestion of resetting startTime after scrubbing, I assume that this might be meant to set the new fraction of the TimeSensor to the scrubbed value.
> >
> > However, this does not work for me. In fact, I can see no way to set a new fraction value for the TimeSensor when playing begins after scrubbing, given it’s specification:
> >
> > TimeSensor : X3DTimeDependentNode, X3DSensorNode {
> >   SFTime  [in,out] cycleInterval    1     (0,∞)
> >   SFBool  [in,out] enabled          TRUE
> >   SFBool  [in,out] loop             FALSE
> >   SFNode  [in,out] metadata         NULL  [X3DMetadataObject]
> >   SFTime  [in,out] pauseTime        0     (-∞,∞)
> >   SFTime  [in,out] resumeTime       0
> >   SFTime  [in,out] startTime        0     (-∞,∞)
> >   SFTime  [in,out] stopTime         0     (-∞,∞)
> >   SFTime  [out]    cycleTime
> >   SFTime  [out]    elapsedTime
> >   SFFloat [out]    fraction_changed
> >   SFBool  [out]    isActive
> >   SFBool  [out]    isPaused
> >   SFTime  [out]    time
> > }
> >
> > Am I missing something?
> >
> > -Mike
> >
> > On Dec 15, 2019, at 5:07 AM, Andreas Plesch <andreasplesch at gmail.com> wrote:
> >
> > Hi Joe,
> >
> > Thanks for the memory jog. I recall doing it this way in pure VRML.
> >
> > What I can?t figure out is how to ?route? the output of the HTML slider into X3DOM's Interpolators. Is there an attribute in the x3dom runtime that I can set?
> >
> > -Mike
> >
> >
> > Hi Mike,
> >
> > as in Vince's example, you should be able use the set_fraction field
> > of the interpolator as attribute.
> > InterpolatorNode.setAttribute('set_field', newValuefromSlider) should
> > work.
> >
> > It might work to use a timesensor's fraction_changed as an _offset_ to
> > the last position of the slider when the play button was pressed.
> >
> > This probably means that the startTime of the timesensor needs to be
> > reset to now each time playing begins after scrubbing.
> >
> > -Andreas
> >
> > On Dec 13, 2019, at 1:44 PM, Joseph D Williams <joedwil at earthlink.net> wrote:
> >
> > Hi Mike,
> > Same as to do a slider control in x3d?
> > You disconnect the TimeSensor and drive the Position and Orientation Interpolators with a number you derive from the slider, I think.
> > Joe
> >
> > From: Mike McCann <mailto:mccann at mbari.org>
> > Sent: Friday, December 13, 2019 10:25 AM
> > To: x3dom mlist <mailto:x3dom-users at lists.sourceforge.net>; X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> > Subject: [x3d-public] HTML slider and TimeSensor scrubbing behavior
> >
> > Hello,
> >
> > I have a TimeSensor that drives Position and Orientation Interpolators via ROUTEd fraction _changed and set_ events.
> >
> > The fraction_changed event out is also connected to an HTML slider (<input type=?range?>) via X3DOM?s onoutputchange() attribute.
> >
> > The HTML slider shows the progress of the animation, but I?d also like to use it to control the fraction of the animation, much like one can scrub through a video with a timeline slider.
> >
> > It seems that if I were able to set the fraction of the TimeSensor from the HTML slider I could achieve my goal, but there is not a set_fraction event in for it.
> >
> > Is there a best practice or any suggestions for how I may achieve my goal?
> >
> > Thanks in advance,
> > Mike
> >
> > P.S. Though my immediate need is to implement this in X3DOM, I?d think that this might be a common use case, so I?m cross-posting on x3d-public.
> >
> > --
> > Mike McCann
> > Software Engineer
> > Monterey Bay Aquarium Research Institute
> > 7700 Sandholdt Road
> > Moss Landing, CA 95039-9644
> > Voice: 831.775.1769  Fax: 831.775.1736 http://www.mbari.org
> >
> >
> > _______________________________________________
> > x3d-public mailing list
> > x3d-public at web3d.org <mailto:x3d-public at web3d.org>
> > http://web3d.org/mailman/listinfo/x3d-public_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/20191214/644683a6/attachment-0001.html>
> >
> > ------------------------------
> >
> > Message: 2
> > Date: Sat, 14 Dec 2019 16:44:12 -0500
> > From: "vmarchetti at kshell.com" <vmarchetti at kshell.com>
> > To: Mike McCann <mccann at mbari.org>
> > Cc: Joseph D Williams <joedwil at earthlink.net>, x3dom mlist
> >        <x3dom-users at lists.sourceforge.net>, X3D Graphics public mailing list
> >        <x3d-public at web3d.org>
> > Subject: Re: [x3d-public] HTML slider and TimeSensor scrubbing
> >        behavior
> > Message-ID: <92904E9C-B23B-4B19-BE42-AA5F4F406C62 at kshell.com>
> > Content-Type: text/plain; charset="utf-8"
> >
> > Mike
> >
> > This sounds similar to a scene I worked on at http://www.kshell.com/pages/cmmpoc/index.html <http://www.kshell.com/pages/cmmpoc/index.html> . I've got three sliders feeding into 3 position interpolators,
> > Because I load my x3d as an external file I have to run a javascript after loading that looks through the DOM tree and finds those interpolators.
> >
> > But the relevant part for you I think, is to define a function which I call "moveInterpolator" and to set it as the handler for the 'oninput' method of the slider.
> > You can see it in the source html for page http://www.kshell.com/pages/cmmpoc/index.html <http://www.kshell.com/pages/cmmpoc/index.html>
> >
> > Vince Marchetti
> >
> >
> > On Dec 14, 2019, at 4:29 PM, Mike McCann <mccann at mbari.org> wrote:
> >
> > Hi Joe,
> >
> > Thanks for the memory jog. I recall doing it this way in pure VRML.
> >
> > What I can?t figure out is how to ?route? the output of the HTML slider into X3DOM's Interpolators. Is there an attribute in the x3dom runtime that I can set?
> >
> > -Mike
> >
> > On Dec 13, 2019, at 1:44 PM, Joseph D Williams <joedwil at earthlink.net <mailto:joedwil at earthlink.net>> wrote:
> >
> > Hi Mike,
> > Same as to do a slider control in x3d?
> > You disconnect the TimeSensor and drive the Position and Orientation Interpolators with a number you derive from the slider, I think.
> > Joe
> >
> > From: Mike McCann <mailto:mccann at mbari.org>
> > Sent: Friday, December 13, 2019 10:25 AM
> > To: x3dom mlist <mailto:x3dom-users at lists.sourceforge.net>; X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> > Subject: [x3d-public] HTML slider and TimeSensor scrubbing behavior
> >
> > Hello,
> >
> > I have a TimeSensor that drives Position and Orientation Interpolators via ROUTEd fraction _changed and set_ events.
> >
> > The fraction_changed event out is also connected to an HTML slider (<input type=?range?>) via X3DOM?s onoutputchange() attribute.
> >
> > The HTML slider shows the progress of the animation, but I?d also like to use it to control the fraction of the animation, much like one can scrub through a video with a timeline slider.
> >
> > It seems that if I were able to set the fraction of the TimeSensor from the HTML slider I could achieve my goal, but there is not a set_fraction event in for it.
> >
> > Is there a best practice or any suggestions for how I may achieve my goal?
> >
> > Thanks in advance,
> > Mike
> >
> > P.S. Though my immediate need is to implement this in X3DOM, I?d think that this might be a common use case, so I?m cross-posting on x3d-public.
> >
> > --
> > Mike McCann
> > Software Engineer
> > Monterey Bay Aquarium Research Institute
> > 7700 Sandholdt Road
> > Moss Landing, CA 95039-9644
> > Voice: 831.775.1769  Fax: 831.775.1736 http://www.mbari.org <http://www.mbari.org/>
> >
> >
> > _______________________________________________
> > x3d-public mailing list
> > x3d-public at web3d.org <mailto:x3d-public at web3d.org>
> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org <http://web3d.org/mailman/listinfo/x3d-public_web3d.org>
> >
> > _______________________________________________
> > 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/20191214/19fe265d/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 129, Issue 16
> > *******************************************
> >
> >
> >
> >
> > --
> > Andreas Plesch
> > Waltham, MA 02453
> >
> > _______________________________________________
> > x3d-public mailing list
> > x3d-public at web3d.org
> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> >
> >
>
>
> --
> Andreas Plesch
> Waltham, MA 02453



-- 
Andreas Plesch
Waltham, MA 02453



More information about the x3d-public mailing list