コード例 #1
0
def load_motion(path, skeleton_type=None):
    bvh = BVHReader(path)
    mv = MotionVector()
    mv.from_bvh_reader(bvh)
    skeleton = SkeletonBuilder().load_from_bvh(bvh)
    skeleton.skeleton_model = load_skeleton_model(skeleton_type)
    return skeleton, mv
コード例 #2
0
 def replace_motion_from_file(self, filename):
     if filename.endswith(".bvh"):
         bvh_reader = BVHReader(filename)
         motion_vector = MotionVector()
         motion_vector.from_bvh_reader(bvh_reader, False)
         self._motion.replace_frames(motion_vector.frames)
         self.currentFrameNumber = 0
         self.updateTransformation()
         self.update_scene_object.emit(-1)
         self.updated_animation_frame.emit(self.currentFrameNumber)
     elif filename.endswith("_mg.zip"):
         self.scene_object.scene.attach_mg_state_machine(
             self.scene_object, filename)
         self._motion = self.scene_object._components[
             "morphablegraph_state_machine"]
         self._motion.set_target_skeleton(self._visualization.skeleton)
         self.activate_emit = False
     elif filename.endswith("amc"):
         amc_frames = parse_amc_file(filename)
         motion_vector = MotionVector()
         motion_vector.from_amc_data(self._visualization.skeleton,
                                     amc_frames)
         self._motion.replace_frames(motion_vector.frames)
         self._motion.mv.frame_time = 1.0 / 120
         self.currentFrameNumber = 0
         self.updateTransformation()
         self.update_scene_object.emit(-1)
         self.updated_animation_frame.emit(self.currentFrameNumber)
コード例 #3
0
ファイル: __init__.py プロジェクト: eherr/vis_utils
def load_bvh_file(builder,
                  path,
                  scale=1.0,
                  draw_mode=2,
                  offset=None,
                  reference_frame=None,
                  skeleton_model=None,
                  use_clip=False,
                  color=None,
                  visualize=True):
    bvh_reader = BVHReader(path)
    bvh_reader.scale(scale)
    animated_joints = [
        key for key in list(bvh_reader.node_names.keys())
        if not key.endswith("EndSite")
    ]
    o = None
    if bvh_reader.frames is not None:
        skeleton = SkeletonBuilder().load_from_bvh(
            bvh_reader,
            animated_joints,
            reference_frame=reference_frame,
            skeleton_model=skeleton_model)
        motion_vector = MotionVector()
        motion_vector.from_bvh_reader(bvh_reader, False)
        motion_vector.skeleton = skeleton
        if offset is not None:
            motion_vector.translate_root(offset)
        name = path.split("/")[-1]
        o = builder.create_object("animation_controller", name, skeleton,
                                  motion_vector, bvh_reader.frame_time,
                                  draw_mode, visualize, color)
    return o
コード例 #4
0
def load_motion_vector_from_bvh_file(bvh_file_path, animated_joints):
    bvh_data = BVHReader(bvh_file_path)
    mv = MotionVector(None)
    mv.from_bvh_reader(bvh_data,
                       filter_joints=False,
                       animated_joints=animated_joints)
    return mv
コード例 #5
0
ファイル: utils.py プロジェクト: eherr/vis_utils
def load_motion_from_bvh(filename):
    bvh_reader = BVHReader(filename)
    motion_vector = MotionVector()
    motion_vector.from_bvh_reader(bvh_reader, False)
    animated_joints = list(bvh_reader.get_animated_joints())
    motion_vector.skeleton = SkeletonBuilder().load_from_bvh(
        bvh_reader, animated_joints=animated_joints)
    return motion_vector
コード例 #6
0
 def load_file(self, filename):
     bvh_reader = BVHReader(str(self.folder_path) + os.sep + filename)
     mv = MotionVector()
     mv.from_bvh_reader(bvh_reader, False)
     animated_joints = list(bvh_reader.get_animated_joints())
     mv.skeleton = SkeletonBuilder().load_from_bvh(
         bvh_reader, animated_joints=animated_joints)
     self.motion_cache[filename] = mv
コード例 #7
0
 def replace_motion_from_str(self, bvh_str):
     bvh_reader = BVHReader("")
     lines = bvh_str.split("\n")
     print(len(lines))
     lines = [l for l in lines if len(l) > 0]
     bvh_reader.process_lines(lines)
     motion_vector = MotionVector()
     motion_vector.from_bvh_reader(bvh_reader, False)
     self._motion.replace_frames(motion_vector.frames)
コード例 #8
0
def create_motion_vector_from_bvh(bvh_str, animated_joints=None):
    bvh_reader = get_bvh_from_str(bvh_str)
    print("loaded motion", bvh_reader.frames.shape)
    if animated_joints is None:
        animated_joints = [key for key in list(bvh_reader.node_names.keys()) if not key.endswith("EndSite")]
    skeleton = SkeletonBuilder().load_from_bvh(bvh_reader, animated_joints)

    motion_vector = MotionVector()
    motion_vector.from_bvh_reader(bvh_reader, False, animated_joints)
    motion_vector.skeleton = skeleton
    return motion_vector
コード例 #9
0
def import_motion(db,new_id, skeleton, skeleton_name, filename):
    bvh = BVHReader(filename)
    name = filename.split(os.sep)[-1]
    mv = MotionVector()
    mv.from_bvh_reader(bvh)
    mv.skeleton = skeleton
    data = mv.to_db_format()
    public = 0
    n_frames = mv.n_frames
    data =  bson.dumps(data)
    meta_data = b"x00"
    db.insert_motion(new_id, skeleton_name, name, data, meta_data, n_frames, public)
コード例 #10
0
def load_motion_from_str(builder,
                         bvh_str,
                         name,
                         node_key,
                         motion_id,
                         meta_info_str="",
                         draw_mode=2,
                         visualize=True,
                         color=None):
    if color is None:
        color = get_random_color()

    bvh_reader = get_bvh_from_str(bvh_str)
    print("loaded motion", bvh_reader.frames.shape)
    animated_joints = [
        key for key in list(bvh_reader.node_names.keys())
        if not key.endswith("EndSite")
    ]
    skeleton = SkeletonBuilder().load_from_bvh(bvh_reader, animated_joints)

    motion_vector = MotionVector()
    motion_vector.from_bvh_reader(bvh_reader, False)
    motion_vector.skeleton = skeleton
    motion_vector.scale_root(0.01)
    o = builder.create_object("animation_controller", name, skeleton,
                              motion_vector, bvh_reader.frame_time, draw_mode,
                              visualize, color)
    if "data_base_ids" not in builder._scene.internal_vars:
        builder._scene.internal_vars["data_base_ids"] = dict()
    builder._scene.internal_vars["data_base_ids"][o.node_id] = (node_key,
                                                                motion_id)
    if meta_info_str != "":
        c = o._components["animation_controller"]
        meta_info = json.loads(meta_info_str)
        if "sections" in meta_info:
            sections = meta_info["sections"]
            if type(sections) == list:
                semantic_annotation = create_annotation_from_sections_list(
                    sections, motion_vector.n_frames)
            else:
                semantic_annotation = create_annotation_from_sections_dict(
                    sections, motion_vector.n_frames)
            color_map = dict()
            for key in semantic_annotation.keys():
                color_map[key] = get_random_color()
            c.set_color_annotation(semantic_annotation, color_map)
    return o