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.SphereBufferGeometry(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.PlaneBufferGeometry(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.

Методы

Общие методы см. в базовом классе LightShadow.

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

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