voxcity.simulator_gpu.visibility.geometryยถ
Geometry utilities for view analysis.
Provides ray direction generation using various sampling strategies: - Grid-based sampling (uniform azimuth x elevation grid) - Fibonacci spiral sampling (more uniform hemisphere coverage)
Classesยถ
GPU-accessible ray direction field for batch processing. |
Functionsยถ
|
Generate ray directions using a regular grid sampling. |
|
Generate ray directions using Fibonacci spiral sampling. |
|
Generate ray directions covering the upper hemisphere. |
|
Rotate a vector around an axis by a specified angle using Rodrigues' rotation formula. |
|
Taichi GPU kernel function for rotating a vector around an axis. |
|
Build orthonormal basis (u, v, n) for a surface normal. |
|
Taichi GPU kernel function to build orthonormal basis for a surface normal. |
Module Contentsยถ
- voxcity.simulator_gpu.visibility.geometry.generate_ray_directions_grid(n_azimuth: int = 120, n_elevation: int = 20, elevation_min_degrees: float = -30.0, elevation_max_degrees: float = 30.0) numpy.ndarrayยถ
Generate ray directions using a regular grid sampling.
- Parameters:
n_azimuth โ Number of azimuthal divisions
n_elevation โ Number of elevation divisions
elevation_min_degrees โ Minimum elevation angle in degrees
elevation_max_degrees โ Maximum elevation angle in degrees
- Returns:
Array of shape (n_azimuth * n_elevation, 3) with unit direction vectors
- voxcity.simulator_gpu.visibility.geometry.generate_ray_directions_fibonacci(n_rays: int = 2400, elevation_min_degrees: float = -30.0, elevation_max_degrees: float = 30.0) numpy.ndarrayยถ
Generate ray directions using Fibonacci spiral sampling.
This provides more uniform coverage of the hemisphere compared to grid sampling.
- Parameters:
n_rays โ Total number of rays
elevation_min_degrees โ Minimum elevation angle in degrees
elevation_max_degrees โ Maximum elevation angle in degrees
- Returns:
Array of shape (n_rays, 3) with unit direction vectors
- voxcity.simulator_gpu.visibility.geometry.generate_hemisphere_directions(n_azimuth: int = 80, n_elevation: int = 40) numpy.ndarrayยถ
Generate ray directions covering the upper hemisphere.
Elevation goes from 0 (horizon) to 90 (zenith).
- Parameters:
n_azimuth โ Number of azimuthal divisions
n_elevation โ Number of elevation divisions
- Returns:
Array of shape (n_azimuth * n_elevation, 3) with unit direction vectors
- voxcity.simulator_gpu.visibility.geometry.rotate_vector_axis_angle(vec: numpy.ndarray, axis: numpy.ndarray, angle: float) numpy.ndarrayยถ
Rotate a vector around an axis by a specified angle using Rodriguesโ rotation formula.
This is a CPU implementation matching voxcity.simulator.common.geometry.rotate_vector_axis_angle.
- Parameters:
vec โ Vector to rotate (3,)
axis โ Rotation axis (3,) - will be normalized
angle โ Rotation angle in radians
- Returns:
Rotated vector (3,)
- voxcity.simulator_gpu.visibility.geometry.rotate_vector_axis_angle_ti(vec: ti.template(), axis: ti.template(), angle: taichi.f32)ยถ
Taichi GPU kernel function for rotating a vector around an axis.
Uses Rodriguesโ rotation formula.
- Parameters:
vec โ Vector to rotate (Vector3)
axis โ Rotation axis (Vector3) - will be normalized
angle โ Rotation angle in radians
- Returns:
Rotated Vector3
- voxcity.simulator_gpu.visibility.geometry.build_face_basis(normal: numpy.ndarray) Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]ยถ
Build orthonormal basis (u, v, n) for a surface normal.
Matches voxcity.simulator.common.geometry._build_face_basis.
- Parameters:
normal โ Surface normal vector (3,)
- Returns:
Tuple of (u, v, n) orthonormal vectors
- voxcity.simulator_gpu.visibility.geometry.build_face_basis_ti(normal: ti.template())ยถ
Taichi GPU kernel function to build orthonormal basis for a surface normal.
- Parameters:
normal โ Surface normal Vector3
- Returns:
Tuple of (u, v, n) orthonormal Vector3s