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)
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'
#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)