Source code for openalea.phenomenal.display.show_skeleton

# -*- python -*-
#
#       Copyright INRIA - CIRAD - INRA
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
# ==============================================================================


from .scene import Scene
# ==============================================================================


def get_actors_from_skeleton(
    voxel_skeleton,
    with_voxel=True,
    voxel_color=(0, 1, 0),
    skeleton_color=(1, 0, 0),
    color_segment=None,
):
    orderer_voxel_segments = sorted(
        voxel_skeleton.segments, key=lambda vs: len(vs.voxels_position)
    )

    actors = list()
    for i, vs in enumerate(orderer_voxel_segments):
        if color_segment is not None and color_segment == i:
            actors.append(
                Scene.get_actor_from_voxels(
                    vs.voxels_position,
                    voxel_skeleton.voxels_size * 0.50,
                    color=(0, 0, 1),
                )
            )

        elif with_voxel:
            actors.append(
                Scene.get_actor_from_voxels(
                    vs.voxels_position,
                    voxel_skeleton.voxels_size * 0.15,
                    color=voxel_color,
                )
            )

        actors.append(
            Scene.get_actor_from_voxels(
                vs.polyline, voxel_skeleton.voxels_size * 1.5, color=skeleton_color
            )
        )

        actors.append(
            Scene.get_actor_from_ball_position(
                vs.polyline[0], radius=voxel_skeleton.voxels_size * 4, color=(0, 0, 1)
            )
        )

        actors.append(
            Scene.get_actor_from_ball_position(
                vs.polyline[-1], radius=voxel_skeleton.voxels_size * 4, color=(1, 0, 0)
            )
        )

    return actors


[docs] def show_skeleton( voxel_skeleton, with_voxel=True, voxel_color=(0, 1, 0), skeleton_color=(1, 0, 0), color_segment=None, windows_size=(600, 800), screenshot_filename=None, screenshot_magnification=10, record_filename=None, record_quality=2, record_rate=25, ): scene = Scene() actors = get_actors_from_skeleton( voxel_skeleton, with_voxel=with_voxel, voxel_color=voxel_color, skeleton_color=skeleton_color, color_segment=color_segment, ) scene.add_actors(actors) scene.show( windows_size=windows_size, screenshot_filename=screenshot_filename, screenshot_magnification=screenshot_magnification, record_filename=record_filename, record_quality=record_quality, record_rate=record_rate, )
# ============================================================================== def record_skeleton( list_voxel_skeleton, filename, with_voxel=True, voxel_color=(0, 1, 0), skeleton_color=(1, 0, 0), record_elevation=20, ): scene = Scene() def func(voxel_skeleton): actors = get_actors_from_skeleton( voxel_skeleton, with_voxel=with_voxel, voxel_color=voxel_color, skeleton_color=skeleton_color, ) scene.add_actors(actors) scene.set_camera(elevation=record_elevation) scene.record_video(filename, list_voxel_skeleton, func)