MotionGPT0 / pyrender /tests /unit /test_lights.py
bill-jiang's picture
Init
8554568
raw
history blame contribute delete
No virus
2.61 kB
import numpy as np
import pytest
from pyrender import (DirectionalLight, SpotLight, PointLight, Texture,
PerspectiveCamera, OrthographicCamera)
from pyrender.constants import SHADOW_TEX_SZ
def test_directional_light():
d = DirectionalLight()
assert d.name is None
assert np.all(d.color == 1.0)
assert d.intensity == 1.0
d.name = 'direc'
with pytest.raises(ValueError):
d.color = None
with pytest.raises(TypeError):
d.intensity = None
d = DirectionalLight(color=[0.0, 0.0, 0.0])
assert np.all(d.color == 0.0)
d._generate_shadow_texture()
st = d.shadow_texture
assert isinstance(st, Texture)
assert st.width == st.height == SHADOW_TEX_SZ
sc = d._get_shadow_camera(scene_scale=5.0)
assert isinstance(sc, OrthographicCamera)
assert sc.xmag == sc.ymag == 5.0
assert sc.znear == 0.01 * 5.0
assert sc.zfar == 10 * 5.0
def test_spot_light():
s = SpotLight()
assert s.name is None
assert np.all(s.color == 1.0)
assert s.intensity == 1.0
assert s.innerConeAngle == 0.0
assert s.outerConeAngle == np.pi / 4.0
assert s.range is None
with pytest.raises(ValueError):
s.range = -1.0
with pytest.raises(ValueError):
s.range = 0.0
with pytest.raises(ValueError):
s.innerConeAngle = -1.0
with pytest.raises(ValueError):
s.innerConeAngle = np.pi / 3.0
with pytest.raises(ValueError):
s.outerConeAngle = -1.0
with pytest.raises(ValueError):
s.outerConeAngle = np.pi
s.range = 5.0
s.outerConeAngle = np.pi / 2 - 0.05
s.innerConeAngle = np.pi / 3
s.innerConeAngle = 0.0
s.outerConeAngle = np.pi / 4.0
s._generate_shadow_texture()
st = s.shadow_texture
assert isinstance(st, Texture)
assert st.width == st.height == SHADOW_TEX_SZ
sc = s._get_shadow_camera(scene_scale=5.0)
assert isinstance(sc, PerspectiveCamera)
assert sc.znear == 0.01 * 5.0
assert sc.zfar == 10 * 5.0
assert sc.aspectRatio == 1.0
assert np.allclose(sc.yfov, np.pi / 16.0 * 9.0) # Plus pi / 16
def test_point_light():
s = PointLight()
assert s.name is None
assert np.all(s.color == 1.0)
assert s.intensity == 1.0
assert s.range is None
with pytest.raises(ValueError):
s.range = -1.0
with pytest.raises(ValueError):
s.range = 0.0
s.range = 5.0
with pytest.raises(NotImplementedError):
s._generate_shadow_texture()
with pytest.raises(NotImplementedError):
s._get_shadow_camera(scene_scale=5.0)