.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/07_ui/viz_playback_panel.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_07_ui_viz_playback_panel.py: ================ PlaybackPanel UI ================ .. GENERATED FROM PYTHON SOURCE LINES 6-11 .. code-block:: Python import numpy as np from fury import actor, window from fury.ui import PlaybackPanel .. GENERATED FROM PYTHON SOURCE LINES 12-13 1. Create the Scene and a target actor (Rotating Cube) .. GENERATED FROM PYTHON SOURCE LINES 13-20 .. code-block:: Python scene = window.Scene() centers = np.array([[0, 0, 0]]) colors = np.array([[1, 0.5, 0]]) cube = actor.box(centers, directions=(0, 1, 0), colors=colors, scales=(2, 2, 2)) scene.add(cube) .. GENERATED FROM PYTHON SOURCE LINES 21-22 2. Initialize the PlaybackPanel .. GENERATED FROM PYTHON SOURCE LINES 22-42 .. code-block:: Python playback_ui = PlaybackPanel(position=(50, 50), width=700, loop=True) playback_ui.final_time = 60.0 scene.add(playback_ui) state = {"current_time": 0.0, "rotation_speed": 1.0} def on_progress_changed(t): state["current_time"] = t cube.local.rotation = (0, 0, t * 0.01, 1) def on_speed_changed(s): state["rotation_speed"] = s playback_ui.on_progress_bar_changed = on_progress_changed playback_ui.on_speed_changed = on_speed_changed .. GENERATED FROM PYTHON SOURCE LINES 43-44 5. Define the Callback .. GENERATED FROM PYTHON SOURCE LINES 44-64 .. code-block:: Python def update_playback_logic(target_actor): """Callback to sync animation state with UI.""" if playback_ui._playing: step = 0.05 * state["rotation_speed"] state["current_time"] += step if state["current_time"] > playback_ui.final_time: if playback_ui._loop: state["current_time"] = 0 else: state["current_time"] = playback_ui.final_time playback_ui.pause() playback_ui.current_time = state["current_time"] target_actor.local.rotation = (0, 0, state["current_time"] * 0.01, 1) .. GENERATED FROM PYTHON SOURCE LINES 65-66 6. Start the ShowManager and Register the Callback .. GENERATED FROM PYTHON SOURCE LINES 66-74 .. code-block:: Python show_m = window.ShowManager( scene=scene, size=(800, 700), title="FURY Playback Panel UI" ) show_m.register_callback(update_playback_logic, 0.05, True, "PlaybackSync", cube) show_m.start() .. _sphx_glr_download_auto_examples_07_ui_viz_playback_panel.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: viz_playback_panel.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: viz_playback_panel.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: viz_playback_panel.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_