HemisphericLight — один из типов источников света в
библиотеке Babylon.js, который используется для создания мягкого
освещения с эффектом, аналогичным природному солнечному свету. Этот свет
рассеян по всей сцене, создавая эффект естественного освещения, где
объект не получает жёстких теней и освещён равномерно. Одним из важных
параметров при использовании этого источника света является свойство
groundColor, которое влияет на то, как свет воздействует на
объекты, расположенные на земле или на других поверхностях.
groundColorПараметр groundColor у HemisphericLight
задаёт цвет, которым освещаются объекты, находящиеся в нижней части
сцены, то есть ближе к поверхности. Это может быть полезно для создания
эффекта света, который исходит от земли, например, для имитации заката,
освещения от воды или отражённого света от земли. В отличие от обычного
освещения, которое светит сверху (как солнце), параметр
groundColor влияет на освещённость объектов, находящихся
под источником света.
По сути, groundColor — это цвет, который применяется к
частям объектов, которые направлены вниз или касаются земли. Это
позволяет создавать более реалистичные сцены, где освещённость не
ограничивается только светом сверху, но также учитываются эффекты
отражений или мягкие источники света, исходящие от земли.
Параметр groundColor представляет собой объект типа
Color3, что означает, что он имеет три компоненты: красную,
зелёную и синюю. Эти компоненты задают цвет в формате RGB, где каждое
значение лежит в диапазоне от 0 до 1. Например, если нужно задать
красноватый оттенок для света от земли, можно использовать такой
цвет:
hemisphericLight.groundColor = new BABYLON.Color3(1, 0.5, 0);
Здесь свет от земли будет иметь красноватый оттенок, с сильным
преобладанием красного и немного зелёного. При этом, по умолчанию, если
параметр groundColor не задан, его значение будет
установлено в Color3(0, 0, 0), что соответствует полному
отсутствию света от земли.
Для демонстрации работы параметра groundColor можно
создать простую сцену с объектами, которые будут освещаться мягким
светом с учётом этого параметра.
var scene = new BABYLON.Scene(engine);
// Создание камеры
var camera = new BABYLON.ArcRotateCamera("camera1", Math.PI / 2, Math.PI / 2, 10, BABYLON.Vector3.Zero(), scene);
camera.attachControl(canvas, true);
// Создание света
var hemisphericLight = new BABYLON.HemisphericLight("hemisphericLight", BABYLON.Vector3.Up(), scene);
hemisphericLight.intensity = 0.7;
// Установка groundColor
hemisphericLight.groundColor = new BABYLON.Color3(0.8, 0.6, 0.2); // Свет земли с желтоватым оттенком
// Создание объекта
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", {diameter: 2}, scene);
// Рендеринг сцены
engine.runRenderLoop(function () {
scene.render();
});
В этом примере свет от земли имеет жёлтый оттенок, что делает освещёнными объекты, направленные вниз, в то время как остальная сцена освещается более нейтральным светом сверху.
Важным аспектом является то, как groundColor
взаимодействует с другими параметрами источника света, такими как
интенсивность (intensity) и направление света
(direction). Параметр groundColor влияет
только на объекты, ориентированные вниз, но не затрагивает объекты,
направленные вверх или вбок. Это может быть полезно при создании сложных
сцен, где необходимо подчеркнуть освещённость только определённых
объектов, например, земли или водной поверхности.
Хотя параметр groundColor предоставляет дополнительную
гибкость для создания реалистичных сцен, важно помнить, что
использование дополнительных эффектов освещения, таких как этот, может
оказывать влияние на производительность, особенно при рендеринге больших
сцен с множеством объектов. В большинстве случаев влияние этого
параметра на производительность минимально, но в сложных сценах с
большим количеством объектов и освещения следует внимательно следить за
оптимизацией.
Параметр groundColor в HemisphericLight
библиотеки Babylon.js является мощным инструментом для создания
реалистичных освещённых сцен. Он позволяет задавать цвет света, который
влияет на объекты, ориентированные вниз, и может быть использован для
создания разнообразных визуальных эффектов, таких как имитация света,
отражённого от земли, или атмосферных явлений, таких как закаты.