10. 조명과 음영

하이솝·2026년 5월 22일

컴퓨터그래픽스

목록 보기
9/9
post-thumbnail

01. 조명

1-1. 조명과 음영

조명

  • 물체의 꼭짓점에 대해 밝고 어두움을 계산하는 것

1-2. 지역 조명 모델과 전역 조명 모델

전역 조명모델(Global Illumination Model)

  • 다른 물체면에서 반사되어 입사되는 빛까지 고려한 조명모델
    모든 빛에 대해 고려함
    영화나 게임 등

지역 조명모델(Local IlluminationModel)

  • 광원으로부터 직접 물체면으로 입사되는 빛만을 고려한 모델
    일부 빛에 대해서만 고려함

1-3. 광원과 물체 색

면적광원과 점광원

  • 면적광원(Area Light Source)점광원(Point Light Source)
    실제 물체는 면적광원이지만, 계산의 편리함을 위해 점광원을 사용할 것

  • 면적광원은 분산 점광원(Distributed Point Light Source)으로 근사화 가능

위치성 광원과 방향성 광원

  • 실제 광원은 하나의 빛에서 퍼져나오는 위치성 광원(Positional Light Source)

  • 계산의 편리함을 위해 광원의 위치를 무한대로 뻗어
    방향성 광원(Directional Light Source)으로 만듦

스포트라이트

  • 점광원의 특수한 형태 중 하나
  • openGL 내부에서 계산량의 증가함

I=A+D+SI = A + D + S

II: 최종 빛의 세기

A(Ambient)A(Ambient)

  • 주변광
  • 방향 없이 균일하게 적용되는 배경 빛

D(Diffuse)D(Diffuse)

  • 난반사광 또는 확산광
  • 빛이 물체 표면에 부딪혀 모든 방향으로 고르게 퍼지는 빛
  • 표면의 법선 벡터와 광원의 방향 각도에 따라 밝기가 달라짐

S(Specular)S(Specular)

  • 반사광
  • 특정 방향으로 정반사되어 하이라이트를 만드는 빛

02. 지역 조명 모델

  • 이러한 그림을 논리에 대한 개념화

2-1. 주변 반사(Ambient Reflection)


광원에 직접 노출되지 않는 면에 밝기를 부여

  • B면은 직접 빛을 받지 않으나, 실세계에서 완전한 검정색은 아님
  • 주변의 복잡한 경로를 통해 B면에 빛이 도달함

모든 빛의 경로를 추적하기 어려움

  • 면마다 상수 크기의 밝기를 임의로 추가
  • 전역 모델조명 효과를 근사적으로 부여

거리에 따른 빛의 약화

AmbientReflection=(Ka)(Ia)/D2Ambient Reflection = (Ka)(Ia) / D^{2}

IaIa: 빛에 직접 노출되지 않는 부분에 반사되어 닿는 빛(주변광)의 세기

KaKa: 반사되어 닿는 물체의 성질 (반사율), 주변광에 대한 반사율
1: 해당 물체는 반사되어 받는 빛을 그대로 반사함 (흰 종이 등)
0: 해당 물체는 반사되어 받는 빛을 그대로 흡수함 (블랙홀, 검정색 종이 등)

DD: 관찰자의 거리
그러나 실제 D2D^2로 계산하게 되면 너무 어둡게 출력됨


주변광 계수 증가


여타 반사광 + 주변광 계수 증가
주변광: 위치와 방향에 무관하게 전체적으로 밝게 해주는 빛
반사광: 특정 각도에서만 반짝이는 빛

주변광의 효과

  • 광원의 위치나 물체면의 방향과는 무관하게 모든 물체면의 밝기가 증가

2-2 확산 반사(Diffusive Reflection)

난반사에 해당

완벽 확산체(Perfect Diffuser)

  • 입사된 빛을 모든 방향으로 완벽하게 고르게 반사함
  • 관찰자는 어느 위치에서 보아도 동일한 밝기를 느낌
  • 지역조명 모델의 그래픽 처리를 단순화하기 위해서 완벽 확산체를 가정
    눈의 좌표를 고려하지 않은 계산식을 사용할 수 있기 때문

방향성 확산체(Directional Difuser)

  • 입사광의 대칭 방향으로 더 많은 빛이 반사됨
  • 관찰자가 확산 방향에 근접하면 물체가 더욱 밝게 보임

확산광의 세기

DiffuseReflection=KdIdcosθ/D2=KdId(NL)/D2Diffuse Reflection = Kd·Id·cosθ / D^2 = Kd·Id(N·L) / D^2

KdKd: 확산광(난반사광)에 대한 반사율, 확산광 계수

IdId: 광원의 확산광 세기

NN: 수직인 법선벡터

LL: 광원 벡터

확산광 효과

  • 면이 서 있는 방향에 따라 차등적 밝기
  • 입체감 부여

2-3. 경면 반사

반질반질한 표면에서 반사되는 빛

  • 정반사에 의함
  • 물체의 색이 아닌 광원의 색을 관찰하게 됨

SpecularReflection=KsIs(cosΦ)n/D2=KsIs(RV)n/D2Specular Reflection = Ks·Is·(cosΦ)^n / D^2 = Ks·Is(R·V)^n / D^2

nn

  • 광택계수(Shines Coefficient)
  • 물체면의 매끄러운 정도를 반영
    금속은 100~200, 플라스틱은 10~20 정도가 적당

2-4. 반사광의 합성

I=A+D+S=(Ka)(Ia)+KdId(NL)+KsIs(RV)nI = A + D + S = (Ka)(Ia) + Kd·Id(N·L) + Ks·Is(R·V)^n

  • 꼭짓점 하나마다 해당 공식을 대입해서 밝기 값을 계산

  • Ia+Id+Is=1Ia + Id + Is=1이 되도록 임의의 값 대입

  • Ka,Kd,KsKa, Kd, Ks에는 물체 본연의 색을 대입

  • N,L,R,VN, L, R, V에 대해

  • LL은 조명의 방향

  • NN은 꼭짓점마다 법선벡터

  • VVgluLookAt()

  • RRNLN·L과 같음

지엘의 조명

  • 물체의 색: R, G, B별로 빛의 세기를 별도 계산 후 최종적으로 합산

관찰자가 느끼는 조명의 세기

  • 빨간색 물체를 만들고 싶을 때 RGB = (1, 0, 0)
    R의 강도에서 Ka = Kd = Ks = 1
    G, B의 강도에서 Ka = Kd = Ks = 0

  • 노란색 물체를 만들고 싶을 때 RGB = (1, 1, 0)
    R, G의 강도에서 Ka = Kd = Ks = 1
    R, G의 강도에서 Ia = 0.2, Id = 0.5, Is = 0.3
    B의 강도에서는 K, I값을 0으로 설정

  • KsKs(광택 있는 물체)의 경우 물체의 색상을 그대로 반사하기 때문에
    Ksr, Ksg, Ksb = (1, 1, 1)로 가정하는 것이 일반적

03. 음영

음영 또는 표면 렌더링(Surface Rendering)

  • 물체 의 색을 부여

3-1. 플랫 셰이딩(Flat Shading)

  • 주어진 하나의 다각형 전체를 동일한 색으로 칠함

마하밴드 효과(Mach Band Effect)

  • 다각형 사이의 경계션이 필요 이상으로 뚜렷하게 보이는 현상

  • 두 개의 면이 만나는 경계선 부근에서,
    어두운 면은 더 어두워지고, 밝은 면은 더 밝게 보이는 일종의 착시 현상

3-2. 구로 셰이딩(Gouraud Shading)

  • 다각형 내부를 서로 다른 색으로 부드럽게 채우는 방법 (그라데이션)

I4 = I1과 I3의 2:4 내분 = (I1 x 4 + I3 x 2) / (4 + 2)
I5 = I3과 I2의 4:6 내분 = (I3 x 6 + I2 x 4) / (6 + 4)
I6 = I4와 I5의 3:3 내분 = (I4 x 3 + I5 x 3) / (3 + 3)
  • 평면이 아닌 꼭짓점에서의 법선 벡터 계산

  • 주변 삼각형들의 법선 벡터의 평균값으로 꼭짓점 벡터를 구함

  • 플랫 셰이딩보다는 부드럽지만, 일부 마하 밴드 효과가 남아있음

Phong Shading

  • 개수가 많은 모든 픽셀에 대해 조명 연산 수행

0개의 댓글