Ambiens fény
Használata
A konstruktor függvénynek a színt és az intenzitást adhatjuk meg. Figyeljünk arra, hogy a maximális fényerőt a Three.js r155 vérziójától nem az 1.0, hanem a π értéke jelenti, a konstruktor függvény intenzitás paraméterének alapértéket viszont továbbra is 1.0!
Példaként egy ciánkék környezeti fény 1 értékű intenzitással történő létrehozását és színtérhez adását nézzük meg. A létrehozáskor átadott értékek utólag is módosíthatók a color és az intensity attribútumokkal.
let ambientLight = new THREE.AmbientLight( 0x00ffff, Math.PI );
scene.add( ambientLight );
Ne felejtsük el, hogy a fény hatása csak akkor fog látszani, ha a tárgy megfelelő anyagjellemzővel rendelkezik! A korábbi programjainkban szereplő MeshBasicMaterial nem ilyen, ott csak az anyag saját színe jelenik meg!
Az anyagnak most fehér színt adunk, hogy jól látható legyen a fény színének a hatása.
geometry = new THREE.BoxGeometry( 8, 8, 8 );
material = new THREE.MeshLambertMaterial( { color: 0xffffff } );
cubeMesh = new THREE.Mesh( geometry, material );
scene.add( cubeMesh );
Az eredmény egy ciánkék kocka lesz. Az éleit viszont nem látjuk, mert minden lap egyforma színű!
Javaslat
Ha más fényforrást is használunk, akkor az ambiens fény intenzitását (intensity paraméterét vagy színének komponens értékeit) vegyük alacsonyra, mert különben elnyomja a többi fény hatását!
Feladatok
- Az előző kódrészlettel hozzunk létre futó modellezést!
- Kiindulásként használhatjuk a 03_01_ThreeJsLightTesterSkeleton forráskódot.
- A programban a kamera interaktívan mozgatható!
- Próbáljuk ki az ambiens fény színének és intenzitásának módosításait!
- Módosítsuk az anyaghoz rendelt színt is!
- Nézzük meg, mi történik, ha vörös színű tárgyat világítunk meg ciánkék színnel!
- A programhoz vezérlőpanelt is adhatunk, amellyel a fenti paramétereket interaktívan módosíthatjuk.