MCPcopy Create free account
hub / github.com/TeleHuman/TextOp / interpolate_motion_data_slerp

Function interpolate_motion_data_slerp

dataset/process_retarget_data.py:49–77  ·  view source on GitHub ↗
(root_trans_offset, root_rot, dof, original_fps=30, target_fps=50)

Source from the content-addressed store, hash-verified

47
48
49def interpolate_motion_data_slerp(root_trans_offset, root_rot, dof, original_fps=30, target_fps=50):
50 original_frames = root_trans_offset.shape[0]
51 original_time = np.linspace(0, original_frames / original_fps, original_frames)
52
53 target_frames = int(original_frames * target_fps / original_fps)
54 target_time = np.linspace(0, original_frames / original_fps, target_frames)
55
56 def interpolate_linear(data, target_time):
57 result = np.zeros((len(target_time), data.shape[1]))
58 for i in range(data.shape[1]):
59 interpolator = interpolate.interp1d(original_time, data[:, i],
60 kind='linear',
61 fill_value="extrapolate")
62 result[:, i] = interpolator(target_time)
63 return result
64
65 def interpolate_slerp(quaternions, target_time):
66 rotations = R.from_quat(quaternions)
67 slerp = Slerp(original_time, rotations)
68
69 interpolated_rotations = slerp(target_time)
70
71 return interpolated_rotations.as_quat()
72
73 interpolated_trans = interpolate_linear(root_trans_offset, target_time)
74 interpolated_rot = interpolate_slerp(root_rot, target_time)
75 interpolated_dof = interpolate_linear(dof, target_time)
76
77 return interpolated_trans, interpolated_rot, interpolated_dof
78
79
80def process_pkl_file(input_path, output_path):

Callers 1

process_pkl_fileFunction · 0.85

Calls 2

interpolate_linearFunction · 0.85
interpolate_slerpFunction · 0.85

Tested by

no test coverage detected