progress save

This commit is contained in:
2023-02-07 22:45:02 +00:00
parent 63df3b6b9b
commit ba60000c9f
3 changed files with 529 additions and 7 deletions
+40 -3
View File
@@ -233,22 +233,46 @@ def read_posed_garment_frame(folder, id, garment, frame, map, mask=None, shape=N
verts[mask, :] = verts[mask, :] - np.squeeze(shape_offsets)[mask, :]
if deorient:
R = scipy.spatial.transform.Rotation.from_euler(pose[:3])
R = scipy.spatial.transform.Rotation.from_euler(pose[:3]).inv()
# R = scipy.spatial.transform.Rotation.from_euler([0,0,-zrot])
verts = R.apply(verts)
return verts
# can i cache map?
def read_posed_garment(folder, id, garment, map=None, mask=None, shape=None, shapedirs=None, poses=None, unshape=False, deorient=False):
pc16_path = os.path.join(folder, id, garment + '.pc16')
verts = readPC2(pc16_path, True)
if map is None:
map = sio.loadmat(os.path.join(folder, id, garment + '_map.mat'))['map'].reshape((-1))
verts = verts[:, map, :]
if unshape:
shape_offsets = np.tensordot(shape, shapedirs, axes=[[1], [2]])
verts[:, mask, :] = verts[:, mask, :] - np.squeeze(shape_offsets)[None, mask, :]
if deorient:
for i in range(verts.shape[0]):
R = scipy.spatial.transform.Rotation.from_euler(poses[:3, i]).inv()
# R = scipy.spatial.transform.Rotation.from_euler([0,0,-zrot])
verts[i] = R.apply(verts[i])
return verts
def read_garment_mask(folder, id, garment):
raw_mask = sio.loadmat(os.path.join(folder, id, garment + '_mask.mat'))['mask'].reshape((-1))
mask = raw_mask > 0
return mask
def read_garment_template(folder, id, garment, mask):
def read_garment_template(folder, id, garment, mask=None):
offsets_static = sio.loadmat(os.path.join(folder, id, garment + '_offsets_static.mat'))['label'][:,:3]
body_static = sio.loadmat(os.path.join(folder, id, 'info_body.mat'))['B']
if mask is None:
mask = read_garment_mask(folder, id, garment)
verts_static = (body_static + offsets_static) * mask[:, np.newaxis]
return verts_static
@@ -258,12 +282,25 @@ def read_posed_body_frame(folder, id, frame, pose=None, deorient=False):
verts = readPC2Frame(pc16_path, frame, True)
if deorient:
R = scipy.spatial.transform.Rotation.from_euler(pose[:3])
R = scipy.spatial.transform.Rotation.from_euler(pose[:3]).inv()
# R = scipy.spatial.transform.Rotation.from_euler([0,0,-zrot])
verts = R.apply(verts)
return verts
def read_posed_body(folder, id, poses=None, deorient=False):
pc16_path = os.path.join(folder, id, 'Body_posed.pc16')
verts = readPC2(pc16_path, True)
if deorient:
for i in range(verts.shape[0]):
R = scipy.spatial.transform.Rotation.from_euler(poses[:3, i]).inv()
# R = scipy.spatial.transform.Rotation.from_euler([0,0,-zrot])
verts[i] = R.apply(verts[i])
return verts
# import os
# import sys
# import numpy as np