mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-11 02:24:38 +08:00
* Move util functions out of splatfacto Nothing else currently uses some of the SH utils, but it might make sense to get them out of splatfacto. I also moved the k nearest neighbors to utils since it doesn't depend on the model class. * fix assert * fix sh test * convert to using degrees, not levels
17 lines
556 B
Python
17 lines
556 B
Python
import pytest
|
|
import torch
|
|
|
|
from nerfstudio.utils.spherical_harmonics import components_from_spherical_harmonics, num_sh_bases
|
|
|
|
|
|
@pytest.mark.parametrize("degree", list(range(0, 5)))
|
|
def test_spherical_harmonics(degree):
|
|
torch.manual_seed(0)
|
|
N = 1000000
|
|
|
|
dx = torch.normal(0, 1, size=(N, 3))
|
|
dx = dx / torch.linalg.norm(dx, dim=-1, keepdim=True)
|
|
sh = components_from_spherical_harmonics(degree, dx)
|
|
matrix = (sh.T @ sh) / N * 4 * torch.pi
|
|
torch.testing.assert_close(matrix, torch.eye(num_sh_bases(degree)), rtol=0, atol=1.5e-2)
|