working weight learning

This commit is contained in:
2023-02-15 11:19:14 +00:00
parent 8fbd075f92
commit 61a609c8f7
7 changed files with 96 additions and 39 deletions
+3 -3
View File
@@ -406,7 +406,8 @@ class SMPL:
return T_out, J_out
def run_garment_with_weights(self, R, betas, v_cloth, weights, J=None):
def run_garment_with_weights(self, pose, betas, v_cloth, weights, J=None):
R = self.run_rodrigues(pose)
if J is None:
J = self.get_joints_template(betas)
@@ -430,13 +431,12 @@ class SMPL:
J = tf.gather(J, tf.constant([0, 1, 2], tf.int32), axis=1)
T = tf.tensordot(weights, results, axes=((1), (0)))
rest_shape_h = tf.concat((v_cloth, tf.ones((v_cloth.get_shape().as_list()[0], 1), dtype=tf.float32)), axis=1)
rest_shape_h = tf.concat((v_cloth, tf.ones((v_cloth.shape[0], 1), dtype=tf.float32)), axis=1)
v = tf.matmul(T, tf.reshape(rest_shape_h, (-1, 4, 1)))
v = tf.reshape(v, (-1, 4))[:, :3]
return v, tf.squeeze(J)
# gender = tf.cast(tf.greater_equal(betas[:, 10] , 0), tf.int32)
T_out, J_out = tf.map_fn(single_run, (R, J, v_cloth, weights), (tf.float32, tf.float32))
J0 = tf.reshape(J_out[:,0,:], (-1, 1, 3))