def create_motion_by_following()

in fairmotion/tasks/motion_graph/motion_graph.py [0:0]


    def create_motion_by_following(self, nodes):
        motion = velocity.MotionWithVelocity(skel=self.skel, fps=self.fps)
        for i in range(len(nodes) - 1):
            n1 = nodes[i]
            n2 = nodes[i + 1]
            nodes_inbetween = nx.shortest_path(self.graph, n1, n2)
            range_nodes = (
                range(len(nodes_inbetween))
                if i == len(nodes) - 2
                else range(len(nodes_inbetween) - 1)
            )
            for j in range_nodes:
                n = nodes_inbetween[j]
                motion_idx = self.graph.nodes[n]["motion_idx"]
                frame_start = self.graph.nodes[n]["frame_start"]
                frame_end = self.graph.nodes[n]["frame_end"]
                if self.motions[motion_idx] is None:
                    self.load_motion_at_idx(
                        motion_idx, self.motion_files[motion_idx]
                    )
                m = motion_ops.cut(
                    self.motions[motion_idx],
                    frame_start,
                    frame_end + self.frames_blend,
                )
                motion = motion_ops.append_and_blend(
                    motion, m, blend_length=self.blend_length,
                )
        return motion