3 x sphere met 3 x pontLight
pointLight() , ambientMaterial() en camera(); terug naar de inleiding
camera instellingen
argumenten van de camera: camera(Xpos, Ypos, Zpos, Xdir, Ydir, Zdir, Xup, Yup, Zup); , pos = positie, dir = richting
Xup, Yup, Zup is een 3d vector met (0,0,0) is de camera nergens op gericht er is dus geen beeld te zien.
Met Yup = 1 is de camera op de y as gericht, de y as staat verticaal
Met Xup = 1 is de camera op de x as gericht, de x as staat verticaal
default positie van de camera: camera(0, 0, (height/2.0) / tan(PI*30.0 / 180.0), 0, 0, 0, 0, 1, 0); ,Yup = 1, de camera is voor op het assenstelsel gericht,
met Yup is -1 is de camera van achter op het assenstelsel gericht, de camera is met de y as 180 gedraaid !
Light en Material
ambientMaterial(R,G,B) default waarden: ambientMaterial(255,255,255); Met ambientMaterial geef je aan welke kleur wordt gereflecteerd.
point.Light(R, G, B, x, y, z); geeft een RGB kleur af en heeft een x, y, z positie
De schets maakt als achtergrond gebruik van het object ruitjespap van de class "WEBGLRuitjes"
let x; let y; let z; let n;
function setup() {
createCanvas(windowWidth, windowHeight,WEBGL);
n = height/15;
x = 0; y = 0; z = 0;
ruitjespap = new WEBGLRuitjes(n, x, y);
}
function draw() {
background('#E6FBFF');
ruitjespap.display();
//default camera positie
camera(x, y, (height/2.0) / tan(PI*30.0 / 180.0), x, y, z, 0, 1, 0);
// de li en re sphere worden langwerpig afgebeeld
// dit omdat de camera default in het 0, 0, (height/2.0) / tan(PI*30.0 / 180.0 punt staat
pointLight(250, 0, 0, x, y, z+5*n); //rood komt van recht voor
pointLight(0,0,255, x, y-10*n, z); //blauw komt van boven
pointLight(0,255,0, x, y+10*n, z); //groen komt van beneden
//ambientMaterial(0,255,0)// alleen de groene kleur wordt gereflecteerd
//ambientMaterial(255,255,255)// (is wit) worden de drie kleuren gereflecteerd
noStroke();
push();
translate(x-8*n, y, z);
sphere(2*n);
pop();
sphere(2*n);
// push() en pop() zijn hier niet nodig!
// push();
translate(x+8*n, y, z);
sphere(2*n)
// pop();
}