Spaces:
mucusz
/
Runtime error

File size: 1,492 Bytes
da48dbe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import numpy as np
import trimesh
import torch
import os.path as osp
import lib.smplx as smplx
from lib.dataset.mesh_util import SMPLX

smplx_container = SMPLX()

smpl_npy = "./results/github/econ/obj/304e9c4798a8c3967de7c74c24ef2e38_smpl_00.npy"
smplx_param = np.load(smpl_npy, allow_pickle=True).item()

for key in smplx_param.keys():
    smplx_param[key] = smplx_param[key].cpu().view(1, -1)
    # print(key, smplx_param[key].device, smplx_param[key].shape)

smpl_model = smplx.create(
    smplx_container.model_dir,
    model_type="smplx",
    gender="neutral",
    age="adult",
    use_face_contour=False,
    use_pca=False,
    num_betas=200,
    num_expression_coeffs=50,
    ext='pkl')

smpl_out = smpl_model(
    body_pose=smplx_param["body_pose"],
    global_orient=smplx_param["global_orient"],
    # transl=smplx_param["transl"],
    betas=smplx_param["betas"],
    expression=smplx_param["expression"],
    jaw_pose=smplx_param["jaw_pose"],
    left_hand_pose=smplx_param["left_hand_pose"],
    right_hand_pose=smplx_param["right_hand_pose"],
    return_verts=True,
    return_joint_transformation=True,
    return_vertex_transformation=True)

smpl_verts = smpl_out.vertices.detach()[0]
inv_mat = torch.inverse(smpl_out.vertex_transformation.detach()[0])
homo_coord = torch.ones_like(smpl_verts)[..., :1]
smpl_verts = inv_mat @ torch.cat([smpl_verts, homo_coord], dim=1).unsqueeze(-1)
smpl_verts = smpl_verts[:, :3, 0].cpu()

trimesh.Trimesh(smpl_verts, smpl_model.faces).show()