示例#1
0
def render_video(mesh_dir, video_fn, overwrite=False):
    from psbody.mesh import Mesh, MeshViewer
    from os.path import join, exists, splitext
    from glob import glob
    import tempfile
    from subprocess import call
    from pickle import load
    import numpy as np
    from tqdm import tqdm

    if exists(video_fn):
        if overwrite:
            print("File {0} exists, removing it and remaking it".format(
                video_fn))
            call(['rm', '-rf', video_fn])
        else:
            print("File {0} exists, not re-rendering".format(video_fn))
            return

    files_seq = sorted(glob(join(mesh_dir, '*.obj')))

    if len(files_seq) == 0:
        print('No files to render in {}'.format(mesh_dir))
        return

    # Load the meshes
    print("Loading meshes from {}..".format(mesh_dir))
    meshes = []
    for fn in files_seq:
        meshes.append(Mesh(filename=fn))

    from shutil import rmtree
    from tempfile import mkdtemp
    tmp_folder = str(mkdtemp())
    if exists(tmp_folder):
        rmtree(tmp_folder)
    from os import mkdir
    mkdir(tmp_folder)

    mv = MeshViewer(window_width=1000, window_height=800)

    print('Rendering extracted meshes (tmp file, auto-removed later)..')
    for k, mesh in enumerate(tqdm(meshes)):
        mv.set_dynamic_meshes([mesh])
        mv.save_snapshot(join(tmp_folder, '{:0>6d}.png'.format(k)),
                         blocking=True)

    cmd = [
        'ffmpeg', '-i', '{0}/%06d.png'.format(tmp_folder), '-vcodec', 'h264',
        '-pix_fmt', 'yuv420p', '-r', '15', '-an', '-b:v', '5000k', video_fn
    ]
    call(cmd)
    rmtree(tmp_folder)
示例#2
0
    prediction_vertex_values = np.arange(n_vertices)

    minima = min(prediction_vertex_values)
    maxima = max(prediction_vertex_values)
    norm = matplotlib.colors.Normalize(vmin=minima, vmax=maxima, clip=True)
    mapper = cm.ScalarMappable(norm=norm, cmap=cm.viridis)

    mapper_list = [mapper.to_rgba(x)[0] for x in prediction_vertex_values]

    mesh.vc = mapper_list
    mv = MeshViewer()
    mv.dynamic_meshes = [mesh]
    time.sleep(100)
    mv.save_snapshot(
        '/home/eman/Documents/PhD/pytorch_geometric-master/examples/reference-mesh.png'
    )

####################################################################

if args.case == 'MPI':
    data_path = '/home/eman/Documents/PhD/body-modeling-master_initial/smpl-viewer/Data-survey-smpl/AllData/'
    dirs = os.listdir(data_path)
    dirs.sort()

    print(dirs)

    meshes = []

    for data_size in range(len(dirs)):
        prediction_file = dirs[data_size] + '.json'
示例#3
0
    #i = 24
    originalMeshFile = Mesh(filename=path + objFiles[i])
    originalMeshFile.texture_filepath = path + bmpFiles[i]

    leftVerts = originalMeshFile
    rightVerts = originalMeshFile

    #print vars(leftVerts)

    name = (objFiles[i])[:-4]

    mv = MeshViewer()

    mv.dynamic_meshes = [originalMeshFile]
    time.sleep(0.3)
    mv.save_snapshot(saving_path + name + '_frontal.png')
    #time.sleep(0.1)
    #mv.

    #Left view
    newleftVerts = (np.dot(rotation_matrix(axis, theta_l),
                           (leftVerts.v).transpose()))
    leftVerts.v = newleftVerts.transpose()
    #mv_l = MeshViewer()
    mv.dynamic_meshes = [leftVerts]
    time.sleep(0.3)
    mv.save_snapshot(saving_path + name + '_left.png')
    #write_mesh('left.obj',vertices=leftVerts.v, faces=leftVerts.f, normals=None, texcoords=None, overwrite=True)

    #time.sleep(0.1)