Exemple #1
0
    L = sp.csr_matrix((W, (I, J)), shape=(n, n))
    L = L - sp.spdiags(L * np.ones(n), 0, n, n)

    return L


if __name__ == "__main__":
    # from psbody.mesh import Mesh
    # m0 = Mesh(filename='assets/sphube.obj')
    # m1 = Mesh(filename='assets/sphube.obj')
    # m1.v *= np.array([0.5, 1., 2.])

    from utils.smpl_paths import SmplPaths
    smp = SmplPaths()
    m0 = smp.get_mesh(smp.get_smpl())

    L0 = cpu_laplacian(m0.v.astype(np.float32), m0.f)
    lap0 = L0.dot(m0.v.astype(np.float32))

    tf_v0 = tf.expand_dims(m0.v.astype(np.float32), 0)
    tf_v = tf.tile(tf_v0, (5, 1, 1))

    tf_L = batch_laplacian(tf_v, m0.f.astype(np.int32))
    tf_L0 = batch_laplacian(tf_v0, m0.f.astype(np.int32))

    tf_lap = sparse_dense_matmul_batch(tf_L, tf_v)
    # tf_diff = tf.reduce_max(tf.abs(f_L[0] - tf_L[-1]))

    with tf.Session():
        tf_L_e = tf.sparse_tensor_to_dense(tf_L).eval()
Exemple #2
0
            else:
                verts = self.smooth_cotlap(verts, smoothness)
        return verts


if __name__ == "__main__":
    IS_SMPL = True
    fpath = "/BS/cpatel/work/data/learn_anim/mixture_exp31/000_0/smooth_TShirtNoCoat/0990/pred_0.ply"

    if not IS_SMPL:
        ms = Mesh(filename=fpath)
    else:
        from utils.smpl_paths import SmplPaths

        dp = SmplPaths(gender='female')
        smpl = dp.get_smpl()
        ms = Mesh(v=smpl.r, f=smpl.f)

    smoothing = DiffusionSmoothing(ms.v, ms.f)

    verts_smooth = ms.v.copy()
    for i in range(20):
        verts_smooth = smoothing.smooth(verts_smooth, smoothness=0.05)
    ms_smooth = Mesh(v=verts_smooth, f=ms.f)

    # from psbody.mesh import MeshViewers
    # mvs = MeshViewers((1,3))
    # mvs[0][0].set_static_meshes([ms])
    # mvs[0][1].set_static_meshes([ms_smooth])
    # mvs[0][2].set_static_meshes([ms_smooth2])
    # import ipdb