コード例 #1
0
def visualize_garment(garment_path, with_tex=True):
    # Load SMPL body for the garment
    path = split(garment_path)[0]
    garment_org_body = load_smpl_from_file(join(path, 'registration.pkl'))
    garment_org_body = Mesh(garment_org_body.v, garment_org_body.f)

    # Load unposed garment
    garment_unposed = Mesh(filename=gar_dict[garment_type][index])
    garment_unposed.set_texture_image(join(path, 'multi_tex.jpg'))

    # Pose garments
    dat = pkl.load(open(join(path, 'registration.pkl')))
    dat['gender'] = 'neutral'
    garment_posed = pose_garment(garment_unposed, vert_indices[garment_type],
                                 dat)
    garment_posed = remove_interpenetration_fast(garment_posed,
                                                 garment_org_body)

    if with_tex:
        garment_posed.vt = garment_unposed.vt
        garment_posed.ft = garment_unposed.ft
        garment_posed.set_texture_image(join(path, 'multi_tex.jpg'))

    mvs = MeshViewers((1, 3), keepalive=True)
    mvs[0][2].set_background_color(np.array([1, 1, 1]))
    mvs[0][1].set_background_color(np.array([1, 1, 1]))
    mvs[0][0].set_background_color(np.array([1, 1, 1]))
    mvs[0][1].set_static_meshes([garment_org_body])
    mvs[0][2].set_static_meshes([garment_org_body, garment_posed])
    mvs[0][0].set_static_meshes([garment_unposed])

    return
コード例 #2
0
def dress(smpl_tgt, body_src, garment, vert_inds, garment_tex=None):
    '''
    :param smpl: SMPL in the output pose
    :param garment: garment mesh in t-pose
    :param body_src: garment body in t-pose
    :param garment_tex: texture file
    :param vert_inds: vertex association b/w smpl and garment
    :return:
    To use texture files, garments must have vt, ft
    '''
    tgt_params = {
        'pose': np.array(smpl_tgt.pose.r),
        'trans': np.array(smpl_tgt.trans.r),
        'betas': np.array(smpl_tgt.betas.r),
        'gender': 'neutral'
    }
    smpl_tgt.pose[:] = 0
    body_tgt = Mesh(smpl_tgt.r, smpl_tgt.f)

    ## Re-target
    ret = retarget(garment, body_src, body_tgt)

    ## Re-pose
    ret_posed = pose_garment(ret, vert_inds, tgt_params)
    body_tgt_posed = pose_garment(body_tgt, list(range(len(body_tgt.v))),
                                  tgt_params)

    ## Remove intersections
    ret_posed_interp = remove_interpenetration_fast(ret_posed, body_tgt_posed)
    ret_posed_interp.vt = garment.vt
    ret_posed_interp.ft = garment.ft
    ret_posed_interp.set_texture_image(garment_tex)

    return ret_posed_interp
コード例 #3
0
    garment_unposed_upper = Mesh(
        filename='./Multi-Garment_dataset/125611499279708/TShirtNoCoat.obj')
    garment_unposed_upper.set_texture_image(join(path_upper, 'multi_tex.jpg'))

    garment_unposed_lower = Mesh(
        filename='./Multi-Garment_dataset/125611499279708/ShortPants.obj')
    garment_unposed_lower.set_texture_image(join(path_lower, 'multi_tex.jpg'))

    # Pose garments
    # upper
    dat_upper = pkl.load(open(join(path_upper, 'registration.pkl'), "rb"),
                         encoding="latin1")
    dat_upper['gender'] = 'neutral'
    garment_posed_upper = pose_garment(garment_unposed_upper,
                                       vert_indices[type_upper], dat_upper)
    garment_posed_upper = remove_interpenetration_fast(garment_posed_upper,
                                                       upper_garment_org_body)
    # loading textures on posed garments
    garment_posed_upper.vt = garment_unposed_upper.vt
    garment_posed_upper.ft = garment_unposed_upper.ft
    garment_posed_upper.set_texture_image(join(path_upper, 'multi_tex.jpg'))

    # lower
    dat_lower = pkl.load(open(join(path_lower, 'registration.pkl'), "rb"),
                         encoding="latin1")
    dat_lower['gender'] = 'neutral'
    garment_posed_lower = pose_garment(garment_unposed_lower,
                                       vert_indices[type_lower], dat_lower)
    garment_posed_lower = remove_interpenetration_fast(garment_posed_lower,
                                                       lower_garment_org_body)
    # loading textures on posed garments
    garment_posed_lower.vt = garment_unposed_lower.vt