• 빛의 종류에 대해

    2023. 7. 22.

    by. JJo 😊

    Three.js에서는 여러 종류의 빛을 제공한다. 그중 몇 가지를 살펴보자!

     

    📌 AmbientLight

    전역에서 비추는 빛, 그림자 개념이 없다.

      const ambientLight = new THREE.AmbientLight(0xffffff, 0.7) // new THREE.AmbientLight(색상코드, 강도)
      scene.add(ambientLight)

    (좌) 빛을 추가하기 전 / (우) 빛을 추가한 후

    그림자 표현 없이 전체적으로 조명을 비추는 모습으로 표현된다.

     

    📌 DirectionalLight

    특정 방향으로 빛을 방출한다. (ex.태양) 이 빛은 그림자가 생길 수 있다.

      const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5)
      scene.add(directionalLight)

    아래 이미지와 같이 오브젝트 상단에 빛이 표현되었다. 

    여기에 추가로 조명의 위치를 조정하면 아래 이미지처럼 조금 더 입체감 있게 표현할 수 있다.

      const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5)
      directionalLight.position.set(1, 1, 1) // 조명 위치 설정
      scene.add(directionalLight)

    조명 헬퍼 추가하기

    조명 설정값에 대한 감이 잘 오지 않는 경우 헬퍼를 추가하여 현재 설정된 조명의 위치를 알 수 있다.

    // 조명 헬퍼 추가
      const dlHelper = new THREE.DirectionalLightHelper(
        directionalLight, // 화면에 표시할 조명
        0.5, // 헬퍼 크기
        0x000ff // 헬퍼 색상
      )
      scene.add(dlHelper)

    다음과 같이 파란색 조명 헬퍼가 추가된 것을 확인할 수 있다. 이를 통해 현재 조명이 오브젝트의 상단에서 비추고 있을 것을 알 수 있다.

    📌 HemisphereLight

    하늘색과 지상(바닥)색을 설정하여 이 두 색의 혼합 색상이 표현된다.

    const hemispherLight = new THREE.HemisphereLight(0x0000ff, 0xff0000, 0.9)
    scene.add(hemispherLight)

    하늘색으로 파란색(0x0000ff), 지상색으로 빨간색(0 xff0000)으로 설정하니 아래와 같이 표현되었다.

    하늘색으로 설정한 파란색의 오브젝트의 상단, 지상색의 빨간색이 오브젝트의 하단에 비치고 있다.

    📌 PointLight 

    한 방향으로 빛을 방출한다.

    const pointLight = new THREE.PointLight(0xffffff, 1)
    scene.add(pointLight)

    아래와 같이 오브젝트 중앙에서 조명이 비춰지고 있다. 

    조명의 위치를 바꾸고 조명 헬퍼를 추가해보자!

    const pointLight = new THREE.PointLight(0xffffff, 1)
    // 조명 헬퍼 추가
    const plHelper = new THREE.PointLightHelper(pointLight, 0.5, 0x000ff)
    scene.add(plHelper)
    
    const plHelper = new THREE.PointLightHelper(pointLight, 0.5, 0x000ff)
    scene.add(plHelper)

    📌 SpotLight

    원뿔 모양에 따라 빛을 방출한다.

    const sportLight = new THREE.SpotLight(0xffffff, 0.7)
    scene.add(sportLight)

    728x90

    'ThreeJS' 카테고리의 다른 글

    마우스로 화면 조절하기  (0) 2023.07.31
    그림자 표현하기  (0) 2023.07.31
    텍스처 추가하기  (0) 2023.07.10
    도형에 재질 추가하기  (0) 2023.07.03
    3D 도형 그리기  (0) 2023.07.03

    댓글