В предыдущей статье мы узнали, как использовать материалы, чтобы определить аспект вашей сетки. Теперь мы готовы поговорить о огнях.
Свет используется для получения диффузного и зеркального цвета, получаемого каждым пикселем. Этот цвет затем используется материалами для определения окончательного цвета каждого пикселя.
Babylon.js позволяет создавать и регистрировать столько источников света, сколько вы хотите, но будьте осторожны, потому что StandardMaterial может обрабатывать только 4 одновременных источника света (первые четыре включенных источника света в списке источников света)
В этой статье я покажу вам, как использовать все виды источников света, поддерживаемых babylon.js .
Активация / Деактивация света
Каждый источник света можно отключить, установив для его свойства isEnabled значение false.
Но вы также можете контролировать глобальную интенсивность света со свойством интенсивности .
Точечный свет
Точечный свет — это свет, определяемый уникальной точкой. С этой точки свет излучается во всех направлениях.
Вы можете управлять цветом света с диффузными и зеркальными свойствами:
var light0 = new BABYLON.PointLight("Omni0", new BABYLON.Vector3(1, 10, 1), scene); light0.diffuse = new BABYLON.Color3(1, 0, 0); light0.specular = new BABYLON.Color3(1, 1, 1);
Красный рассеянный точечный светильник с белым зеркальным отражением
Направленный свет
Направленный свет определяется направлением (какой сюрприз!). Свет излучается отовсюду в определенном направлении и имеет бесконечный диапазон.
Как точечный источник света, вы можете управлять цветом источника света с помощью рассеянных и зеркальных свойств:
var light0 = new BABYLON.DirectionalLight("Dir0", new BABYLON.Vector3(0, -1, 0), scene); light0.diffuse = new BABYLON.Color3(1, 0, 0); light0.specular = new BABYLON.Color3(1, 1, 1);
Красный рассеянный направленный свет с белым зеркальным
Точечный свет
Точечный свет определяется позицией, направлением, углом и показателем степени. Эти значения определяют конус света, начиная с положения в направлении. Угол определяет размер луча прожектора, а показатель степени определяет скорость затухания света с расстоянием:
var light0 = new BABYLON.SpotLight("Spot0", new BABYLON.Vector3(0, 30, -10), new BABYLON.Vector3(0, -1, 0), 0.8, 2, scene); light0.diffuse = new BABYLON.Color3(1, 0, 0); light0.specular = new BABYLON.Color3(1, 1, 1);
Красный рассеянный прожектор с белым отражателем и конусом шириной 0,8 радиана. Значение показателя равно 2.
Свет полушария
Полусферический свет представляет собой простой и легкий способ имитировать реалистичное окружающее освещение. Полусферический свет определяется направлением на небо и тремя цветами: один для рассеянного (цвет неба), один для земли (цвет, когда пиксель не направлен к небу) и один для зеркального.
var light0 = new BABYLON.HemisphericLight("Hemi0", new BABYLON.Vector3(0, 1, 0), scene); light0.diffuse = new BABYLON.Color3(1, 1, 1); light0.specular = new BABYLON.Color3(1, 1, 1); light0.groundColor = new BABYLON.Color3(0, 0, 0);
Что дальше ?
Если вы хотите углубиться в babylon.js , вот несколько полезных ссылок:
- Представляем Babylon.js: http://blogs.msdn.com/b/eternalcoding/archive/2013/06/27/babylon-js-a-complete-javascript-framework-for-building-3d-games-with-html -5-и-webgl.aspx
- Как загрузить сцену, экспортированную из Blender: http://blogs.msdn.com/b/eternalcoding/archive/2013/06/28/babylon-js-how-to-load-a-babylon-file-produced-with -blender.aspx
- Дайте волю стандартному материалуигра babylon.js: http://blogs.msdn.com/b/eternalcoding/archive/2013/07/01/babylon-js-unleash-the-standardmaterial-for-your-babylon-js-game.aspx
- Использование нескольких материалов: http://blogs.msdn.com/b/eternalcoding/archive/2013/07/10/babylon-js-using-multi-materials.aspx
- Репозиторий Github: https://github.com/BabylonJS/Babylon.js