Spaces:
Running
on
Zero
Running
on
Zero
import importlib | |
import itertools | |
import torch | |
__modules_all__ = { | |
'mesh': [ | |
'triangulate', | |
'compute_face_normal', | |
'compute_face_angles', | |
'compute_vertex_normal', | |
'compute_vertex_normal_weighted', | |
'remove_unreferenced_vertices', | |
'remove_corrupted_faces', | |
'merge_duplicate_vertices', | |
'subdivide_mesh_simple', | |
'compute_face_tbn', | |
'compute_vertex_tbn', | |
'laplacian', | |
'laplacian_smooth_mesh', | |
'taubin_smooth_mesh', | |
'laplacian_hc_smooth_mesh', | |
], | |
'nerf': [ | |
'get_rays', | |
'get_image_rays', | |
'get_mipnerf_cones', | |
'volume_rendering', | |
'bin_sample', | |
'importance_sample', | |
'nerf_render_rays', | |
'mipnerf_render_rays', | |
'nerf_render_view', | |
'mipnerf_render_view', | |
'InstantNGP', | |
], | |
'utils': [ | |
'sliding_window_1d', | |
'sliding_window_2d', | |
'sliding_window_nd', | |
'image_uv', | |
'image_pixel_center', | |
'image_mesh', | |
'chessboard', | |
'depth_edge', | |
'depth_aliasing', | |
'image_mesh_from_depth', | |
'point_to_normal', | |
'depth_to_normal', | |
'masked_min', | |
'masked_max', | |
'bounding_rect' | |
], | |
'transforms': [ | |
'perspective', | |
'perspective_from_fov', | |
'perspective_from_fov_xy', | |
'intrinsics_from_focal_center', | |
'intrinsics_from_fov', | |
'intrinsics_from_fov_xy', | |
'view_look_at', | |
'extrinsics_look_at', | |
'perspective_to_intrinsics', | |
'intrinsics_to_perspective', | |
'extrinsics_to_view', | |
'view_to_extrinsics', | |
'normalize_intrinsics', | |
'crop_intrinsics', | |
'pixel_to_uv', | |
'pixel_to_ndc', | |
'uv_to_pixel', | |
'project_depth', | |
'depth_buffer_to_linear', | |
'project_gl', | |
'project_cv', | |
'unproject_gl', | |
'unproject_cv', | |
'skew_symmetric', | |
'rotation_matrix_from_vectors', | |
'euler_axis_angle_rotation', | |
'euler_angles_to_matrix', | |
'matrix_to_euler_angles', | |
'matrix_to_quaternion', | |
'quaternion_to_matrix', | |
'matrix_to_axis_angle', | |
'axis_angle_to_matrix', | |
'axis_angle_to_quaternion', | |
'quaternion_to_axis_angle', | |
'slerp', | |
'interpolate_extrinsics', | |
'interpolate_view', | |
'extrinsics_to_essential', | |
'to4x4', | |
'rotation_matrix_2d', | |
'rotate_2d', | |
'translate_2d', | |
'scale_2d', | |
'apply_2d', | |
], | |
'rasterization': [ | |
'RastContext', | |
'rasterize_triangle_faces', | |
'warp_image_by_depth', | |
'warp_image_by_forward_flow', | |
], | |
} | |
__all__ = list(itertools.chain(*__modules_all__.values())) | |
def __getattr__(name): | |
try: | |
return globals()[name] | |
except KeyError: | |
pass | |
try: | |
module_name = next(m for m in __modules_all__ if name in __modules_all__[m]) | |
except StopIteration: | |
raise AttributeError(f"module '{__name__}' has no attribute '{name}'") | |
module = importlib.import_module(f'.{module_name}', __name__) | |
for key in __modules_all__[module_name]: | |
globals()[key] = getattr(module, key) | |
return globals()[name] | |
if __name__ == '__main__': | |
from .transforms import * | |
from .mesh import * | |
from .utils import * | |
from .nerf import * | |
from .rasterization import * |