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
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)
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
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
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
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
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)
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
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)
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