|
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) |
|
|
|
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') |
|
|
|
parser.add_argument('--mode', type=str, help='mode: static or dynamic') |
|
|
|
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) |