본문 바로가기

Unity3d

Unity에서 빛과 그림자 다루기: 조명 기초

게임 개발에서 조명은 장면의 시각적 매력을 높일 뿐만 아니라 게임플레이 역학과 분위기 설정에 중요한 역할을 합니다. Unity는 모든 게임의 분위기에 맞게 조정할 수 있는 포괄적인 조명 도구 모음을 제공합니다. 이 블로그 게시물에서는 Unity에서 빛과 그림자를 다루는 기본 사항을 소개하고, 게임에서 효과적인 조명을 시작하는 데 도움이 될 코드 예제와 설명을 제공합니다.

Unity의 조명 시스템 이해하기

Unity의 조명 시스템은 강력하며, 현실적인 빛의 행동을 시뮬레이션할 수 있는 다양한 조명 유형과 설정을 포함합니다. Unity의 조명 시스템의 주요 구성 요소는 다음과 같습니다:

  • Directional Lights: 햇빛을 시뮬레이션하며 장면의 모든 객체에 영향을 미칩니다.
  • Point Lights: 광원에서 모든 방향으로 빛을 발산하며, 특정 범위 내의 객체에 영향을 미칩니다.
  • Spot Lights: 광원에서 빛의 원뿔을 발산하여 특정 각도와 거리 내의 객체를 비춥니다.
  • Area Lights: 한 방향으로 제한된 영역 내에서 빛을 발산하며, 현실적인 실내 조명에 이상적입니다.

각 조명 유형은 장면에 깊이와 리얼리즘을 추가하는 데 필수적인 그림자를 생성할 수 있습니다.

기본 조명 설정하기

다음은 Unity에서 간단한 조명 장면을 설정하는 방법입니다:

  1. 새 장면 만들기: File > New Scene을 선택하여 Unity에서 새 장면을 시작합니다.
  2. Directional Light 추가하기: GameObject > Light > Directional Light로 이동합니다. 이것은 여러분의 햇빛 역할을 할 것입니다. 원하는 조명 효과를 얻기 위해 위치와 회전을 조정합니다.
  3. 조명 속성 구성하기: Directional Light를 선택하고 Inspector 패널에서 Intensity, Color 및 Shadow Type을 설정합니다. 현실적인 그림자를 위해 Shadow Type을 "Soft Shadows"로 설정합니다.
  4. 게임 객체 추가하기: 빛과 상호 작용하는 방식을 보기 위해 장면에 객체를 추가합니다. GameObject > 3D Object > Cube를 사용하여 간단한 큐브를 추가합니다.

스크립트를 통한 조명 속성 제어

C# 스크립트를 사용하여 게임 플레이 중에 동적으로 조명 속성을 변경할 수 있습니다. 이는 낮과 밤의 시간 변경이나 특정 게임 이벤트에 반응하는 등 실시간 조정을 가능하게 합니다. 다음은 조명 강도와 색상을 변경하는 예제 스크립트입니다:

using UnityEngine;

public class LightController : MonoBehaviour
{
    public Light myLight;
    public float maxIntensity = 1.0f;
    public Color dayColor;
    public Color nightColor;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.N))  // N을 누르면 밤으로 전환
        {
            myLight.intensity = 0.2f;  // 밤에는 빛을 어둡게
            myLight.color = nightColor;
        }
        if (Input.GetKeyDown

(KeyCode.D))  // D를 누르면 낮으로 전환
        {
            myLight.intensity = maxIntensity;  // 낮에는 밝은 빛
            myLight.color = dayColor;
        }
    }
}
  • 설명: 이 스크립트는 빛 객체에 부착됩니다. 키 입력을 감지하여 낮과 밤 장면을 전환합니다. 입력에 따라 빛의 강도와 색상을 조정하여 낮/밤 주기 효과를 시뮬레이션합니다.

효과적인 조명을 위한 팁

  • 여러 광원 사용: 다양한 유형의 빛을 결합하면 더 동적이고 시각적으로 매력적인 장면을 만들 수 있습니다.
  • 성능 고려: 특히 실시간 그림자는 성능에 많은 부하를 줄 수 있습니다. 정적 객체에 대해 구운 조명(baked lighting)을 사용하여 성능을 향상시키세요.
  • 설정 실험하기: Unity의 Light 컴포넌트와 조명 창은 많은 매개변수를 제공합니다. 이러한 설정을 실험하여 장면에 어떻게 영향을 미치는지 확인하고 최상의 성능과 품질을 위해 설정을 최적화하세요.

결론

Unity에서 효과적인 조명을 구현하면 평범한 장면을 생생하고 매력적인 환경으로 변모시킬 수 있습니다. 조명 유형, 속성 및 스크립팅 상호 작용의 기본을 이해함으로써, 게임의 특정 요구에 맞춰 더 복잡한 조명 시나리오를 탐색할 수 있습니다.