WebGL Fundamental (3) : Pencahayaan dan Bayangan

Oleh : Reza Ervani

بسم الله الرحمن الرحيم

Sekarang kita coba bermain dengan pencahayaan.

Salah satu kode yang akan kita gunakan adalah MeshLambertMaterial

Lambert Material membutuhkan setidaknya satu sumber cahaya.

01
02
03
04
05
06
07
08
09
10
var geometryBidang = new THREE.PlaneGeometry(4,4);
var materialBidang = new THREE.MeshLambertMaterial({color: 0xbb0044});
var bidang = new THREE.Mesh(geometryBidang,materialBidang);
 
bidang.rotation.x = 0.5*Math.PI;
bidang.position.y = 0.5;
bidang.position.x = 0;
bidang.position.z = 0;
 
scene.add( bidang );

Dan bidang bola

1
2
3
4
5
6
7
8
9
var bolaGeometry = new THREE.SphereGeometry(0.5,50,50);
var bolaMaterial = new THREE.MeshLambertMaterial({color: 0x7777ff});
var bola = new THREE.Mesh ( bolaGeometry, bolaMaterial);
 
bola.position.x=0;
bola.position.y=0;
bola.position.z=0;
 
scene.add( bola );

Hasilnya akan tampak gelap seperti ini :

Screenshot from 2014-05-13 16:48:01

Untuk itu kita berikan cahaya dari sudut kanan atas dengan kode seperti berikut :

1
2
3
var lampu = new THREE.SpotLight( 0xffffff );
lampu.position.set( -40, -60, -10 );
scene.add( lampu );

Hasilnya akan tampak seperti berikut :

Screenshot from 2014-05-13 16:57:22

Terakhir kita coba pasang bayangan dengan tambahan kode-kode seperti berikut di masing-masing objek :

Di renderer :

renderer.shadowMapEnabled = true;

Di bidang :

 bidang.receiveShadow = true;

Di bola :

 bola.castShadow = true;

Di lampu :

lampu.castShadow = true;

Maka hasilnya akan tampak seperti pada gambar berikut :

Screenshot from 2014-05-13 17:03:27

Selamat mencoba (reza@rumahilmu.or.id)

About Reza Ervani 431 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.