Three.js에서 조명의 역할과 종류
Light
AmbientLight(환경광)
Scene에 있는 모든 객체를 동등하게 전역적으로 비춥니다.
기본적인 조명으로 사용되며, 장면에 부드러운 빛을 추가할 때 유용하다
이 조명은 방향이 없으므로 그림자를 드리우는 데 사용할 수 없습니다.
THREE.AmbientLight( color?:, intensitiy?)
- color : Default 0xffffff
- intensity : Default 1
DirectionalLight(직사광)
특정한 방향에서 일괄적으로 빛을 내기에 좋다. 가령 하늘(태양)에서 지표로 특정 방향에서 빛을 내 뿜음
햇빛과 같은 직사광을 표현할 때 적합하다.
그림자를 만들 수 있다.
THREE.DirectionalLight( color?:, intensitiy?);
castShadow : true | false
DirectionalLight( 0xffffff, 0.5 )
빛이 나오는 방향
shadow.mapSize
shadow.camera
// 하늘색에서 그라운드 색으로 패이드 되는 색상을 가진 scene 바로 위에서 위치한 빛
DirectionalLight( 0xffffbb, 0x080820, 1 )
HemisphereLight
주위의 밝기를 구현하기 좋다 (낮에는 밝게, 밤에는 어둡게... 이렇게 하면 밤낮을 구별하기 좋다)
SpotLight
원뿔 형태로 특정 방향으로 빛을 집중적으로 비춘다. 그림자가 생성가능하다.
무대의 조명처럼 특정 객체를 강조할 때 사용한다. SpotLight 샘플
SpotLight( color : Integer, intensity : Float, distance : Float, angle : Radians, penumbra : Float, decay : Float )
spot1.castShadow = this.ScalePlanets.config.shadows.castShadows;
spot1.shadowDarkness = this.ScalePlanets.config.shadows.shadowDarkness;
spot1.shadowMapWidth = this.ScalePlanets.config.shadows.shadowMapHeight;
spot1.shadowMapHeight = this.ScalePlanets.config.shadows.shadowMapWidth;
spot1.shadowCameraVisible = this.ScalePlanets.config.shadows.shadowCameraVisible;
PointLight(점광원)
특정 위치에서 모든 방향으로 빛을 발산한다. 전구와 같이 빛을 내는 Object를 구현하기 좋다
this.pointLight = new THREE.PointLight( 0xffffff, 1 );
this.scene.add( this.pointLight );
this.pointLight.add( new THREE.Mesh( new THREE.SphereBufferGeometry( 4, 8, 8 ), new THREE.MeshBasicMaterial( { color: 0xffffff } ) ) );