사냥꾼의 IT 노트

OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 조명과 음영 본문

OpenGL로 배우는 3차원 컴퓨터 그래픽스

OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 조명과 음영

가면 쓴 사냥꾼 2020. 12. 7. 03:36

■조명: 물체의 정점에 색을 부여해 물체 자체의 색을 드러내고 입체감을 부여함 (물체 공간에서 작업)

●렌더링: 조명 + 음영

○조명: 시점 좌표계에서 작업

○음영: 래스터 변환 단계에서 작업

●빛의 진행: 흡수, 반사, 투과/굴절

●물체 색: 광원과 물체, 관찰자 위치에 따라 변함

●전역 조명 모델: 다른 물체면에서 반사되어 입사되는 빛까지 고려한 조명 모델

●지역 조명 모델: 광원으로부터 직접 물체 면으로 입사되는 빛만을 고려한 모델

●점, 면적 광원

●분산 광원: 면적 광원을 분산 점 광원으로 근사화 함

●위치성 광원 (옴니라이트): 빛이 모든 방향으로, 즉 방사형으로 진행됨 (근거리 광원)

●방향성 광원 (지향성 광원): 빛이 물체면을 향하여 일정(나란)한 방향으로 진행됨 (원거리 광원/위치 + 방향)

●스포트라이트: 빛이 방사형으로 진행되며, 광원이 유한 거리에 존재함. 하나의 방향을 향해서만 진행

■지역 조명 모델

●물체의 색: R, G, B별로 빛의 세기들 별도 추적하여 최종적으로 합성함

●조명 모델: 광원, 물체면, 시점 등을 기준으로 어떤 빛의 성분들이 어느 정도 세기로 우리 눈에 도달할 것인지에 대한 방법론

●주변 반사/광 (ambient): 주변 물체에 부딪쳐 반사되는 빛을 감안 것으로, 모든 물체면에 일정 크기의 밝기를 추가함

●확산 반사/광 (diffuse): 거친 면에 의한 난반사로 물체면에 부딪혀 모든 방향으로 반사되는 빛을 감안한 것

○지역 조명 모델에서는 그래픽 처리를 단순화하기 위해 완벽 확산체로 가정함

○물체면이 서 있는 방향에 따라 반사광 세기가 다름

○람베르트 법칙

●경면 반사/광 (specular): 매끄러운 물체에 의한 전반사로 입사각과 동일한 크기의 반사각 방향으로 진행함 (광원의 색)

○퐁 반사 모델

○세기가 코사인과 비례함

●반사광의 합성: 광원이 여러 개인 경우는 각각의 광원에서 나오는 빛을 모두 감안하여 합산함

○OpenGL: R, G, B 색에 대해 별도로 적용해야 함

○반사의 종류별로 광원에서 나오는 빛의 세기가 서로 다름

■음영: 정점 색을 기준으로 해당 물체면의 내부에 색을 부여하는 작업 (영상 공간에서 작업) =/= 그림자 (shadow)

●표면 렌더링 (surface rendering): 물체 면에 색을 부여함

●플랫 셰이딩: 주어진 하나의 다각형 전체를 동일한 색으로 칠하는 기법

  1. 다각형을 구성하는 다각형 정점의 위치를 평균하여 중심점을 구함

  2. 중심점에서의 법선 벡터, 광원 벡터, 시점 벡터를 기준으로 조명 모델 연산

  3. 그 결과 색이 면을 칠함

○빠르고 간단함

○마하 밴드 효과: 명암 대비에 의하여 생성됨

●구로 셰이딩 (gouraud shading): 정점의 컬러로부터 보간에 의해 다각형 내부를 서로 다른 색으로 채우는 방법

○실제적인 정점의 법선 벡터와 근사적으로 계산된 법선 벡터가 완전히 일치하지 않기 때문에 경면광을 감안하지 않음

○플랫 셰이딩보다는 부드러우나, 선형 보간 계산 때문에 계산량이 많음

○경면광에 의한 하이라이트 표현이 불가능

●퐁 셰이딩 (phong shading): 정점의 법선 벡터를 보간하여 내부를 채우는 방법

=>곡면의 기울기가 복원되며 경면광을 부여 가능하나, 계산량이 많음

★구로 vs 퐁: 확산 광 계수 조정을 통해 구로 셰이딩도 비슷한 결과를 만들 수는 있지만 퐁 셰이딩처럼 급격한 밝기 변화를 구현하기는 어려움

●미세면 모델: 포면의 거칠기를 모델링 -> 평균 면의 방향을 기준으로 표면의 거칠기라는 매개변수를 사용해서 미세면의 굴곡이나 모양을 조절함 (블린, 금속 셰이딩)

●블린 셰이딩: 퐁 셰이딩과 유사하며, 경면광 성분이 더욱 부드럽게 퍼져 나감

●금속 셰이딩 (쿡/토렌스): 금속 표면의 은은한 경면 광 처리에 유용함

※정규화는 필수

 

■OpenGL의 조명과 음영

●순서

  1. 조명 기능 활성화

  2. 광원 정의: 위치성 광원, 방향성 광원, 스포트라이트

  3. 음영 모드 정의

  4. 법선 벡터 정의

  5. 물체면 특성 정의: 색, 매끄러움 (경면 광의 광택 계수)

  6. 조명 모델 정의

●거리에 따른 빛의 약화: 전역 주변 산사, 방향성 광원은 적용되지 않음

●광원의 색: 주변 광, 확산 광, 경면 광...

●광원의 위치 제어

○광원의 위치가 고정된 경우

○물체는 고정, 광원이 움직이는 경우

○광원이 시점을 따라가는 경우 (광부 헬맷)

●발광체: 스스로 빛을 발하는 물체

●전역 주변 광: 광원에 무관하게 전체적으로 조명을 올리기 위한 것

●시점 위치: 경면 광의 경우 시점의 위치, 즉 시점 좌표계의 원점 위치에 따라 하이라이트의 세기가 좌우됨