leobcc's picture
vid2avatar baseline
6325697
raw
history blame
1.88 kB
import trimesh
from aitviewer.viewer import Viewer
from aitviewer.renderables.meshes import Meshes, VariableTopologyMeshes
import glob
import argparse
def vis_dynamic(args):
vertices = []
faces = []
vertex_normals = []
deformed_mesh_paths = sorted(glob.glob(f'{args.path}/*_deformed.ply'))
for deformed_mesh_path in deformed_mesh_paths:
mesh = trimesh.load(deformed_mesh_path, process=False)
# center the human
mesh.vertices = mesh.vertices - mesh.vertices.mean(axis=0)
vertices.append(mesh.vertices)
faces.append(mesh.faces)
vertex_normals.append(mesh.vertex_normals)
meshes = VariableTopologyMeshes(vertices,
faces,
vertex_normals,
preload=True
)
meshes.norm_coloring = True
meshes.flat_shading = True
viewer = Viewer()
viewer.scene.add(meshes)
viewer.scene.origin.enabled = False
viewer.scene.floor.enabled = True
viewer.run()
def vis_static(args):
mesh = trimesh.load(args.path, process=False)
mesh = Meshes(mesh.vertices, mesh.faces, mesh.vertex_normals, name='mesh', flat_shading=True)
mesh.norm_coloring = True
viewer = Viewer()
viewer.scene.add(mesh)
viewer.scene.origin.enabled = False
viewer.scene.floor.enabled = True
viewer.run()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='3D Visualization')
# static canonical mesh or dynamic sequence
parser.add_argument('--mode', type=str, help='mode: static or dynamic')
# mesh/meshes source
parser.add_argument('--path', type=str, help='path to the file')
args = parser.parse_args()
if args.mode == 'static':
vis_static(args)
elif args.mode == 'dynamic':
vis_dynamic(args)