def load_c3d(self, filename, start_frame=<NUM_LIT:0>, max_frames=int(<NUM_LIT>)):
import c3d<EOL>with open(filename, '<STR_LIT:rb>') as handle:<EOL><INDENT>reader = c3d.Reader(handle)<EOL>logging.info('<STR_LIT>',<EOL><NUM_LIT:1> / self.world.dt, reader.point_rate)<EOL>self.channels = self._map_labels_to_channels([<EOL>s.strip() for s in reader.point_labels])<EOL>data = []<EOL>for i, (_, frame, _) in enumerate(reader.read_frames()):<EOL><INDENT>if i >= start_frame:<EOL><INDENT>data.append(frame[:, [<NUM_LIT:0>, <NUM_LIT:1>, <NUM_LIT:2>, <NUM_LIT:4>]])<EOL><DEDENT>if len(data) > max_frames:<EOL><INDENT>break<EOL><DEDENT><DEDENT>self.data = np.array(data)<EOL>if reader.get('<STR_LIT>').string_value.strip().lower() == '<STR_LIT>':<EOL><INDENT>logging.info('<STR_LIT>')<EOL>self.data[:, :, :<NUM_LIT:3>] /= <NUM_LIT><EOL><DEDENT><DEDENT>logging.info('<STR_LIT>', filename, self.data.shape)<EOL>self.process_data()<EOL>self.create_bodies()<EOL>
Load marker data from a C3D file.

        The file will be imported using the c3d module, which must be installed
        to use this method. (``pip install c3d``)

        Parameters
        ----------
        filename : str
            Name of the C3D file to load.
        start_frame : int, optional
            Discard the first N frames. Defaults to 0.
        max_frames : int, optional
            Maximum number of frames to load. Defaults to loading all frames.