# Auto-generated implementation redirecting to numpy/torch implementations import sys from typing import TYPE_CHECKING import utils3d from .._helpers import suppress_traceback __all__ = ["triangulate", "compute_face_normal", "compute_face_angle", "compute_vertex_normal", "compute_vertex_normal_weighted", "remove_corrupted_faces", "merge_duplicate_vertices", "remove_unreferenced_vertices", "subdivide_mesh_simple", "mesh_relations", "flatten_mesh_indices", "calc_quad_candidates", "calc_quad_distortion", "calc_quad_direction", "calc_quad_smoothness", "sovle_quad", "sovle_quad_qp", "tri_to_quad", "sliding_window_1d", "sliding_window_nd", "sliding_window_2d", "max_pool_1d", "max_pool_2d", "max_pool_nd", "depth_edge", "normals_edge", "depth_aliasing", "interpolate", "image_scrcoord", "image_uv", "image_pixel_center", "image_pixel", "image_mesh", "image_mesh_from_depth", "depth_to_normals", "points_to_normals", "chessboard", "cube", "icosahedron", "square", "camera_frustum", "perspective", "perspective_from_fov", "perspective_from_fov_xy", "intrinsics_from_focal_center", "intrinsics_from_fov", "fov_to_focal", "focal_to_fov", "intrinsics_to_fov", "view_look_at", "extrinsics_look_at", "perspective_to_intrinsics", "perspective_to_near_far", "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", "unproject_cv", "unproject_gl", "project_cv", "project_gl", "quaternion_to_matrix", "axis_angle_to_matrix", "matrix_to_quaternion", "extrinsics_to_essential", "euler_axis_angle_rotation", "euler_angles_to_matrix", "skew_symmetric", "rotation_matrix_from_vectors", "ray_intersection", "se3_matrix", "slerp_quaternion", "slerp_vector", "lerp", "lerp_se3_matrix", "piecewise_lerp", "piecewise_lerp_se3_matrix", "apply_transform", "linear_spline_interpolate", "RastContext", "rasterize_triangle_faces", "rasterize_edges", "texture", "warp_image_by_depth", "test_rasterization", "compute_face_angles", "compute_face_tbn", "compute_vertex_tbn", "laplacian", "laplacian_smooth_mesh", "taubin_smooth_mesh", "laplacian_hc_smooth_mesh", "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", "point_to_normal", "depth_to_normal", "masked_min", "masked_max", "bounding_rect", "intrinsics_from_fov_xy", "matrix_to_euler_angles", "matrix_to_axis_angle", "axis_angle_to_quaternion", "quaternion_to_axis_angle", "slerp", "interpolate_extrinsics", "interpolate_view", "to4x4", "rotation_matrix_2d", "rotate_2d", "translate_2d", "scale_2d", "apply_2d", "warp_image_by_forward_flow"] def _contains_tensor(obj): if isinstance(obj, (list, tuple)): return any(_contains_tensor(item) for item in obj) elif isinstance(obj, dict): return any(_contains_tensor(value) for value in obj.values()) else: import torch return isinstance(obj, torch.Tensor) @suppress_traceback def _call_based_on_args(fname, args, kwargs): if 'torch' in sys.modules: if any(_contains_tensor(arg) for arg in args) or any(_contains_tensor(v) for v in kwargs.values()): fn = getattr(utils3d.torch, fname, None) if fn is None: raise NotImplementedError(f"Function {fname} has no torch implementation.") return fn(*args, **kwargs) fn = getattr(utils3d.numpy, fname, None) if fn is None: raise NotImplementedError(f"Function {fname} has no numpy implementation.") return fn(*args, **kwargs) @suppress_traceback def triangulate(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.triangulate, utils3d.torch.triangulate return _call_based_on_args('triangulate', args, kwargs) @suppress_traceback def compute_face_normal(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.compute_face_normal, utils3d.torch.compute_face_normal return _call_based_on_args('compute_face_normal', args, kwargs) @suppress_traceback def compute_face_angle(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.compute_face_angle, None return _call_based_on_args('compute_face_angle', args, kwargs) @suppress_traceback def compute_vertex_normal(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.compute_vertex_normal, utils3d.torch.compute_vertex_normal return _call_based_on_args('compute_vertex_normal', args, kwargs) @suppress_traceback def compute_vertex_normal_weighted(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.compute_vertex_normal_weighted, utils3d.torch.compute_vertex_normal_weighted return _call_based_on_args('compute_vertex_normal_weighted', args, kwargs) @suppress_traceback def remove_corrupted_faces(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.remove_corrupted_faces, utils3d.torch.remove_corrupted_faces return _call_based_on_args('remove_corrupted_faces', args, kwargs) @suppress_traceback def merge_duplicate_vertices(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.merge_duplicate_vertices, utils3d.torch.merge_duplicate_vertices return _call_based_on_args('merge_duplicate_vertices', args, kwargs) @suppress_traceback def remove_unreferenced_vertices(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.remove_unreferenced_vertices, utils3d.torch.remove_unreferenced_vertices return _call_based_on_args('remove_unreferenced_vertices', args, kwargs) @suppress_traceback def subdivide_mesh_simple(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.subdivide_mesh_simple, utils3d.torch.subdivide_mesh_simple return _call_based_on_args('subdivide_mesh_simple', args, kwargs) @suppress_traceback def mesh_relations(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.mesh_relations, None return _call_based_on_args('mesh_relations', args, kwargs) @suppress_traceback def flatten_mesh_indices(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.flatten_mesh_indices, None return _call_based_on_args('flatten_mesh_indices', args, kwargs) @suppress_traceback def calc_quad_candidates(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.calc_quad_candidates, None return _call_based_on_args('calc_quad_candidates', args, kwargs) @suppress_traceback def calc_quad_distortion(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.calc_quad_distortion, None return _call_based_on_args('calc_quad_distortion', args, kwargs) @suppress_traceback def calc_quad_direction(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.calc_quad_direction, None return _call_based_on_args('calc_quad_direction', args, kwargs) @suppress_traceback def calc_quad_smoothness(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.calc_quad_smoothness, None return _call_based_on_args('calc_quad_smoothness', args, kwargs) @suppress_traceback def sovle_quad(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.sovle_quad, None return _call_based_on_args('sovle_quad', args, kwargs) @suppress_traceback def sovle_quad_qp(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.sovle_quad_qp, None return _call_based_on_args('sovle_quad_qp', args, kwargs) @suppress_traceback def tri_to_quad(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.tri_to_quad, None return _call_based_on_args('tri_to_quad', args, kwargs) @suppress_traceback def sliding_window_1d(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.sliding_window_1d, utils3d.torch.sliding_window_1d return _call_based_on_args('sliding_window_1d', args, kwargs) @suppress_traceback def sliding_window_nd(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.sliding_window_nd, utils3d.torch.sliding_window_nd return _call_based_on_args('sliding_window_nd', args, kwargs) @suppress_traceback def sliding_window_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.sliding_window_2d, utils3d.torch.sliding_window_2d return _call_based_on_args('sliding_window_2d', args, kwargs) @suppress_traceback def max_pool_1d(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.max_pool_1d, None return _call_based_on_args('max_pool_1d', args, kwargs) @suppress_traceback def max_pool_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.max_pool_2d, None return _call_based_on_args('max_pool_2d', args, kwargs) @suppress_traceback def max_pool_nd(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.max_pool_nd, None return _call_based_on_args('max_pool_nd', args, kwargs) @suppress_traceback def depth_edge(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.depth_edge, utils3d.torch.depth_edge return _call_based_on_args('depth_edge', args, kwargs) @suppress_traceback def normals_edge(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.normals_edge, None return _call_based_on_args('normals_edge', args, kwargs) @suppress_traceback def depth_aliasing(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.depth_aliasing, utils3d.torch.depth_aliasing return _call_based_on_args('depth_aliasing', args, kwargs) @suppress_traceback def interpolate(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.interpolate, None return _call_based_on_args('interpolate', args, kwargs) @suppress_traceback def image_scrcoord(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.image_scrcoord, None return _call_based_on_args('image_scrcoord', args, kwargs) @suppress_traceback def image_uv(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.image_uv, utils3d.torch.image_uv return _call_based_on_args('image_uv', args, kwargs) @suppress_traceback def image_pixel_center(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.image_pixel_center, utils3d.torch.image_pixel_center return _call_based_on_args('image_pixel_center', args, kwargs) @suppress_traceback def image_pixel(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.image_pixel, None return _call_based_on_args('image_pixel', args, kwargs) @suppress_traceback def image_mesh(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.image_mesh, utils3d.torch.image_mesh return _call_based_on_args('image_mesh', args, kwargs) @suppress_traceback def image_mesh_from_depth(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.image_mesh_from_depth, utils3d.torch.image_mesh_from_depth return _call_based_on_args('image_mesh_from_depth', args, kwargs) @suppress_traceback def depth_to_normals(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.depth_to_normals, None return _call_based_on_args('depth_to_normals', args, kwargs) @suppress_traceback def points_to_normals(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.points_to_normals, None return _call_based_on_args('points_to_normals', args, kwargs) @suppress_traceback def chessboard(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.chessboard, utils3d.torch.chessboard return _call_based_on_args('chessboard', args, kwargs) @suppress_traceback def cube(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.cube, None return _call_based_on_args('cube', args, kwargs) @suppress_traceback def icosahedron(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.icosahedron, None return _call_based_on_args('icosahedron', args, kwargs) @suppress_traceback def square(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.square, None return _call_based_on_args('square', args, kwargs) @suppress_traceback def camera_frustum(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.camera_frustum, None return _call_based_on_args('camera_frustum', args, kwargs) @suppress_traceback def perspective(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.perspective, utils3d.torch.perspective return _call_based_on_args('perspective', args, kwargs) @suppress_traceback def perspective_from_fov(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.perspective_from_fov, utils3d.torch.perspective_from_fov return _call_based_on_args('perspective_from_fov', args, kwargs) @suppress_traceback def perspective_from_fov_xy(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.perspective_from_fov_xy, utils3d.torch.perspective_from_fov_xy return _call_based_on_args('perspective_from_fov_xy', args, kwargs) @suppress_traceback def intrinsics_from_focal_center(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.intrinsics_from_focal_center, utils3d.torch.intrinsics_from_focal_center return _call_based_on_args('intrinsics_from_focal_center', args, kwargs) @suppress_traceback def intrinsics_from_fov(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.intrinsics_from_fov, utils3d.torch.intrinsics_from_fov return _call_based_on_args('intrinsics_from_fov', args, kwargs) @suppress_traceback def fov_to_focal(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.fov_to_focal, None return _call_based_on_args('fov_to_focal', args, kwargs) @suppress_traceback def focal_to_fov(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.focal_to_fov, None return _call_based_on_args('focal_to_fov', args, kwargs) @suppress_traceback def intrinsics_to_fov(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.intrinsics_to_fov, None return _call_based_on_args('intrinsics_to_fov', args, kwargs) @suppress_traceback def view_look_at(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.view_look_at, utils3d.torch.view_look_at return _call_based_on_args('view_look_at', args, kwargs) @suppress_traceback def extrinsics_look_at(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.extrinsics_look_at, utils3d.torch.extrinsics_look_at return _call_based_on_args('extrinsics_look_at', args, kwargs) @suppress_traceback def perspective_to_intrinsics(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.perspective_to_intrinsics, utils3d.torch.perspective_to_intrinsics return _call_based_on_args('perspective_to_intrinsics', args, kwargs) @suppress_traceback def perspective_to_near_far(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.perspective_to_near_far, None return _call_based_on_args('perspective_to_near_far', args, kwargs) @suppress_traceback def intrinsics_to_perspective(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.intrinsics_to_perspective, utils3d.torch.intrinsics_to_perspective return _call_based_on_args('intrinsics_to_perspective', args, kwargs) @suppress_traceback def extrinsics_to_view(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.extrinsics_to_view, utils3d.torch.extrinsics_to_view return _call_based_on_args('extrinsics_to_view', args, kwargs) @suppress_traceback def view_to_extrinsics(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.view_to_extrinsics, utils3d.torch.view_to_extrinsics return _call_based_on_args('view_to_extrinsics', args, kwargs) @suppress_traceback def normalize_intrinsics(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.normalize_intrinsics, utils3d.torch.normalize_intrinsics return _call_based_on_args('normalize_intrinsics', args, kwargs) @suppress_traceback def crop_intrinsics(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.crop_intrinsics, utils3d.torch.crop_intrinsics return _call_based_on_args('crop_intrinsics', args, kwargs) @suppress_traceback def pixel_to_uv(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.pixel_to_uv, utils3d.torch.pixel_to_uv return _call_based_on_args('pixel_to_uv', args, kwargs) @suppress_traceback def pixel_to_ndc(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.pixel_to_ndc, utils3d.torch.pixel_to_ndc return _call_based_on_args('pixel_to_ndc', args, kwargs) @suppress_traceback def uv_to_pixel(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.uv_to_pixel, utils3d.torch.uv_to_pixel return _call_based_on_args('uv_to_pixel', args, kwargs) @suppress_traceback def project_depth(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.project_depth, utils3d.torch.project_depth return _call_based_on_args('project_depth', args, kwargs) @suppress_traceback def depth_buffer_to_linear(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.depth_buffer_to_linear, utils3d.torch.depth_buffer_to_linear return _call_based_on_args('depth_buffer_to_linear', args, kwargs) @suppress_traceback def unproject_cv(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.unproject_cv, utils3d.torch.unproject_cv return _call_based_on_args('unproject_cv', args, kwargs) @suppress_traceback def unproject_gl(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.unproject_gl, utils3d.torch.unproject_gl return _call_based_on_args('unproject_gl', args, kwargs) @suppress_traceback def project_cv(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.project_cv, utils3d.torch.project_cv return _call_based_on_args('project_cv', args, kwargs) @suppress_traceback def project_gl(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.project_gl, utils3d.torch.project_gl return _call_based_on_args('project_gl', args, kwargs) @suppress_traceback def quaternion_to_matrix(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.quaternion_to_matrix, utils3d.torch.quaternion_to_matrix return _call_based_on_args('quaternion_to_matrix', args, kwargs) @suppress_traceback def axis_angle_to_matrix(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.axis_angle_to_matrix, utils3d.torch.axis_angle_to_matrix return _call_based_on_args('axis_angle_to_matrix', args, kwargs) @suppress_traceback def matrix_to_quaternion(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.matrix_to_quaternion, utils3d.torch.matrix_to_quaternion return _call_based_on_args('matrix_to_quaternion', args, kwargs) @suppress_traceback def extrinsics_to_essential(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.extrinsics_to_essential, utils3d.torch.extrinsics_to_essential return _call_based_on_args('extrinsics_to_essential', args, kwargs) @suppress_traceback def euler_axis_angle_rotation(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.euler_axis_angle_rotation, utils3d.torch.euler_axis_angle_rotation return _call_based_on_args('euler_axis_angle_rotation', args, kwargs) @suppress_traceback def euler_angles_to_matrix(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.euler_angles_to_matrix, utils3d.torch.euler_angles_to_matrix return _call_based_on_args('euler_angles_to_matrix', args, kwargs) @suppress_traceback def skew_symmetric(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.skew_symmetric, utils3d.torch.skew_symmetric return _call_based_on_args('skew_symmetric', args, kwargs) @suppress_traceback def rotation_matrix_from_vectors(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.rotation_matrix_from_vectors, utils3d.torch.rotation_matrix_from_vectors return _call_based_on_args('rotation_matrix_from_vectors', args, kwargs) @suppress_traceback def ray_intersection(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.ray_intersection, None return _call_based_on_args('ray_intersection', args, kwargs) @suppress_traceback def se3_matrix(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.se3_matrix, None return _call_based_on_args('se3_matrix', args, kwargs) @suppress_traceback def slerp_quaternion(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.slerp_quaternion, None return _call_based_on_args('slerp_quaternion', args, kwargs) @suppress_traceback def slerp_vector(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.slerp_vector, None return _call_based_on_args('slerp_vector', args, kwargs) @suppress_traceback def lerp(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.lerp, None return _call_based_on_args('lerp', args, kwargs) @suppress_traceback def lerp_se3_matrix(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.lerp_se3_matrix, None return _call_based_on_args('lerp_se3_matrix', args, kwargs) @suppress_traceback def piecewise_lerp(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.piecewise_lerp, None return _call_based_on_args('piecewise_lerp', args, kwargs) @suppress_traceback def piecewise_lerp_se3_matrix(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.piecewise_lerp_se3_matrix, None return _call_based_on_args('piecewise_lerp_se3_matrix', args, kwargs) @suppress_traceback def apply_transform(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.apply_transform, None return _call_based_on_args('apply_transform', args, kwargs) @suppress_traceback def linear_spline_interpolate(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.linear_spline_interpolate, None return _call_based_on_args('linear_spline_interpolate', args, kwargs) @suppress_traceback def RastContext(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.RastContext, utils3d.torch.RastContext return _call_based_on_args('RastContext', args, kwargs) @suppress_traceback def rasterize_triangle_faces(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.rasterize_triangle_faces, utils3d.torch.rasterize_triangle_faces return _call_based_on_args('rasterize_triangle_faces', args, kwargs) @suppress_traceback def rasterize_edges(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.rasterize_edges, None return _call_based_on_args('rasterize_edges', args, kwargs) @suppress_traceback def texture(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.texture, None return _call_based_on_args('texture', args, kwargs) @suppress_traceback def warp_image_by_depth(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.warp_image_by_depth, utils3d.torch.warp_image_by_depth return _call_based_on_args('warp_image_by_depth', args, kwargs) @suppress_traceback def test_rasterization(*args, **kwargs): if TYPE_CHECKING: # redirected to: utils3d.numpy.test_rasterization, None return _call_based_on_args('test_rasterization', args, kwargs) @suppress_traceback def compute_face_angles(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.compute_face_angles return _call_based_on_args('compute_face_angles', args, kwargs) @suppress_traceback def compute_face_tbn(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.compute_face_tbn return _call_based_on_args('compute_face_tbn', args, kwargs) @suppress_traceback def compute_vertex_tbn(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.compute_vertex_tbn return _call_based_on_args('compute_vertex_tbn', args, kwargs) @suppress_traceback def laplacian(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.laplacian return _call_based_on_args('laplacian', args, kwargs) @suppress_traceback def laplacian_smooth_mesh(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.laplacian_smooth_mesh return _call_based_on_args('laplacian_smooth_mesh', args, kwargs) @suppress_traceback def taubin_smooth_mesh(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.taubin_smooth_mesh return _call_based_on_args('taubin_smooth_mesh', args, kwargs) @suppress_traceback def laplacian_hc_smooth_mesh(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.laplacian_hc_smooth_mesh return _call_based_on_args('laplacian_hc_smooth_mesh', args, kwargs) @suppress_traceback def get_rays(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.get_rays return _call_based_on_args('get_rays', args, kwargs) @suppress_traceback def get_image_rays(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.get_image_rays return _call_based_on_args('get_image_rays', args, kwargs) @suppress_traceback def get_mipnerf_cones(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.get_mipnerf_cones return _call_based_on_args('get_mipnerf_cones', args, kwargs) @suppress_traceback def volume_rendering(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.volume_rendering return _call_based_on_args('volume_rendering', args, kwargs) @suppress_traceback def bin_sample(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.bin_sample return _call_based_on_args('bin_sample', args, kwargs) @suppress_traceback def importance_sample(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.importance_sample return _call_based_on_args('importance_sample', args, kwargs) @suppress_traceback def nerf_render_rays(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.nerf_render_rays return _call_based_on_args('nerf_render_rays', args, kwargs) @suppress_traceback def mipnerf_render_rays(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.mipnerf_render_rays return _call_based_on_args('mipnerf_render_rays', args, kwargs) @suppress_traceback def nerf_render_view(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.nerf_render_view return _call_based_on_args('nerf_render_view', args, kwargs) @suppress_traceback def mipnerf_render_view(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.mipnerf_render_view return _call_based_on_args('mipnerf_render_view', args, kwargs) @suppress_traceback def InstantNGP(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.InstantNGP return _call_based_on_args('InstantNGP', args, kwargs) @suppress_traceback def point_to_normal(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.point_to_normal return _call_based_on_args('point_to_normal', args, kwargs) @suppress_traceback def depth_to_normal(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.depth_to_normal return _call_based_on_args('depth_to_normal', args, kwargs) @suppress_traceback def masked_min(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.masked_min return _call_based_on_args('masked_min', args, kwargs) @suppress_traceback def masked_max(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.masked_max return _call_based_on_args('masked_max', args, kwargs) @suppress_traceback def bounding_rect(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.bounding_rect return _call_based_on_args('bounding_rect', args, kwargs) @suppress_traceback def intrinsics_from_fov_xy(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.intrinsics_from_fov_xy return _call_based_on_args('intrinsics_from_fov_xy', args, kwargs) @suppress_traceback def matrix_to_euler_angles(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.matrix_to_euler_angles return _call_based_on_args('matrix_to_euler_angles', args, kwargs) @suppress_traceback def matrix_to_axis_angle(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.matrix_to_axis_angle return _call_based_on_args('matrix_to_axis_angle', args, kwargs) @suppress_traceback def axis_angle_to_quaternion(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.axis_angle_to_quaternion return _call_based_on_args('axis_angle_to_quaternion', args, kwargs) @suppress_traceback def quaternion_to_axis_angle(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.quaternion_to_axis_angle return _call_based_on_args('quaternion_to_axis_angle', args, kwargs) @suppress_traceback def slerp(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.slerp return _call_based_on_args('slerp', args, kwargs) @suppress_traceback def interpolate_extrinsics(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.interpolate_extrinsics return _call_based_on_args('interpolate_extrinsics', args, kwargs) @suppress_traceback def interpolate_view(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.interpolate_view return _call_based_on_args('interpolate_view', args, kwargs) @suppress_traceback def to4x4(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.to4x4 return _call_based_on_args('to4x4', args, kwargs) @suppress_traceback def rotation_matrix_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.rotation_matrix_2d return _call_based_on_args('rotation_matrix_2d', args, kwargs) @suppress_traceback def rotate_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.rotate_2d return _call_based_on_args('rotate_2d', args, kwargs) @suppress_traceback def translate_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.translate_2d return _call_based_on_args('translate_2d', args, kwargs) @suppress_traceback def scale_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.scale_2d return _call_based_on_args('scale_2d', args, kwargs) @suppress_traceback def apply_2d(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.apply_2d return _call_based_on_args('apply_2d', args, kwargs) @suppress_traceback def warp_image_by_forward_flow(*args, **kwargs): if TYPE_CHECKING: # redirected to: None, utils3d.torch.warp_image_by_forward_flow return _call_based_on_args('warp_image_by_forward_flow', args, kwargs)