A CUDA Mesh RayTracer with BVH acceleration.
git clone https://github.com/ashawkey/raytracing
cd raytracing
pip install .
Example for a mesh normal renderer:
python renderer.py # default, show a dodecahedron
python renderer.py --mesh example.ply # show any mesh file
gui.mp4
Example code:
import numpy as np
import trimesh
import torch
import raytracing
# build BVH from mesh
mesh = trimesh.load('example.ply')
RT = raytracing.RayTracer(mesh.vertices, mesh.faces) # build with numpy.ndarray
# get rays
rays_o, rays_d = get_ray(pose, intrinsics, H, W) # [N, 3], [N, 3], query with torch.Tensor (on cuda)
# query ray-mesh intersection
intersections, face_normals, depth = RT.trace(rays_o, rays_d) # [N, 3], [N, 3], [N,]
- Credits to Thomas Müller's amazing tiny-cuda-nn and instant-ngp!