.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/01_introductory/viz_skinning.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_01_introductory_viz_skinning.py: ================================= Skeletal Animation in a glTF file ================================= In this tutorial, we will show how to use skeletal animations (skinning) in a glTF model in FURY. .. GENERATED FROM PYTHON SOURCE LINES 8-13 .. code-block:: Python from fury import window from fury.data import fetch_gltf, read_viz_gltf from fury.gltf import glTF .. GENERATED FROM PYTHON SOURCE LINES 14-16 Retrieving the model with skeletal animations. We're choosing the `RiggedFigure` model here. .. GENERATED FROM PYTHON SOURCE LINES 16-20 .. code-block:: Python fetch_gltf('RiggedFigure', 'glTF') filename = read_viz_gltf('RiggedFigure') .. GENERATED FROM PYTHON SOURCE LINES 21-23 Initializing the glTF object, You can additionally set `apply_normals=True`. Note: Normals might not work well as intended with skinning animations. .. GENERATED FROM PYTHON SOURCE LINES 23-26 .. code-block:: Python gltf_obj = glTF(filename, apply_normals=False) .. GENERATED FROM PYTHON SOURCE LINES 27-30 Get the skinning timeline using `skin_timeline` method, Choose the animation name you want to visualize. Note: If there's no name for animation, It's stored as `anim_0`, `anim_1` etc .. GENERATED FROM PYTHON SOURCE LINES 30-41 .. code-block:: Python animation = gltf_obj.skin_animation()['anim_0'] # After we get the timeline object, We want to initialise the skinning process. # You can set `bones=true` to visualize each bone transformation. Additionally, # you can set `length` of bones in the `initialise_skin` method. # Note: Make sure to call this method before you initialize ShowManager, else # bones won't be added to the scene. gltf_obj.initialize_skin(animation, bones=False) .. GENERATED FROM PYTHON SOURCE LINES 42-45 Create a scene, and show manager. Initialize the show manager and add timeline to the scene (No need to add actors to the scene separately). .. GENERATED FROM PYTHON SOURCE LINES 45-53 .. code-block:: Python scene = window.Scene() showm = window.ShowManager( scene, size=(900, 768), reset_camera=True, order_transparent=True ) showm.initialize() scene.add(animation) .. GENERATED FROM PYTHON SOURCE LINES 54-57 define a timer_callback. Use the `update_skin` method, It updates the timeline and applies skinning to actors (and bones). .. GENERATED FROM PYTHON SOURCE LINES 57-64 .. code-block:: Python def timer_callback(_obj, _event): gltf_obj.update_skin(animation) showm.render() .. GENERATED FROM PYTHON SOURCE LINES 65-66 Optional: `timeline.play()` auto plays the animations. .. GENERATED FROM PYTHON SOURCE LINES 66-77 .. code-block:: Python showm.add_timer_callback(True, 20, timer_callback) scene.reset_camera() interactive = False if interactive: showm.start() window.record(scene, out_path='viz_skinning.png', size=(900, 768)) .. image-sg:: /auto_examples/01_introductory/images/sphx_glr_viz_skinning_001.png :alt: viz skinning :srcset: /auto_examples/01_introductory/images/sphx_glr_viz_skinning_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.644 seconds) .. _sphx_glr_download_auto_examples_01_introductory_viz_skinning.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: viz_skinning.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: viz_skinning.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_