Spaces:
Running
on
Zero
Running
on
Zero
# 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) | |
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) | |
def triangulate(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.triangulate, utils3d.torch.triangulate | |
return _call_based_on_args('triangulate', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
def mesh_relations(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.mesh_relations, None | |
return _call_based_on_args('mesh_relations', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
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) | |
def sovle_quad(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.sovle_quad, None | |
return _call_based_on_args('sovle_quad', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
def normals_edge(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.normals_edge, None | |
return _call_based_on_args('normals_edge', args, kwargs) | |
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) | |
def interpolate(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.interpolate, None | |
return _call_based_on_args('interpolate', args, kwargs) | |
def image_scrcoord(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.image_scrcoord, None | |
return _call_based_on_args('image_scrcoord', args, kwargs) | |
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) | |
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) | |
def image_pixel(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.image_pixel, None | |
return _call_based_on_args('image_pixel', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
def chessboard(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.chessboard, utils3d.torch.chessboard | |
return _call_based_on_args('chessboard', args, kwargs) | |
def cube(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.cube, None | |
return _call_based_on_args('cube', args, kwargs) | |
def icosahedron(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.icosahedron, None | |
return _call_based_on_args('icosahedron', args, kwargs) | |
def square(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.square, None | |
return _call_based_on_args('square', args, kwargs) | |
def camera_frustum(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.camera_frustum, None | |
return _call_based_on_args('camera_frustum', args, kwargs) | |
def perspective(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.perspective, utils3d.torch.perspective | |
return _call_based_on_args('perspective', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
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) | |
def ray_intersection(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.ray_intersection, None | |
return _call_based_on_args('ray_intersection', args, kwargs) | |
def se3_matrix(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.se3_matrix, None | |
return _call_based_on_args('se3_matrix', args, kwargs) | |
def slerp_quaternion(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.slerp_quaternion, None | |
return _call_based_on_args('slerp_quaternion', args, kwargs) | |
def slerp_vector(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.slerp_vector, None | |
return _call_based_on_args('slerp_vector', args, kwargs) | |
def lerp(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.lerp, None | |
return _call_based_on_args('lerp', args, kwargs) | |
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) | |
def piecewise_lerp(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.piecewise_lerp, None | |
return _call_based_on_args('piecewise_lerp', args, kwargs) | |
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) | |
def apply_transform(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.apply_transform, None | |
return _call_based_on_args('apply_transform', args, kwargs) | |
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) | |
def RastContext(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.RastContext, utils3d.torch.RastContext | |
return _call_based_on_args('RastContext', args, kwargs) | |
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) | |
def rasterize_edges(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.rasterize_edges, None | |
return _call_based_on_args('rasterize_edges', args, kwargs) | |
def texture(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.texture, None | |
return _call_based_on_args('texture', args, kwargs) | |
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) | |
def test_rasterization(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
utils3d.numpy.test_rasterization, None | |
return _call_based_on_args('test_rasterization', args, kwargs) | |
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) | |
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) | |
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) | |
def laplacian(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.laplacian | |
return _call_based_on_args('laplacian', args, kwargs) | |
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) | |
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) | |
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) | |
def get_rays(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.get_rays | |
return _call_based_on_args('get_rays', args, kwargs) | |
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) | |
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) | |
def volume_rendering(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.volume_rendering | |
return _call_based_on_args('volume_rendering', args, kwargs) | |
def bin_sample(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.bin_sample | |
return _call_based_on_args('bin_sample', args, kwargs) | |
def importance_sample(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.importance_sample | |
return _call_based_on_args('importance_sample', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
def InstantNGP(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.InstantNGP | |
return _call_based_on_args('InstantNGP', args, kwargs) | |
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) | |
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) | |
def masked_min(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.masked_min | |
return _call_based_on_args('masked_min', args, kwargs) | |
def masked_max(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.masked_max | |
return _call_based_on_args('masked_max', args, kwargs) | |
def bounding_rect(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.bounding_rect | |
return _call_based_on_args('bounding_rect', args, kwargs) | |
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) | |
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) | |
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) | |
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) | |
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) | |
def slerp(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.slerp | |
return _call_based_on_args('slerp', args, kwargs) | |
def interpolate_extrinsics(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.interpolate_extrinsics | |
return _call_based_on_args('interpolate_extrinsics', args, kwargs) | |
def interpolate_view(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.interpolate_view | |
return _call_based_on_args('interpolate_view', args, kwargs) | |
def to4x4(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.to4x4 | |
return _call_based_on_args('to4x4', args, kwargs) | |
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) | |
def rotate_2d(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.rotate_2d | |
return _call_based_on_args('rotate_2d', args, kwargs) | |
def translate_2d(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.translate_2d | |
return _call_based_on_args('translate_2d', args, kwargs) | |
def scale_2d(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.scale_2d | |
return _call_based_on_args('scale_2d', args, kwargs) | |
def apply_2d(*args, **kwargs): | |
if TYPE_CHECKING: # redirected to: | |
None, utils3d.torch.apply_2d | |
return _call_based_on_args('apply_2d', args, kwargs) | |
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) | |