Module: Gsplat::Math::SphericalHarmonicBasis
- Defined in:
- lib/gsplat/math/spherical_harmonic_basis.rb
Overview
Real SH bases and normalized-direction derivatives in gsplat/Inria order.
Constant Summary collapse
- C0 =
0.2820947917738781- C1 =
0.48860251190292- C2 =
[1.092548430592079, 0.3153915652525201, 0.5462742152960395].freeze
- C3 =
[0.5900435899266435, 2.890611442640554, 0.4570457994644658, 0.3731763325901154, 1.445305721320277].freeze
- C4 =
[2.5033429417967046, -1.770130769779931, 0.9461746957575601, -0.6690465435572892, 0.1057855469152043, 0.47308734787878, 0.6258357354491763].freeze
Class Method Summary collapse
-
.evaluate(directions, degree, basis_count) ⇒ Array<Numo::NArray>
Evaluates bases and derivatives with respect to already-normalized directions.
Class Method Details
.evaluate(directions, degree, basis_count) ⇒ Array<Numo::NArray>
Evaluates bases and derivatives with respect to already-normalized directions.
Constants and ordering match gsplat 1.5.3 cuda/_torch_impl.py.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gsplat/math/spherical_harmonic_basis.rb', line 26 def evaluate(directions, degree, basis_count) count = directions.shape[0] bases = directions.class.zeros(count, basis_count) derivatives = directions.class.zeros(count, basis_count, 3) x_coord = directions[true, 0] y_coord = directions[true, 1] z_coord = directions[true, 2] bases[true, 0] = C0 fill_degree_one!(bases, derivatives, x_coord, y_coord, z_coord) if degree >= 1 fill_degree_two!(bases, derivatives, x_coord, y_coord, z_coord) if degree >= 2 fill_degree_three!(bases, derivatives, x_coord, y_coord, z_coord) if degree >= 3 fill_degree_four!(bases, derivatives, x_coord, y_coord, z_coord) if degree >= 4 [bases, derivatives] end |