Spaces:
Running
on
Zero
Running
on
Zero
| import torch | |
| import numpy as np | |
| import os | |
| from ..mesh.io import save_obj, to_mesh | |
| from ..mesh.smpl2mesh import SMPL2Mesh | |
| from ..skeleton import SkeletonAMASS, convert2humanml | |
| from ..skeleton2smpl.skeleton2smpl import Skeleton2Obj | |
| import json | |
| from scipy.ndimage import gaussian_filter1d | |
| def save_mesh(vertices, faces, output_dir, output_idx=None): | |
| """Save mesh vertices and faces to obj files. | |
| Args: | |
| vertices: Mesh vertices with shape (num_vertices, 3, num_frames) | |
| faces: Mesh faces | |
| output_dir: Directory to save the obj files | |
| output_idx: Index of the prediction to save | |
| """ | |
| # create obs_obj and pred_{i}_obj folders | |
| obs_obj_dir = os.path.join(output_dir, "obs_obj") | |
| os.makedirs(obs_obj_dir, exist_ok=True) | |
| if output_idx is not None: | |
| pred_obj_dir = os.path.join(output_dir, f"pred_{output_idx}_obj") | |
| os.makedirs(pred_obj_dir, exist_ok=True) | |
| # Ensure vertices has the correct shape (num_vertices, 3, num_frames) | |
| if len(vertices.shape) == 4: # If we have an extra batch dimension | |
| vertices = vertices.squeeze(0) # Remove the batch dimension | |
| # Convert vertices to numpy if it's a tensor | |
| if torch.is_tensor(vertices): | |
| vertices = vertices.cpu().numpy() | |
| if torch.is_tensor(faces): | |
| faces = faces.cpu().numpy() | |
| print(f"Processing mesh for output index {output_idx}") | |
| # Save first 30 frames to obs_obj directory | |
| for frame_i in range(30): | |
| file_path = os.path.join(output_dir, f"obs_obj/frame{frame_i:03d}.obj") | |
| frame_vertices = vertices[:, :, frame_i] | |
| mesh = to_mesh(frame_vertices, faces) | |
| save_obj(mesh, file_path) | |
| # Save remaining frames to pred directory | |
| if output_idx is not None: | |
| for frame_i in range(30, vertices.shape[2]): | |
| file_path = os.path.join(output_dir, f"pred_{output_idx}_obj/frame{frame_i:03d}.obj") | |
| frame_vertices = vertices[:, :, frame_i] | |
| mesh = to_mesh(frame_vertices, faces) | |
| save_obj(mesh, file_path) | |
| print(f"Saved obj files to [{output_dir}]") | |
| def main(): | |
| num_smplify_iters = 20 # This is what requires most time. It can be decreased or increasd depending on the output quality we want (or how quick we canr each it) | |
| device = "cuda" | |
| # get observation smpl params | |
| json_file_path = "./smpl_params.json" | |
| with open(json_file_path, "r") as json_file: | |
| loaded_data = json.load(json_file) | |
| person_idx = 0 | |
| smpl_dict_last_obs = loaded_data[-1] | |
| smpl_dict_last_obs = {k: torch.from_numpy(np.array(v)).float().to(device) for k,v in smpl_dict_last_obs.items()} | |
| # select just some of the motions | |
| # TO DO use the previous code with the limb length variance error to choose the sample | |
| # Or pick the most diverse | |
| skeleton = SkeletonAMASS | |
| pred_files = ['pred_closest_GT.npy'] | |
| pred_motions = torch.from_numpy(np.load(pred_files[0], allow_pickle=True)).to(device) | |
| pred_motions = pred_motions.view(-1, 22, 3) | |
| pred_motions = convert2humanml(pred_motions, skeleton.LANDMARKS, skeleton.TO_HUMANML_NAMES) | |
| loaded_data = np.load("obs_data.npz", allow_pickle=True) | |
| rot_motions_obs = loaded_data["rot_motions_obs"] | |
| smpl_dict_obs = loaded_data['smpl_dict_obs'].item() | |
| smpl_dict_obs = {k: torch.from_numpy(v).to(device) for k,v in smpl_dict_obs.items()} | |
| # init_params = {} | |
| init_params = {} | |
| current_motions = pred_motions | |
| init_params["betas"] = smpl_dict_last_obs["betas"][person_idx].unsqueeze(0).expand(current_motions.shape[0], -1) | |
| init_params["pose"] = smpl_dict_last_obs["body_pose"][person_idx].view(-1, 3) | |
| # init_params["pose"] = torch.stack([init_params["pose"][..., 0], init_params["pose"][..., 2], -init_params["pose"][..., 1]], dim=-1) | |
| assert init_params["pose"].shape[0] == 24, "the body pose should have 24 joints, it is the output of NLF" | |
| init_params["pose"] = init_params["pose"].unsqueeze(0).expand(current_motions.shape[0], -1, -1).view(current_motions.shape[0], -1).to(device) | |
| # init_params["pose"] = (torch.tensor([ 0.4531, 0.3044, 0.2968, -0.2239, 0.0174, 0.0925, -0.2378, -0.0465, | |
| # -0.0786, 0.2782, 0.0141, 0.0138, 0.4328, -0.0629, -0.0961, 0.5043, | |
| # 0.0035, 0.0610, 0.0230, -0.0317, 0.0058, 0.0070, 0.1317, -0.0544, | |
| # -0.0589, -0.1752, 0.1355, 0.0134, -0.0037, 0.0089, -0.2093, 0.1600, | |
| # 0.1092, -0.0387, 0.0824, -0.2041, -0.0056, -0.0075, -0.0035, -0.0237, | |
| # -0.1248, -0.2736, -0.0459, 0.1991, 0.2373, 0.0667, -0.0405, 0.0329, | |
| # 0.0536, -0.2914, -0.6969, 0.0559, 0.2858, 0.6525, 0.1222, -0.9116, | |
| # 0.2383, -0.0366, 0.9237, -0.2554, -0.0657, -0.1045, 0.0501, -0.0388, | |
| # 0.0909, -0.0707, -0.1437, -0.0590, -0.1801, -0.0875, 0.1093, 0.2009]) | |
| # .unsqueeze(0) | |
| # .repeat(pred_motions.shape[0], 1) | |
| # .float().to(device) | |
| # ) | |
| # init_params["pose"] = (torch.tensor([ 0.4531, 0.3044, -1, -0.2239, 0.0174, 0.0925, -0.2378, -0.0465, | |
| # -0.0786, 0.2782, 0.0141, 0.0138, 0.4328, -0.0629, -0.0961, 0.5043, | |
| # 0.0035, 0.0610, 0.0230, -0.0317, 0.0058, 0.0070, 0.1317, -0.0544, | |
| # -0.0589, -0.1752, 0.1355, 0.0134, -0.0037, 0.0089, -0.2093, 0.1600, | |
| # 0.1092, -0.0387, 0.0824, -0.2041, -0.0056, -0.0075, -0.0035, -0.0237, | |
| # -0.1248, -0.2736, -0.0459, 0.1991, 0.2373, 0.0667, -0.0405, 0.0329, | |
| # 0.0536, -0.2914, -0.6969, 0.0559, 0.2858, 0.6525, 0.1222, -0.9116, | |
| # 0.2383, -0.0366, 0.9237, -0.2554, -0.0657, -0.1045, 0.0501, -0.0388, | |
| # 0.0909, -0.0707, -0.1437, -0.0590, -0.1801, -0.0875, 0.1093, 0.2009]) | |
| # .unsqueeze(0) | |
| # .repeat(pred_motions.shape[0], 1) | |
| # .float().to(device) | |
| # ) | |
| init_params = {} | |
| init_params["betas"] = smpl_dict_obs["betas"][-1].unsqueeze(0).expand(pred_motions.shape[0], -1).to(device) | |
| # init_params["betas"] = torch.tensor([10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]).repeat(pred_motions.shape[0], 1).to(device) | |
| init_params["pose"] = smpl_dict_obs["pose"][-1].unsqueeze(0).expand(pred_motions.shape[0], -1, -1).view(pred_motions.shape[0], -1).to(device) | |
| init_params["cam"] = smpl_dict_obs["cam"][-1].unsqueeze(0).expand(pred_motions.shape[0], -1, -1).to(device) | |
| init_params["pose"] = torch.zeros(pred_motions.shape[0], 72).to(device) | |
| # # smpl_dict_last_obs["transl"][person_idx] = torch.stack([-smpl_dict_last_obs["transl"][person_idx][..., 2], smpl_dict_last_obs["transl"][person_idx][..., 0], -smpl_dict_last_obs["transl"][person_idx][..., 1]], dim=-1) | |
| # init_params["cam"] = smpl_dict_last_obs["transl"][person_idx].unsqueeze(0).unsqueeze(-2).expand(current_motions.shape[0], -1, -1).to(device) | |
| skeleton2obj = Skeleton2Obj( | |
| device=device, num_smplify_iters=num_smplify_iters, | |
| smpl_model_dir="./models/body_models/", #path to smpl body models | |
| gmm_model_dir="./models/joint2smpl_models/", #path to gmm model | |
| ) | |
| rot_motions, smpl_dict = skeleton2obj.convert_motion_2smpl(pred_motions, hmp=True, init_params=init_params, fix_betas=True) | |
| smpl2mesh = SMPL2Mesh(device) | |
| vertices, faces = smpl2mesh.convert_smpl_to_mesh(rot_motions, pred_motions) | |
| pred_files = [('./hanyu_t')] | |
| vertices = vertices.reshape(*vertices.shape[:2], len(pred_files), -1) | |
| for v, npy_file in zip(np.moveaxis(vertices, 2, 0), pred_files): | |
| save_mesh(v, faces, npy_file) | |
| def process_motion(smpl_params_path, pred_motions_path, device, sorted_idx, output_dir='./hanyu_obj'): | |
| num_smplify_iters = 40 | |
| device = "cuda" | |
| # Load and preprocess data once | |
| with open(smpl_params_path, "r") as json_file: | |
| loaded_data = json.load(json_file) | |
| person_idx = 0 | |
| smpl_dict_last_obs = {k: torch.from_numpy(np.array(v)).float().to(device) for k,v in loaded_data[1].items()} | |
| # Load predictions and preprocess | |
| pred_motions = torch.from_numpy(np.load(pred_motions_path, allow_pickle=True)).to(device) | |
| pred_motions = pred_motions.squeeze(0)[sorted_idx] # Shape: (num_samples, num_frames, 22, 3) | |
| # Initialize skeleton once | |
| skeleton = SkeletonAMASS | |
| # Pre-allocate lists for results | |
| all_vertices = [] | |
| all_faces = None | |
| first_rot_motions = None | |
| first_smpl_dict = None | |
| # Pre-compute common parameters | |
| init_betas = smpl_dict_last_obs["betas"][person_idx] | |
| init_pose = smpl_dict_last_obs["body_pose"][person_idx].view(-1, 3) | |
| assert init_pose.shape[0] == 24, "the body pose should have 24 joints, it is the output of NLF" | |
| # Initialize SMPL2Mesh once | |
| smpl2mesh = SMPL2Mesh(device) | |
| # Initialize Skeleton2Obj once | |
| skeleton2obj = Skeleton2Obj( | |
| device=device, | |
| num_smplify_iters=num_smplify_iters, | |
| smpl_model_dir="./models/body_models/", | |
| gmm_model_dir="./models/joint2smpl_models/", | |
| ) | |
| # Process each sample | |
| for sample_idx in range(len(sorted_idx)): | |
| current_motions = pred_motions[sample_idx].reshape(-1, 22, 3) | |
| current_motions = convert2humanml(current_motions, skeleton.LANDMARKS, skeleton.TO_HUMANML_NAMES) | |
| # Prepare init params efficiently | |
| init_params = { | |
| "betas": init_betas.unsqueeze(0).expand(current_motions.shape[0], -1), | |
| "pose": init_pose.unsqueeze(0).expand(current_motions.shape[0], -1, -1).view(current_motions.shape[0], -1).to(device), | |
| "cam": torch.Tensor([0.0, 0.0, 0.0]).unsqueeze(0).to(device) | |
| } | |
| # Get first frame parameters if not already computed | |
| if first_rot_motions is None: | |
| with torch.set_grad_enabled(True): | |
| first_rot_motions, first_smpl_dict = skeleton2obj.convert_motion_2smpl( | |
| current_motions[0].unsqueeze(0).to(device), | |
| hmp=False, | |
| init_params=None, | |
| fix_betas=False | |
| ) | |
| # Update init params with first frame data | |
| init_params["pose"] = first_rot_motions.repeat(current_motions.shape[0], 1) | |
| init_params["betas"] = first_smpl_dict["betas"].repeat(current_motions.shape[0], 1) | |
| init_params["cam"] = first_smpl_dict["cam"] | |
| # Convert motion to SMPL | |
| with torch.set_grad_enabled(True): | |
| rot_motions, smpl_dict = skeleton2obj.convert_motion_2smpl( | |
| current_motions, | |
| hmp=True, | |
| init_params=init_params, | |
| fix_betas=True | |
| ) | |
| # Process rotations | |
| rot_motions = rot_motions.reshape(-1, 24, 3).reshape(-1, 72) | |
| # Apply Gaussian smoothing to specific parameters | |
| rot_motions_np = rot_motions.cpu().numpy() | |
| sigma = 3.0 | |
| for param_idx in range(36, 40): | |
| rot_motions_np[:, param_idx] = gaussian_filter1d(rot_motions_np[:, param_idx], sigma=sigma) | |
| for param_idx in range(45, 49): | |
| rot_motions_np[:, param_idx] = gaussian_filter1d(rot_motions_np[:, param_idx], sigma=sigma) | |
| rot_motions = torch.from_numpy(rot_motions_np).to(device) | |
| # Convert to mesh | |
| vertices, faces = smpl2mesh.convert_smpl_to_mesh(rot_motions, current_motions) | |
| if all_faces is None: | |
| all_faces = faces | |
| all_vertices.append(vertices) | |
| # Convert faces to numpy once at the end | |
| if torch.is_tensor(all_faces): | |
| all_faces = all_faces.cpu().numpy() | |
| # Save results | |
| os.makedirs(output_dir, exist_ok=True) | |
| for i, vertices in enumerate(all_vertices): | |
| print(vertices.shape) | |
| save_mesh(vertices, all_faces, output_dir, output_idx=i) | |
| def smpl_to_mesh(smpl_params_path, pred_motions_path, device, sorted_idx): | |
| num_smplify_iters = 20 # This is what requires most time. It can be decreased or increasd depending on the output quality we want (or how quick we canr each it) | |
| device = "cuda" | |
| # Process each sample separately to maintain frame order | |
| all_vertices = [] | |
| all_faces = None | |
| # get observation smpl params | |
| json_file_path = smpl_params_path | |
| with open(json_file_path, "r") as json_file: | |
| loaded_data = json.load(json_file) | |
| person_idx = 0 | |
| smpl_dict_last_obs = loaded_data[1] | |
| smpl_dict_last_obs = {k: torch.from_numpy(np.array(v)).float().to(device) for k,v in smpl_dict_last_obs.items()} | |
| pred_motions = torch.from_numpy(np.load(pred_motions_path, allow_pickle=True)).to(device) | |
| current_motions = pred_motions[sorted_idx][:30] | |
| smpl2mesh = SMPL2Mesh(device) | |
| init_params = {} | |
| init_params["betas"] = smpl_dict_last_obs["betas"][person_idx].unsqueeze(0).expand(current_motions.shape[0], -1) | |
| init_params["pose"] = smpl_dict_last_obs["body_pose"][person_idx].view(-1, 3) | |
| # init_params["pose"] = torch.stack([init_params["pose"][..., 0], init_params["pose"][..., 2], -init_params["pose"][..., 1]], dim=-1) | |
| assert init_params["pose"].shape[0] == 24, "the body pose should have 24 joints, it is the output of NLF" | |
| init_params["pose"] = init_params["pose"].unsqueeze(0).expand(current_motions.shape[0], -1, -1).view(current_motions.shape[0], -1).to(device) | |
| # rot_motions is a tensor 30,72 | |
| rot_motions = torch.zeros(30, 72).to(device) | |
| current_motions = current_motions[0, 0, :30, :, :] | |
| # rot_motions[frame_id] = loaded_data[frame_id]["pose"] | |
| for frame_id in range(30): | |
| # print(f"Processing frame {frame_id}") | |
| # rot_motions.append(loaded_data[frame_id]["body_pose"]) | |
| temp = torch.tensor(loaded_data[frame_id]["body_pose"]).to(device).reshape(-1, 24, 3) | |
| # temp = torch.stack([temp[..., 0], temp[..., 2], -temp[..., 1]], dim=-1) | |
| rot_motions[frame_id] = temp.view(-1, 72) | |
| rot_motions[frame_id, 0] = 1.6005e+00 # X-axis rotation | |
| rot_motions[frame_id, 1] = 8.2655e-01 # Y-axis rotation | |
| rot_motions[frame_id, 2] = 9.4306e-01 # Z-axis rotation | |
| # rot_motions = torch.tensor([[ 1.6005e+00, 8.2655e-01, 9.4306e-01, -1.0372e-01, 2.7821e-02, | |
| # -3.8120e-01, -6.2227e-01, -1.3174e-01, -3.9679e-01, -5.5898e-02, | |
| # 4.0376e-02, 1.0782e-01, -2.1775e-02, 9.2568e-02, -8.4396e-02, | |
| # 9.6487e-01, 4.5018e-02, 2.5192e-01, -1.0397e-01, 1.1797e-01, | |
| # -1.3300e-01, -1.0074e+00, 5.0848e-01, 5.7921e-01, -6.9055e-01, | |
| # -4.2592e-02, 2.1878e-01, 1.1854e-01, 1.6012e-01, -7.8607e-02, | |
| # 3.0257e-01, 3.8598e-02, -5.1632e-01, 1.3716e-01, 1.6491e-01, | |
| # 7.4003e-02, 2.7080e-01, 2.8428e-01, -1.6114e-01, -2.1017e-01, | |
| # 3.2442e-01, 5.4414e-01, 1.6220e-01, -2.2343e-02, -5.5549e-01, | |
| # -5.5686e-01, 1.4427e-01, 5.9082e-02, -8.0001e-02, 2.5315e-01, | |
| # -4.6155e-01, -2.7584e-01, 2.5945e-03, 4.7265e-01, -5.5788e-02, | |
| # -5.2776e-01, 8.8441e-02, 1.2666e-01, 1.8338e-01, 2.2411e-02, | |
| # 2.5319e-02, -2.4700e-01, -4.3147e-01, -9.9603e-02, 2.8157e-01, | |
| # 2.2922e-01, -4.2805e-01, 6.8633e-02, 1.2775e-01, -1.7168e-01, | |
| # -6.4354e-02, -4.8196e-02], | |
| # [ 1.6031e+00, 8.6938e-01, 9.5093e-01, -2.4728e-01, -2.5365e-02, | |
| # -3.5090e-01, -6.2714e-01, -1.3281e-01, -3.8726e-01, -7.5513e-02, | |
| # 5.1388e-02, 1.0953e-01, 2.4019e-01, 9.5262e-02, -1.1295e-01, | |
| # 9.5034e-01, 3.7820e-02, 2.5818e-01, -1.1904e-01, 1.0212e-01, | |
| # -1.2446e-01, -1.0170e+00, 5.0628e-01, 5.7588e-01, -6.8644e-01, | |
| # -5.0001e-02, 1.9725e-01, 1.1670e-01, 1.5288e-01, -7.3347e-02, | |
| # 2.7852e-01, 3.9223e-02, -5.1571e-01, 1.3149e-01, 1.5630e-01, | |
| # 7.1519e-02, 2.7341e-01, 2.7110e-01, -1.6775e-01, -2.0063e-01, | |
| # 3.1425e-01, 5.2800e-01, 1.5228e-01, -3.0518e-02, -5.5076e-01, | |
| # -5.4393e-01, 1.5199e-01, 7.1569e-02, -8.7057e-02, 2.5214e-01, | |
| # -4.4306e-01, -2.8668e-01, -2.0587e-02, 4.6127e-01, -4.5369e-02, | |
| # -5.3020e-01, 8.1563e-02, 1.2601e-01, 2.0114e-01, 2.6854e-02, | |
| # 2.3951e-02, -2.4098e-01, -4.2893e-01, -1.0319e-01, 2.7675e-01, | |
| # 2.2407e-01, -4.0467e-01, 7.5838e-02, 1.2791e-01, -1.5939e-01, | |
| # -6.1213e-02, -2.8723e-02], | |
| # [ 1.6110e+00, 8.7997e-01, 9.4755e-01, -2.9480e-01, -5.0045e-02, | |
| # -3.4665e-01, -6.4217e-01, -1.2302e-01, -3.8091e-01, -8.1906e-02, | |
| # 5.4623e-02, 1.0953e-01, 3.0538e-01, 9.1858e-02, -1.1804e-01, | |
| # 9.5882e-01, 4.4244e-02, 2.5869e-01, -1.2163e-01, 9.9909e-02, | |
| # -1.2311e-01, -1.0218e+00, 4.9697e-01, 5.8416e-01, -6.8940e-01, | |
| # -3.8903e-02, 1.9803e-01, 1.0894e-01, 1.5256e-01, -7.2756e-02, | |
| # 2.7297e-01, 4.9584e-02, -5.2945e-01, 1.3066e-01, 1.4965e-01, | |
| # 6.4956e-02, 2.8823e-01, 2.7311e-01, -1.7025e-01, -2.0369e-01, | |
| # 3.1524e-01, 5.3636e-01, 1.5043e-01, -3.4381e-02, -5.6039e-01, | |
| # -5.4034e-01, 1.5133e-01, 7.7262e-02, -8.2864e-02, 2.4608e-01, | |
| # -4.5811e-01, -2.8397e-01, -1.5466e-02, 4.8184e-01, -3.5552e-02, | |
| # -5.3320e-01, 9.3335e-02, 1.2752e-01, 2.0015e-01, 9.5036e-03, | |
| # 2.3358e-02, -2.4074e-01, -4.3686e-01, -1.1153e-01, 2.7872e-01, | |
| # 2.2347e-01, -4.0031e-01, 8.1883e-02, 1.3366e-01, -1.5507e-01, | |
| # -6.3415e-02, -2.5810e-02], | |
| # [ 1.6078e+00, 8.2731e-01, 9.4191e-01, -1.2817e-01, 1.0199e-02, | |
| # -3.8164e-01, -6.3457e-01, -1.2142e-01, -3.9256e-01, -5.9317e-02, | |
| # 4.1749e-02, 1.0364e-01, -6.4504e-03, 8.3162e-02, -8.5214e-02, | |
| # 9.7525e-01, 5.4130e-02, 2.4759e-01, -1.0453e-01, 1.1918e-01, | |
| # -1.3388e-01, -1.0173e+00, 4.9495e-01, 5.9313e-01, -7.0463e-01, | |
| # -3.1721e-02, 2.2378e-01, 1.1515e-01, 1.6104e-01, -7.8829e-02, | |
| # 3.0084e-01, 5.3103e-02, -5.3755e-01, 1.4287e-01, 1.6034e-01, | |
| # 6.3805e-02, 2.8415e-01, 2.8788e-01, -1.6004e-01, -2.1489e-01, | |
| # 3.3769e-01, 5.6067e-01, 1.6184e-01, -3.1818e-02, -5.6590e-01, | |
| # -5.5922e-01, 1.3768e-01, 6.3404e-02, -8.5235e-02, 2.5253e-01, | |
| # -4.8702e-01, -2.8300e-01, 1.6068e-02, 5.0862e-01, -6.2476e-02, | |
| # -5.5081e-01, 1.3232e-01, 1.1314e-01, 1.7680e-01, -3.0066e-02, | |
| # 2.8321e-02, -2.4106e-01, -4.3505e-01, -1.0106e-01, 2.7696e-01, | |
| # 2.2127e-01, -4.3045e-01, 7.2721e-02, 1.3034e-01, -1.6938e-01, | |
| # -6.5850e-02, -4.7649e-02], | |
| # [ 1.6127e+00, 8.2087e-01, 9.3510e-01, -1.2865e-01, 7.0033e-03, | |
| # -3.8277e-01, -6.4321e-01, -1.1820e-01, -3.9148e-01, -5.7967e-02, | |
| # 4.2050e-02, 1.0235e-01, -1.8375e-02, 8.0566e-02, -8.2773e-02, | |
| # 9.7714e-01, 5.6629e-02, 2.4823e-01, -1.0411e-01, 1.2287e-01, | |
| # -1.3516e-01, -1.0191e+00, 4.8862e-01, 5.9904e-01, -7.0806e-01, | |
| # -2.2407e-02, 2.2896e-01, 1.1342e-01, 1.6324e-01, -7.8949e-02, | |
| # 3.0168e-01, 6.0124e-02, -5.4830e-01, 1.4416e-01, 1.5701e-01, | |
| # 5.9664e-02, 2.8986e-01, 2.9288e-01, -1.5865e-01, -2.1956e-01, | |
| # 3.4455e-01, 5.7280e-01, 1.6278e-01, -3.1477e-02, -5.7379e-01, | |
| # -5.6414e-01, 1.3230e-01, 6.3549e-02, -8.4579e-02, 2.5156e-01, | |
| # -5.0488e-01, -2.8463e-01, 2.8527e-02, 5.2620e-01, -6.6063e-02, | |
| # -5.4647e-01, 1.4498e-01, 1.0835e-01, 1.5971e-01, -4.4815e-02, | |
| # 2.8694e-02, -2.3884e-01, -4.4007e-01, -1.0147e-01, 2.7542e-01, | |
| # 2.2058e-01, -4.3300e-01, 7.6706e-02, 1.3656e-01, -1.6946e-01, | |
| # -6.9181e-02, -5.3041e-02], | |
| # [ 1.6108e+00, 8.8141e-01, 9.4745e-01, -3.1157e-01, -5.7691e-02, | |
| # -3.4433e-01, -6.4394e-01, -1.2029e-01, -3.7842e-01, -8.1581e-02, | |
| # 5.4783e-02, 1.1136e-01, 3.2240e-01, 8.5124e-02, -1.1836e-01, | |
| # 9.5431e-01, 4.9055e-02, 2.5693e-01, -1.2930e-01, 9.6078e-02, | |
| # -1.2446e-01, -1.0248e+00, 4.9433e-01, 5.8570e-01, -7.0217e-01, | |
| # -4.1788e-02, 1.9344e-01, 1.1305e-01, 1.5165e-01, -7.0912e-02, | |
| # 2.7373e-01, 5.2925e-02, -5.3586e-01, 1.3504e-01, 1.4768e-01, | |
| # 6.5673e-02, 2.8562e-01, 2.7257e-01, -1.7666e-01, -2.0663e-01, | |
| # 2.9556e-01, 5.3934e-01, 1.4793e-01, -2.3227e-02, -5.6870e-01, | |
| # -5.4620e-01, 1.5352e-01, 8.2237e-02, -8.0556e-02, 2.4192e-01, | |
| # -4.6349e-01, -2.7927e-01, -2.2375e-02, 4.8494e-01, -3.1615e-02, | |
| # -4.9880e-01, 7.3527e-02, 1.3946e-01, 1.8965e-01, 3.0069e-02, | |
| # 1.9538e-02, -2.3811e-01, -4.4155e-01, -1.1854e-01, 2.7917e-01, | |
| # 2.2786e-01, -3.9457e-01, 8.4604e-02, 1.3755e-01, -1.5437e-01, | |
| # -6.4888e-02, -2.4748e-02], | |
| # [ 1.6175e+00, 8.4030e-01, 9.4400e-01, -2.6284e-01, -4.4624e-02, | |
| # -3.6173e-01, -6.6031e-01, -1.1552e-01, -3.8892e-01, -6.9325e-02, | |
| # 5.2747e-02, 9.9177e-02, 2.3507e-01, 8.6017e-02, -1.1489e-01, | |
| # 9.8375e-01, 5.2098e-02, 2.5241e-01, -1.1985e-01, 1.0992e-01, | |
| # -1.3038e-01, -1.0503e+00, 4.9318e-01, 6.0568e-01, -7.0369e-01, | |
| # -2.8890e-02, 2.1513e-01, 1.0779e-01, 1.5872e-01, -7.6392e-02, | |
| # 2.8910e-01, 5.8300e-02, -5.4987e-01, 1.3028e-01, 1.5376e-01, | |
| # 5.4624e-02, 2.9445e-01, 2.8195e-01, -1.6763e-01, -2.1595e-01, | |
| # 3.2959e-01, 5.6479e-01, 1.5581e-01, -2.9649e-02, -5.7555e-01, | |
| # -5.4656e-01, 1.4160e-01, 7.7658e-02, -8.1496e-02, 2.3873e-01, | |
| # -4.8825e-01, -2.7527e-01, 1.7245e-02, 5.1932e-01, -4.8679e-02, | |
| # -5.3691e-01, 1.1823e-01, 1.3559e-01, 1.8416e-01, -1.0622e-02, | |
| # 2.1179e-02, -2.3586e-01, -4.4682e-01, -1.1912e-01, 2.7786e-01, | |
| # 2.2629e-01, -4.1122e-01, 8.6780e-02, 1.4446e-01, -1.5303e-01, | |
| # -6.8516e-02, -4.3646e-02], | |
| # [ 1.6171e+00, 8.0908e-01, 9.3404e-01, -1.4870e-01, -3.6595e-03, | |
| # -3.8383e-01, -6.5764e-01, -1.1242e-01, -3.9115e-01, -5.7404e-02, | |
| # 4.3636e-02, 9.8583e-02, 1.3409e-02, 7.8856e-02, -8.7588e-02, | |
| # 9.8670e-01, 6.0058e-02, 2.4756e-01, -1.0946e-01, 1.2403e-01, | |
| # -1.3564e-01, -1.0405e+00, 4.9134e-01, 6.0754e-01, -7.1781e-01, | |
| # -2.0699e-02, 2.2599e-01, 1.1115e-01, 1.6500e-01, -7.9038e-02, | |
| # 3.0904e-01, 6.1142e-02, -5.5141e-01, 1.4399e-01, 1.5818e-01, | |
| # 6.5279e-02, 2.9516e-01, 2.9465e-01, -1.5912e-01, -2.2604e-01, | |
| # 3.4378e-01, 5.7770e-01, 1.6292e-01, -2.3460e-02, -5.7651e-01, | |
| # -5.5556e-01, 1.3447e-01, 6.7109e-02, -7.7476e-02, 2.4402e-01, | |
| # -5.0284e-01, -2.7063e-01, 4.2260e-02, 5.2265e-01, -6.5846e-02, | |
| # -5.3722e-01, 1.2826e-01, 1.3189e-01, 1.6297e-01, -1.5593e-02, | |
| # 2.0784e-02, -2.3802e-01, -4.4729e-01, -1.1048e-01, 2.7932e-01, | |
| # 2.2813e-01, -4.2831e-01, 8.1248e-02, 1.4348e-01, -1.6234e-01, | |
| # -7.2073e-02, -6.0110e-02], | |
| # [ 1.6172e+00, 8.0780e-01, 9.2508e-01, -1.1043e-01, 1.5869e-02, | |
| # -3.9091e-01, -6.5147e-01, -1.2169e-01, -3.8974e-01, -5.2630e-02, | |
| # 3.9148e-02, 1.0425e-01, -5.0874e-02, 8.0342e-02, -7.4880e-02, | |
| # 9.6878e-01, 4.6173e-02, 2.4613e-01, -1.1391e-01, 1.2274e-01, | |
| # -1.3708e-01, -1.0093e+00, 4.9945e-01, 5.9141e-01, -7.1179e-01, | |
| # -4.1468e-02, 2.2081e-01, 1.1880e-01, 1.6512e-01, -7.7646e-02, | |
| # 3.0951e-01, 5.2777e-02, -5.3674e-01, 1.4769e-01, 1.6093e-01, | |
| # 6.6290e-02, 2.7911e-01, 2.8816e-01, -1.6946e-01, -2.2208e-01, | |
| # 3.2207e-01, 5.6807e-01, 1.5750e-01, -1.0790e-02, -5.7038e-01, | |
| # -5.6035e-01, 1.3992e-01, 6.4614e-02, -7.6299e-02, 2.4234e-01, | |
| # -4.9502e-01, -2.8281e-01, 3.6125e-02, 5.0050e-01, -5.3537e-02, | |
| # -4.7532e-01, 9.4072e-02, 1.1179e-01, 1.3639e-01, 1.0555e-03, | |
| # 3.0102e-02, -2.3356e-01, -4.4694e-01, -9.9521e-02, 2.7499e-01, | |
| # 2.2463e-01, -4.2757e-01, 7.5108e-02, 1.4227e-01, -1.7291e-01, | |
| # -7.0797e-02, -5.5015e-02], | |
| # [ 1.6127e+00, 7.9969e-01, 9.2656e-01, -9.2324e-02, 2.1135e-02, | |
| # -3.9503e-01, -6.4862e-01, -1.1920e-01, -3.8847e-01, -4.7938e-02, | |
| # 3.7856e-02, 1.0542e-01, -7.5337e-02, 7.9361e-02, -7.1081e-02, | |
| # 9.7582e-01, 4.9855e-02, 2.4424e-01, -1.1079e-01, 1.2464e-01, | |
| # -1.3823e-01, -1.0107e+00, 5.0145e-01, 5.9228e-01, -7.1782e-01, | |
| # -4.1891e-02, 2.2175e-01, 1.1935e-01, 1.6617e-01, -7.8416e-02, | |
| # 3.1054e-01, 5.2554e-02, -5.3566e-01, 1.4889e-01, 1.6306e-01, | |
| # 6.5496e-02, 2.8046e-01, 2.8974e-01, -1.6876e-01, -2.2292e-01, | |
| # 3.2426e-01, 5.7149e-01, 1.5917e-01, -9.2451e-03, -5.7336e-01, | |
| # -5.6363e-01, 1.3957e-01, 6.2405e-02, -7.7520e-02, 2.4188e-01, | |
| # -5.0227e-01, -2.8387e-01, 4.2127e-02, 5.0270e-01, -5.5740e-02, | |
| # -4.7964e-01, 9.9425e-02, 1.1146e-01, 1.3111e-01, -4.0174e-03, | |
| # 3.0246e-02, -2.3279e-01, -4.4877e-01, -9.8105e-02, 2.7429e-01, | |
| # 2.2596e-01, -4.3045e-01, 7.3784e-02, 1.4046e-01, -1.7344e-01, | |
| # -7.0867e-02, -5.6526e-02], | |
| # [ 1.6120e+00, 7.8502e-01, 9.1977e-01, -5.2430e-02, 3.4929e-02, | |
| # -4.0406e-01, -6.5727e-01, -1.1731e-01, -3.8496e-01, -4.3661e-02, | |
| # 3.5240e-02, 1.0774e-01, -1.6151e-01, 8.3658e-02, -5.7072e-02, | |
| # 9.8469e-01, 4.6138e-02, 2.4297e-01, -1.0707e-01, 1.3566e-01, | |
| # -1.3919e-01, -1.0010e+00, 5.0230e-01, 5.9108e-01, -7.1900e-01, | |
| # -3.8501e-02, 2.2520e-01, 1.1559e-01, 1.7051e-01, -8.0410e-02, | |
| # 3.1320e-01, 5.2449e-02, -5.3276e-01, 1.5435e-01, 1.7007e-01, | |
| # 7.0888e-02, 2.8487e-01, 2.9777e-01, -1.5472e-01, -2.3231e-01, | |
| # 3.5546e-01, 5.8281e-01, 1.6599e-01, -1.8913e-02, -5.7525e-01, | |
| # -5.5674e-01, 1.3210e-01, 5.5984e-02, -8.3314e-02, 2.3888e-01, | |
| # -5.1031e-01, -2.7750e-01, 6.4134e-02, 5.0933e-01, -8.5122e-02, | |
| # -5.3972e-01, 1.3396e-01, 1.1648e-01, 1.2733e-01, -1.8583e-02, | |
| # 2.3639e-02, -2.3216e-01, -4.4518e-01, -9.0224e-02, 2.6999e-01, | |
| # 2.2834e-01, -4.3949e-01, 6.9299e-02, 1.3335e-01, -1.7576e-01, | |
| # -6.5963e-02, -6.5975e-02], | |
| # [ 1.6071e+00, 7.9310e-01, 9.2444e-01, -4.9396e-02, 4.3975e-02, | |
| # -4.0127e-01, -6.4328e-01, -1.2693e-01, -3.9056e-01, -4.2565e-02, | |
| # 3.4209e-02, 1.0909e-01, -1.4793e-01, 8.5667e-02, -6.2626e-02, | |
| # 9.7650e-01, 3.6768e-02, 2.4164e-01, -1.0416e-01, 1.2861e-01, | |
| # -1.3928e-01, -9.9763e-01, 5.1174e-01, 5.8280e-01, -7.2009e-01, | |
| # -5.7355e-02, 2.1432e-01, 1.1871e-01, 1.6651e-01, -7.9274e-02, | |
| # 3.1727e-01, 4.2364e-02, -5.2256e-01, 1.5518e-01, 1.7045e-01, | |
| # 7.8902e-02, 2.7255e-01, 2.8947e-01, -1.6404e-01, -2.1773e-01, | |
| # 3.2939e-01, 5.6419e-01, 1.6624e-01, -7.9742e-03, -5.6667e-01, | |
| # -5.6618e-01, 1.3820e-01, 5.5287e-02, -7.6634e-02, 2.5377e-01, | |
| # -4.8652e-01, -2.7879e-01, 3.2333e-02, 4.8341e-01, -6.1367e-02, | |
| # -4.8904e-01, 8.6460e-02, 1.1950e-01, 1.3502e-01, 1.5787e-02, | |
| # 2.9844e-02, -2.3639e-01, -4.4481e-01, -9.5168e-02, 2.7725e-01, | |
| # 2.2710e-01, -4.3776e-01, 6.7010e-02, 1.3388e-01, -1.7756e-01, | |
| # -6.7554e-02, -5.8787e-02], | |
| # [ 1.6114e+00, 7.9535e-01, 9.2793e-01, -7.8612e-02, 3.5401e-02, | |
| # -3.9924e-01, -6.4773e-01, -1.3112e-01, -3.9557e-01, -4.6138e-02, | |
| # 3.7209e-02, 1.0605e-01, -9.1472e-02, 9.2488e-02, -7.1972e-02, | |
| # 9.7635e-01, 2.6682e-02, 2.4072e-01, -1.0694e-01, 1.2549e-01, | |
| # -1.3883e-01, -1.0046e+00, 5.1723e-01, 5.8259e-01, -7.1149e-01, | |
| # -6.7292e-02, 2.1092e-01, 1.1739e-01, 1.6599e-01, -7.9772e-02, | |
| # 3.1622e-01, 3.6763e-02, -5.1623e-01, 1.4984e-01, 1.7371e-01, | |
| # 7.7168e-02, 2.7026e-01, 2.8119e-01, -1.6621e-01, -2.1452e-01, | |
| # 3.2701e-01, 5.5576e-01, 1.6452e-01, -6.4499e-03, -5.6051e-01, | |
| # -5.5295e-01, 1.4345e-01, 5.8258e-02, -7.2799e-02, 2.4994e-01, | |
| # -4.7749e-01, -2.7572e-01, 3.4231e-02, 4.7468e-01, -5.5045e-02, | |
| # -4.9712e-01, 7.6196e-02, 1.2551e-01, 1.5092e-01, 3.0985e-02, | |
| # 2.5341e-02, -2.3434e-01, -4.4481e-01, -9.8031e-02, 2.7642e-01, | |
| # 2.2843e-01, -4.3310e-01, 6.6681e-02, 1.3241e-01, -1.7513e-01, | |
| # -6.4599e-02, -5.5685e-02], | |
| # [ 1.6089e+00, 7.9613e-01, 9.2071e-01, -4.4012e-02, 4.6298e-02, | |
| # -4.0188e-01, -6.3490e-01, -1.3039e-01, -3.9274e-01, -4.2072e-02, | |
| # 3.4813e-02, 1.1080e-01, -1.4711e-01, 8.4902e-02, -6.2261e-02, | |
| # 9.6799e-01, 3.5207e-02, 2.4217e-01, -1.0291e-01, 1.2735e-01, | |
| # -1.3903e-01, -9.8320e-01, 5.1397e-01, 5.7345e-01, -6.9947e-01, | |
| # -6.0845e-02, 2.1852e-01, 1.1894e-01, 1.6639e-01, -7.9859e-02, | |
| # 3.1241e-01, 3.4346e-02, -5.0957e-01, 1.4511e-01, 1.7371e-01, | |
| # 7.4733e-02, 2.6370e-01, 2.8498e-01, -1.6673e-01, -2.1329e-01, | |
| # 3.2700e-01, 5.5354e-01, 1.6658e-01, -4.1914e-03, -5.5837e-01, | |
| # -5.6159e-01, 1.4337e-01, 5.5111e-02, -7.1239e-02, 2.6087e-01, | |
| # -4.7412e-01, -2.7577e-01, 3.0568e-02, 4.6762e-01, -5.3383e-02, | |
| # -4.8441e-01, 6.8504e-02, 1.2392e-01, 1.4773e-01, 3.7464e-02, | |
| # 2.6383e-02, -2.4123e-01, -4.4229e-01, -9.4151e-02, 2.8205e-01, | |
| # 2.2989e-01, -4.3240e-01, 6.5174e-02, 1.3269e-01, -1.7646e-01, | |
| # -6.7489e-02, -5.9306e-02], | |
| # [ 1.6064e+00, 7.8379e-01, 9.1715e-01, -2.2837e-02, 5.6671e-02, | |
| # -4.0800e-01, -6.3420e-01, -1.3400e-01, -3.9289e-01, -3.7460e-02, | |
| # 3.2855e-02, 1.1298e-01, -1.8396e-01, 9.2378e-02, -5.6299e-02, | |
| # 9.7151e-01, 2.7896e-02, 2.4129e-01, -1.0158e-01, 1.2944e-01, | |
| # -1.4058e-01, -9.6946e-01, 5.1848e-01, 5.6872e-01, -6.9208e-01, | |
| # -6.7717e-02, 2.2146e-01, 1.1953e-01, 1.6756e-01, -8.1250e-02, | |
| # 3.0985e-01, 3.0301e-02, -5.0364e-01, 1.4353e-01, 1.7909e-01, | |
| # 6.9708e-02, 2.5675e-01, 2.8108e-01, -1.6580e-01, -2.1183e-01, | |
| # 3.3095e-01, 5.5397e-01, 1.6789e-01, -5.1917e-03, -5.5819e-01, | |
| # -5.6124e-01, 1.4188e-01, 5.2478e-02, -7.1689e-02, 2.5887e-01, | |
| # -4.8129e-01, -2.7914e-01, 3.6637e-02, 4.7029e-01, -5.3329e-02, | |
| # -4.9868e-01, 7.5359e-02, 1.1654e-01, 1.4039e-01, 2.7606e-02, | |
| # 2.6097e-02, -2.3892e-01, -4.4175e-01, -8.8701e-02, 2.7705e-01, | |
| # 2.2809e-01, -4.3715e-01, 6.0672e-02, 1.2738e-01, -1.8168e-01, | |
| # -6.3790e-02, -5.8458e-02], | |
| # [ 1.6036e+00, 7.6848e-01, 9.1063e-01, 1.5594e-02, 7.0544e-02, | |
| # -4.1805e-01, -6.4090e-01, -1.2969e-01, -3.8887e-01, -2.9953e-02, | |
| # 2.8649e-02, 1.1545e-01, -2.5789e-01, 9.7814e-02, -4.4669e-02, | |
| # 9.8152e-01, 2.8546e-02, 2.4027e-01, -9.8450e-02, 1.3538e-01, | |
| # -1.4215e-01, -9.5859e-01, 5.2286e-01, 5.6802e-01, -6.9194e-01, | |
| # -6.5219e-02, 2.2749e-01, 1.1723e-01, 1.7065e-01, -8.3186e-02, | |
| # 3.1441e-01, 2.9292e-02, -4.9926e-01, 1.4394e-01, 1.8294e-01, | |
| # 6.8533e-02, 2.5724e-01, 2.8267e-01, -1.6227e-01, -2.1602e-01, | |
| # 3.3988e-01, 5.6238e-01, 1.7019e-01, -2.4435e-04, -5.6093e-01, | |
| # -5.5890e-01, 1.3799e-01, 4.8388e-02, -6.6029e-02, 2.5733e-01, | |
| # -4.9297e-01, -2.7230e-01, 5.9701e-02, 4.7325e-01, -5.3443e-02, | |
| # -5.0340e-01, 7.7246e-02, 1.2219e-01, 1.3809e-01, 3.0451e-02, | |
| # 2.2752e-02, -2.3838e-01, -4.4713e-01, -8.9093e-02, 2.7884e-01, | |
| # 2.3090e-01, -4.4216e-01, 5.9356e-02, 1.2918e-01, -1.8294e-01, | |
| # -6.6295e-02, -6.7253e-02], | |
| # [ 1.5982e+00, 7.6427e-01, 9.0982e-01, 4.5329e-02, 8.3458e-02, | |
| # -4.2476e-01, -6.3506e-01, -1.3275e-01, -3.8963e-01, -2.2915e-02, | |
| # 2.5772e-02, 1.1876e-01, -2.9880e-01, 1.0129e-01, -3.9239e-02, | |
| # 9.8655e-01, 2.3997e-02, 2.3891e-01, -9.0377e-02, 1.3715e-01, | |
| # -1.4526e-01, -9.4479e-01, 5.2667e-01, 5.6371e-01, -6.8938e-01, | |
| # -7.0775e-02, 2.2987e-01, 1.1846e-01, 1.7032e-01, -8.5228e-02, | |
| # 3.1240e-01, 2.6075e-02, -4.9633e-01, 1.4413e-01, 1.8624e-01, | |
| # 6.4543e-02, 2.5696e-01, 2.8016e-01, -1.6300e-01, -2.0918e-01, | |
| # 3.4272e-01, 5.5946e-01, 1.7563e-01, -4.3650e-03, -5.6280e-01, | |
| # -5.6853e-01, 1.3560e-01, 4.5305e-02, -6.5227e-02, 2.6975e-01, | |
| # -4.9916e-01, -2.7250e-01, 4.4762e-02, 4.7997e-01, -5.1297e-02, | |
| # -5.1131e-01, 8.1539e-02, 1.2004e-01, 1.4303e-01, 2.1781e-02, | |
| # 2.4702e-02, -2.4191e-01, -4.4581e-01, -8.9587e-02, 2.8206e-01, | |
| # 2.2981e-01, -4.4990e-01, 5.5708e-02, 1.2385e-01, -1.8772e-01, | |
| # -6.5355e-02, -6.4543e-02], | |
| # [ 1.5980e+00, 7.6793e-01, 9.1314e-01, 3.4286e-02, 7.8889e-02, | |
| # -4.2239e-01, -6.3568e-01, -1.3518e-01, -3.9113e-01, -2.5918e-02, | |
| # 2.7648e-02, 1.1746e-01, -2.7750e-01, 1.0026e-01, -4.1510e-02, | |
| # 9.8393e-01, 2.1089e-02, 2.4000e-01, -9.1654e-02, 1.3650e-01, | |
| # -1.4340e-01, -9.5062e-01, 5.2447e-01, 5.6600e-01, -6.9092e-01, | |
| # -7.0625e-02, 2.2859e-01, 1.1953e-01, 1.7035e-01, -8.3394e-02, | |
| # 3.1108e-01, 2.9202e-02, -5.0096e-01, 1.4573e-01, 1.8334e-01, | |
| # 6.3919e-02, 2.5553e-01, 2.7929e-01, -1.6311e-01, -2.0922e-01, | |
| # 3.3873e-01, 5.5995e-01, 1.7310e-01, -5.9155e-03, -5.6344e-01, | |
| # -5.7090e-01, 1.3492e-01, 4.6463e-02, -6.8248e-02, 2.6328e-01, | |
| # -5.0297e-01, -2.8269e-01, 4.1822e-02, 4.8055e-01, -4.8719e-02, | |
| # -5.1152e-01, 8.8375e-02, 1.0532e-01, 1.3665e-01, 4.5898e-03, | |
| # 2.9124e-02, -2.3928e-01, -4.4522e-01, -8.5394e-02, 2.7724e-01, | |
| # 2.2524e-01, -4.5172e-01, 5.5692e-02, 1.2248e-01, -1.9115e-01, | |
| # -6.3939e-02, -5.9218e-02], | |
| # [ 1.6006e+00, 7.6986e-01, 9.1319e-01, 3.0826e-02, 7.8324e-02, | |
| # -4.2216e-01, -6.3810e-01, -1.3510e-01, -3.9068e-01, -2.6516e-02, | |
| # 2.7604e-02, 1.1624e-01, -2.7519e-01, 1.0167e-01, -4.3052e-02, | |
| # 9.8528e-01, 1.9331e-02, 2.4012e-01, -9.2000e-02, 1.3593e-01, | |
| # -1.4402e-01, -9.5365e-01, 5.2531e-01, 5.6749e-01, -6.9263e-01, | |
| # -7.1398e-02, 2.2658e-01, 1.1795e-01, 1.7006e-01, -8.3400e-02, | |
| # 3.1425e-01, 2.9896e-02, -5.0214e-01, 1.4688e-01, 1.8203e-01, | |
| # 6.5908e-02, 2.5645e-01, 2.7999e-01, -1.6388e-01, -2.1038e-01, | |
| # 3.3451e-01, 5.5951e-01, 1.7207e-01, -3.2292e-03, -5.6347e-01, | |
| # -5.7077e-01, 1.3484e-01, 4.6472e-02, -6.8778e-02, 2.6014e-01, | |
| # -5.0357e-01, -2.8219e-01, 4.2198e-02, 4.8172e-01, -5.1418e-02, | |
| # -4.9674e-01, 8.6105e-02, 1.0458e-01, 1.2895e-01, 6.6461e-03, | |
| # 3.2822e-02, -2.3739e-01, -4.4672e-01, -8.5156e-02, 2.7649e-01, | |
| # 2.2583e-01, -4.5141e-01, 5.6561e-02, 1.2545e-01, -1.9071e-01, | |
| # -6.4253e-02, -5.9937e-02], | |
| # [ 1.6034e+00, 7.6981e-01, 9.1797e-01, 5.8256e-03, 7.3706e-02, | |
| # -4.1936e-01, -6.4204e-01, -1.3613e-01, -3.9440e-01, -3.0745e-02, | |
| # 2.9719e-02, 1.1275e-01, -2.3104e-01, 1.1198e-01, -5.2077e-02, | |
| # 9.8376e-01, 2.0086e-02, 2.3991e-01, -9.8931e-02, 1.3170e-01, | |
| # -1.4142e-01, -9.6163e-01, 5.3573e-01, 5.6420e-01, -6.7548e-01, | |
| # -7.9034e-02, 2.2631e-01, 1.1712e-01, 1.7053e-01, -8.3982e-02, | |
| # 3.1484e-01, 1.7779e-02, -4.8716e-01, 1.3686e-01, 1.9178e-01, | |
| # 6.6041e-02, 2.4692e-01, 2.6554e-01, -1.6434e-01, -2.1034e-01, | |
| # 3.2963e-01, 5.4917e-01, 1.6845e-01, 5.5389e-03, -5.5106e-01, | |
| # -5.4591e-01, 1.4121e-01, 5.1210e-02, -6.5210e-02, 2.4511e-01, | |
| # -4.8249e-01, -2.7984e-01, 6.5393e-02, 4.5499e-01, -4.5687e-02, | |
| # -5.0374e-01, 6.0865e-02, 1.1309e-01, 1.1726e-01, 4.2383e-02, | |
| # 2.5343e-02, -2.3224e-01, -4.4553e-01, -7.8187e-02, 2.6830e-01, | |
| # 2.2931e-01, -4.4188e-01, 5.4166e-02, 1.2478e-01, -1.8616e-01, | |
| # -5.9672e-02, -6.3519e-02], | |
| # [ 1.5926e+00, 7.7004e-01, 9.1066e-01, 6.0095e-02, 9.3141e-02, | |
| # -4.2458e-01, -6.2727e-01, -1.3663e-01, -3.8584e-01, -2.3479e-02, | |
| # 2.4599e-02, 1.2425e-01, -3.1701e-01, 1.0760e-01, -3.4306e-02, | |
| # 9.7771e-01, 2.1602e-02, 2.4281e-01, -9.3129e-02, 1.3761e-01, | |
| # -1.4255e-01, -9.3193e-01, 5.2857e-01, 5.5570e-01, -6.8857e-01, | |
| # -7.0443e-02, 2.2603e-01, 1.2181e-01, 1.7059e-01, -8.2862e-02, | |
| # 3.0868e-01, 2.5153e-02, -4.9003e-01, 1.4731e-01, 1.8512e-01, | |
| # 7.0469e-02, 2.5296e-01, 2.8148e-01, -1.6020e-01, -2.1291e-01, | |
| # 3.3519e-01, 5.5883e-01, 1.7205e-01, -7.5351e-05, -5.6245e-01, | |
| # -5.7011e-01, 1.3524e-01, 4.1297e-02, -6.9447e-02, 2.5631e-01, | |
| # -5.0309e-01, -2.7900e-01, 4.7759e-02, 4.6969e-01, -5.6797e-02, | |
| # -4.9566e-01, 7.5720e-02, 1.0821e-01, 1.1518e-01, 2.4912e-02, | |
| # 2.8074e-02, -2.3861e-01, -4.4488e-01, -7.7877e-02, 2.7447e-01, | |
| # 2.3065e-01, -4.5242e-01, 5.2467e-02, 1.1995e-01, -1.9576e-01, | |
| # -6.2474e-02, -6.1936e-02], | |
| # [ 1.5935e+00, 7.7744e-01, 9.1601e-01, 4.2118e-02, 8.5857e-02, | |
| # -4.2007e-01, -6.2491e-01, -1.3534e-01, -3.8629e-01, -2.7382e-02, | |
| # 2.6045e-02, 1.2257e-01, -2.8386e-01, 1.0374e-01, -3.9040e-02, | |
| # 9.7333e-01, 2.6776e-02, 2.4316e-01, -9.5490e-02, 1.3390e-01, | |
| # -1.4170e-01, -9.4103e-01, 5.2837e-01, 5.5689e-01, -6.8921e-01, | |
| # -7.0424e-02, 2.2300e-01, 1.2247e-01, 1.6895e-01, -8.2356e-02, | |
| # 3.0943e-01, 2.4012e-02, -4.9006e-01, 1.4612e-01, 1.8444e-01, | |
| # 7.4065e-02, 2.5139e-01, 2.7956e-01, -1.6242e-01, -2.1162e-01, | |
| # 3.2777e-01, 5.5320e-01, 1.7097e-01, 2.0646e-03, -5.5946e-01, | |
| # -5.6685e-01, 1.3862e-01, 4.4633e-02, -6.7534e-02, 2.5763e-01, | |
| # -4.9074e-01, -2.7487e-01, 4.0232e-02, 4.6158e-01, -5.2707e-02, | |
| # -4.8889e-01, 6.1521e-02, 1.1770e-01, 1.2362e-01, 4.2399e-02, | |
| # 2.5194e-02, -2.4064e-01, -4.4373e-01, -8.2418e-02, 2.7713e-01, | |
| # 2.3262e-01, -4.4652e-01, 5.3957e-02, 1.2127e-01, -1.9140e-01, | |
| # -6.3150e-02, -6.0892e-02], | |
| # [ 1.5928e+00, 7.7859e-01, 9.1728e-01, 3.8561e-02, 8.3874e-02, | |
| # -4.1888e-01, -6.2321e-01, -1.3401e-01, -3.8596e-01, -2.8135e-02, | |
| # 2.6617e-02, 1.2287e-01, -2.7631e-01, 1.0193e-01, -3.9768e-02, | |
| # 9.7028e-01, 3.0499e-02, 2.4327e-01, -9.7520e-02, 1.3332e-01, | |
| # -1.4087e-01, -9.4116e-01, 5.2783e-01, 5.5581e-01, -6.8946e-01, | |
| # -6.8912e-02, 2.2326e-01, 1.2420e-01, 1.6912e-01, -8.2000e-02, | |
| # 3.0850e-01, 2.3511e-02, -4.8805e-01, 1.4524e-01, 1.8462e-01, | |
| # 7.4131e-02, 2.5327e-01, 2.7908e-01, -1.6270e-01, -2.1301e-01, | |
| # 3.2760e-01, 5.5323e-01, 1.6963e-01, 3.4241e-03, -5.5854e-01, | |
| # -5.6342e-01, 1.3993e-01, 4.5648e-02, -6.7479e-02, 2.5608e-01, | |
| # -4.8739e-01, -2.7315e-01, 4.3747e-02, 4.5720e-01, -5.2685e-02, | |
| # -4.8583e-01, 5.6369e-02, 1.2152e-01, 1.2591e-01, 5.1173e-02, | |
| # 2.2651e-02, -2.4076e-01, -4.4336e-01, -8.2901e-02, 2.7786e-01, | |
| # 2.3445e-01, -4.4337e-01, 5.4611e-02, 1.2179e-01, -1.8976e-01, | |
| # -6.3923e-02, -6.2194e-02], | |
| # [ 1.5923e+00, 7.8907e-01, 9.3234e-01, 2.5958e-03, 7.4501e-02, | |
| # -4.1142e-01, -6.2064e-01, -1.4013e-01, -3.9269e-01, -3.3605e-02, | |
| # 2.9855e-02, 1.1648e-01, -1.9841e-01, 1.0612e-01, -5.6660e-02, | |
| # 9.6785e-01, 2.4450e-02, 2.4122e-01, -1.0391e-01, 1.2529e-01, | |
| # -1.3911e-01, -9.5762e-01, 5.3554e-01, 5.5490e-01, -6.8035e-01, | |
| # -8.6011e-02, 2.1864e-01, 1.2768e-01, 1.6646e-01, -8.1843e-02, | |
| # 3.0532e-01, 1.4512e-02, -4.8008e-01, 1.3870e-01, 1.9096e-01, | |
| # 6.8221e-02, 2.4176e-01, 2.6344e-01, -1.6764e-01, -2.0647e-01, | |
| # 3.1671e-01, 5.3998e-01, 1.6377e-01, 1.3754e-03, -5.4781e-01, | |
| # -5.4963e-01, 1.4641e-01, 5.1760e-02, -7.3814e-02, 2.4241e-01, | |
| # -4.6986e-01, -2.8396e-01, 3.9680e-02, 4.4490e-01, -4.5124e-02, | |
| # -4.9316e-01, 4.9161e-02, 1.1173e-01, 1.2221e-01, 5.1617e-02, | |
| # 2.6101e-02, -2.3272e-01, -4.3735e-01, -7.7574e-02, 2.6570e-01, | |
| # 2.2987e-01, -4.3688e-01, 5.1705e-02, 1.1696e-01, -1.8714e-01, | |
| # -5.6388e-02, -5.3614e-02], | |
| # [ 1.6004e+00, 7.8749e-01, 9.3251e-01, -3.5837e-02, 5.9702e-02, | |
| # -4.0712e-01, -6.3153e-01, -1.3912e-01, -3.9537e-01, -3.8402e-02, | |
| # 3.3139e-02, 1.1036e-01, -1.3880e-01, 1.0822e-01, -6.6264e-02, | |
| # 9.7113e-01, 2.2893e-02, 2.4089e-01, -1.0811e-01, 1.2273e-01, | |
| # -1.3905e-01, -9.7440e-01, 5.3591e-01, 5.6279e-01, -6.7856e-01, | |
| # -8.6346e-02, 2.1791e-01, 1.2513e-01, 1.6618e-01, -8.1820e-02, | |
| # 3.0713e-01, 1.5781e-02, -4.8610e-01, 1.3578e-01, 1.9026e-01, | |
| # 6.5493e-02, 2.4274e-01, 2.5998e-01, -1.7033e-01, -2.0635e-01, | |
| # 3.1509e-01, 5.3885e-01, 1.6181e-01, 1.3671e-03, -5.4627e-01, | |
| # -5.4277e-01, 1.4821e-01, 5.6998e-02, -7.3062e-02, 2.3915e-01, | |
| # -4.6706e-01, -2.8552e-01, 4.3505e-02, 4.4814e-01, -4.3142e-02, | |
| # -4.9203e-01, 5.0110e-02, 1.1126e-01, 1.2253e-01, 4.9766e-02, | |
| # 2.6183e-02, -2.2894e-01, -4.3891e-01, -7.9625e-02, 2.6316e-01, | |
| # 2.2770e-01, -4.3245e-01, 5.5008e-02, 1.2143e-01, -1.8278e-01, | |
| # -5.6483e-02, -5.2643e-02], | |
| # [ 1.6017e+00, 7.9113e-01, 9.3809e-01, -6.7551e-02, 4.6256e-02, | |
| # -4.0219e-01, -6.3103e-01, -1.4095e-01, -4.0049e-01, -4.2492e-02, | |
| # 3.7406e-02, 1.0725e-01, -7.3920e-02, 1.0542e-01, -7.7643e-02, | |
| # 9.7202e-01, 2.2354e-02, 2.4111e-01, -1.0547e-01, 1.2038e-01, | |
| # -1.3830e-01, -9.8883e-01, 5.3362e-01, 5.6671e-01, -6.7497e-01, | |
| # -8.5774e-02, 2.1655e-01, 1.2290e-01, 1.6546e-01, -8.1752e-02, | |
| # 3.0430e-01, 1.5775e-02, -4.8960e-01, 1.3168e-01, 1.8947e-01, | |
| # 6.4231e-02, 2.4691e-01, 2.5640e-01, -1.7084e-01, -2.0219e-01, | |
| # 3.1556e-01, 5.3456e-01, 1.6360e-01, -2.0048e-03, -5.4564e-01, | |
| # -5.4182e-01, 1.4932e-01, 6.0489e-02, -7.2539e-02, 2.4137e-01, | |
| # -4.6191e-01, -2.8725e-01, 3.4155e-02, 4.4766e-01, -3.8734e-02, | |
| # -5.0761e-01, 5.0770e-02, 1.1271e-01, 1.2916e-01, 4.8807e-02, | |
| # 2.5224e-02, -2.3130e-01, -4.3803e-01, -8.1995e-02, 2.6426e-01, | |
| # 2.2759e-01, -4.3113e-01, 5.6952e-02, 1.2054e-01, -1.7994e-01, | |
| # -5.5231e-02, -4.9082e-02], | |
| # [ 1.5950e+00, 7.8904e-01, 9.3826e-01, -3.6576e-02, 5.9590e-02, | |
| # -4.0528e-01, -6.2329e-01, -1.4581e-01, -3.9926e-01, -3.7969e-02, | |
| # 3.5045e-02, 1.1077e-01, -1.2400e-01, 1.0273e-01, -7.0544e-02, | |
| # 9.6620e-01, 1.6797e-02, 2.4125e-01, -1.0261e-01, 1.2276e-01, | |
| # -1.3924e-01, -9.7538e-01, 5.3488e-01, 5.5833e-01, -6.7958e-01, | |
| # -9.2604e-02, 2.1295e-01, 1.2727e-01, 1.6576e-01, -8.1800e-02, | |
| # 3.0442e-01, 1.2527e-02, -4.8231e-01, 1.3687e-01, 1.9193e-01, | |
| # 6.9017e-02, 2.4074e-01, 2.5518e-01, -1.6866e-01, -1.9987e-01, | |
| # 3.1764e-01, 5.3039e-01, 1.6599e-01, -1.1522e-03, -5.4175e-01, | |
| # -5.4745e-01, 1.4645e-01, 5.6824e-02, -7.4909e-02, 2.4823e-01, | |
| # -4.5869e-01, -2.8971e-01, 2.7926e-02, 4.4000e-01, -4.5069e-02, | |
| # -5.1098e-01, 4.9779e-02, 1.0933e-01, 1.3024e-01, 5.0407e-02, | |
| # 2.7127e-02, -2.3223e-01, -4.3332e-01, -7.7113e-02, 2.6438e-01, | |
| # 2.2604e-01, -4.3552e-01, 5.2848e-02, 1.1502e-01, -1.8366e-01, | |
| # -5.3910e-02, -4.9222e-02], | |
| # [ 1.5957e+00, 8.0788e-01, 9.4834e-01, -1.0032e-01, 3.4486e-02, | |
| # -3.9099e-01, -6.1836e-01, -1.4673e-01, -4.0106e-01, -4.7277e-02, | |
| # 4.1335e-02, 1.0779e-01, 3.9100e-03, 9.7966e-02, -8.8860e-02, | |
| # 9.5900e-01, 1.9642e-02, 2.4337e-01, -1.0685e-01, 1.1403e-01, | |
| # -1.3578e-01, -9.9286e-01, 5.3129e-01, 5.6030e-01, -6.7628e-01, | |
| # -9.3024e-02, 2.0549e-01, 1.2625e-01, 1.6194e-01, -7.9586e-02, | |
| # 2.9590e-01, 1.3397e-02, -4.8444e-01, 1.3130e-01, 1.8686e-01, | |
| # 6.8038e-02, 2.4167e-01, 2.4957e-01, -1.7291e-01, -1.9544e-01, | |
| # 3.0428e-01, 5.2003e-01, 1.6127e-01, -3.0937e-03, -5.3839e-01, | |
| # -5.4331e-01, 1.5127e-01, 6.3756e-02, -7.6802e-02, 2.4234e-01, | |
| # -4.4598e-01, -2.9270e-01, 9.4432e-03, 4.3445e-01, -3.5560e-02, | |
| # -5.0477e-01, 3.9526e-02, 1.1015e-01, 1.3875e-01, 5.6716e-02, | |
| # 2.8294e-02, -2.3300e-01, -4.3126e-01, -8.1621e-02, 2.6405e-01, | |
| # 2.2596e-01, -4.2528e-01, 5.6517e-02, 1.1539e-01, -1.7770e-01, | |
| # -5.2139e-02, -3.9383e-02], | |
| # [ 1.5882e+00, 7.9877e-01, 9.4328e-01, -2.8720e-02, 6.2287e-02, | |
| # -4.0260e-01, -6.0959e-01, -1.4748e-01, -3.9953e-01, -3.8967e-02, | |
| # 3.5521e-02, 1.1342e-01, -1.2244e-01, 1.0107e-01, -7.0909e-02, | |
| # 9.6160e-01, 2.1357e-02, 2.4391e-01, -1.0138e-01, 1.2151e-01, | |
| # -1.3651e-01, -9.7141e-01, 5.3303e-01, 5.5471e-01, -6.6983e-01, | |
| # -8.8017e-02, 2.1613e-01, 1.2814e-01, 1.6456e-01, -8.0381e-02, | |
| # 2.9939e-01, 1.2009e-02, -4.7984e-01, 1.3194e-01, 1.8968e-01, | |
| # 6.8013e-02, 2.3684e-01, 2.5566e-01, -1.6587e-01, -1.9949e-01, | |
| # 3.1261e-01, 5.2987e-01, 1.6465e-01, -2.3355e-03, -5.4320e-01, | |
| # -5.5236e-01, 1.4478e-01, 5.5450e-02, -7.6929e-02, 2.4452e-01, | |
| # -4.5820e-01, -2.8957e-01, 1.8180e-02, 4.3747e-01, -4.2283e-02, | |
| # -5.0567e-01, 4.5314e-02, 1.0879e-01, 1.2915e-01, 5.2620e-02, | |
| # 2.7722e-02, -2.3599e-01, -4.3225e-01, -7.7019e-02, 2.6511e-01, | |
| # 2.2908e-01, -4.3480e-01, 5.2430e-02, 1.1357e-01, -1.8510e-01, | |
| # -5.3361e-02, -4.7402e-02], | |
| # [ 1.5888e+00, 8.1703e-01, 9.5593e-01, -8.2536e-02, 4.7360e-02, | |
| # -3.9056e-01, -6.0633e-01, -1.5541e-01, -4.0785e-01, -4.3322e-02, | |
| # 4.0495e-02, 1.0820e-01, -4.6933e-03, 1.0861e-01, -9.3379e-02, | |
| # 9.6168e-01, 9.5170e-03, 2.4247e-01, -9.9628e-02, 1.1271e-01, | |
| # -1.3622e-01, -9.8448e-01, 5.3791e-01, 5.5485e-01, -6.5830e-01, | |
| # -1.0166e-01, 2.1111e-01, 1.2765e-01, 1.6020e-01, -8.0440e-02, | |
| # 2.9217e-01, 6.0119e-03, -4.7595e-01, 1.2242e-01, 1.9002e-01, | |
| # 5.7588e-02, 2.3393e-01, 2.4151e-01, -1.7059e-01, -1.8763e-01, | |
| # 3.0400e-01, 5.1543e-01, 1.6263e-01, -5.2092e-03, -5.3681e-01, | |
| # -5.4848e-01, 1.4767e-01, 6.1067e-02, -8.5293e-02, 2.4911e-01, | |
| # -4.4561e-01, -2.9968e-01, -1.0991e-03, 4.3592e-01, -4.0780e-02, | |
| # -5.1197e-01, 5.0462e-02, 1.0212e-01, 1.5047e-01, 4.5822e-02, | |
| # 3.3164e-02, -2.3132e-01, -4.2680e-01, -7.8209e-02, 2.6201e-01, | |
| # 2.2518e-01, -4.2874e-01, 5.3289e-02, 1.1230e-01, -1.8014e-01, | |
| # -4.9768e-02, -3.7934e-02]], device='cuda:0') | |
| vertices, faces = smpl2mesh.convert_smpl_to_mesh(rot_motions, current_motions) | |
| if all_faces is None: | |
| all_faces = faces | |
| all_vertices.append(vertices) | |
| if torch.is_tensor(all_faces): | |
| all_faces = all_faces.cpu().numpy() | |
| # Save each sample to its own directory | |
| base_output_dir = './hanyu' | |
| for i, vertices in enumerate(all_vertices): | |
| save_mesh(vertices, all_faces, base_output_dir, output_idx=i) # Use sequential index i instead of sorted_idx[i] | |
| if __name__ == "__main__": | |
| # process_motion("./smpl_params.json", "./predictions/joints3d.npy", "cuda", [25,17,33,7,24]) | |
| # main() | |
| # smpl_to_mesh("./smpl_params.json", "./predictions/joints3d.npy", "cuda", [0]) | |
| process_motion("./smpl_params.json", "./predictions/joints3d.npy", "cuda", [17]) |