|
import numpy as np |
|
from scipy.io import loadmat |
|
|
|
original_BFM = loadmat("3DMM/01_MorphableModel.mat") |
|
sub_inds = np.load("3DMM/topology_info.npy", allow_pickle=True).item()["sub_inds"] |
|
|
|
shapePC = original_BFM["shapePC"] |
|
shapeEV = original_BFM["shapeEV"] |
|
shapeMU = original_BFM["shapeMU"] |
|
texPC = original_BFM["texPC"] |
|
texEV = original_BFM["texEV"] |
|
texMU = original_BFM["texMU"] |
|
|
|
b_shape = shapePC.reshape(-1, 199).transpose(1, 0).reshape(199, -1, 3) |
|
mu_shape = shapeMU.reshape(-1, 3) |
|
|
|
b_tex = texPC.reshape(-1, 199).transpose(1, 0).reshape(199, -1, 3) |
|
mu_tex = texMU.reshape(-1, 3) |
|
|
|
b_shape = b_shape[:, sub_inds, :].reshape(199, -1) |
|
mu_shape = mu_shape[sub_inds, :].reshape(-1) |
|
b_tex = b_tex[:, sub_inds, :].reshape(199, -1) |
|
mu_tex = mu_tex[sub_inds, :].reshape(-1) |
|
|
|
exp_info = np.load("3DMM/exp_info.npy", allow_pickle=True).item() |
|
np.save( |
|
"3DMM/3DMM_info.npy", |
|
{ |
|
"mu_shape": mu_shape, |
|
"b_shape": b_shape, |
|
"sig_shape": shapeEV.reshape(-1), |
|
"mu_exp": exp_info["mu_exp"], |
|
"b_exp": exp_info["base_exp"], |
|
"sig_exp": exp_info["sig_exp"], |
|
"mu_tex": mu_tex, |
|
"b_tex": b_tex, |
|
"sig_tex": texEV.reshape(-1), |
|
}, |
|
) |
|
|