Spaces:
Runtime error
Runtime error
| 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) | |