LightShadow

SpotLightShadow

Это используется внутри SpotLights для расчета теней.

Пример

// создает WebGLRenderer и включает в нем тени const renderer = new v3d.WebGLRenderer(); renderer.shadowMap.enabled = true; renderer.shadowMap.type = v3d.PCFSoftShadowMap; // default v3d.PCFShadowMap // создает SpotLight и включет тени для источника света const light = new v3d.SpotLight(0xffffff); light.castShadow = true; // default false app.scene.add(light); // настраиваем свойства теней на источнике света light.shadow.mapSize.width = 512; // default light.shadow.mapSize.height = 512; // default light.shadow.camera.near = 0.5; // default light.shadow.camera.far = 500; // default light.shadow.focus = 1; // default // создаёт сферу, которая отбрасывает тени (но не получает их) const sphereGeometry = new v3d.SphereGeometry(5, 32, 32); const sphereMaterial = new v3d.MeshStandardMaterial({ color: 0xff0000 }); const sphere = new v3d.Mesh(sphereGeometry, sphereMaterial); sphere.castShadow = true; //default is false sphere.receiveShadow = false; //default app.scene.add(sphere); // создаёт плоскость, которая принимает тени (но не отбрасывает их) const planeGeometry = new v3d.PlaneGeometry(20, 20, 32, 32); const planeMaterial = new v3d.MeshStandardMaterial({ color: 0x00ff00 }) const plane = new v3d.Mesh(planeGeometry, planeMaterial); plane.receiveShadow = true; app.scene.add(plane); // создаёт помощника для теневой камеры (необязательно) const helper = new v3d.CameraHelper(light.shadow.camera); app.scene.add(helper);

Конструктор

Конструктор создает PerspectiveCamera : PerspectiveCamera для управления видом мира тени.

Свойства

Смотрите свойства базового класса LightShadow.

.camera : Camera

Вид света на мир. Это используется для создания карты глубины сцены; объекты, расположенные за другими объектами с точки зрения света, будут находиться в тени.

По умолчанию используется PerspectiveCamera с near плоскостью сечения 0.5. Свойство fov будет отслеживать угол angle свойства SpotLight владельца SpotLight через метод update. Аналогично, свойство aspect будет отслеживать аспект mapSize. Если свойство distance света установлено, плоскость обрезания far будет отслеживать это значение, в противном случае по умолчанию будет установлено значение 500.

.useMinFov90 : Boolean

Делает вертикальное поле зрения камеры тени равным 90 градусам даже для прожекторов с более узким конусом. По умолчанию false.

.focus : Number

Используется для фокусировки теневой камеры. Поле зрения камеры устанавливается в процентах от поля зрения прожектора. Диапазон - [0, 1]. По умолчанию — 1.0.

.isSpotLightShadow : Boolean

Указывает, что объект является экземпляром класса SpotLightShadow. Только для чтения.

Методы

Смотрите методы базового класса LightShadow.

Пазлы

Пазл set shadow param позволяет включать/выключать отбрасывание теней без программирования.

Исходный файл

О том как получить исходный код этого модуля читайте тут.