일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 딥러닝
- 언리얼엔진
- 프로그래머
- 게임개발
- ChatGPT
- 호흡분석
- 언어모델
- pyqt5
- NPY
- 개발자
- python
- 딜러닝
- yolo
- 욜로
- Detectron2
- 이터널리턴
- V3
- 헬스케어
- 설치
- C언어
- 파이썬
- ctypes
- 논문리뷰
- TensorFlow
- 파워셀
- 논문
- 리뷰
- 텐서플로우
- connx
- CycleGAN
- Today
- Total
사냥꾼의 IT 노트
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 조명과 음영 본문
■조명: 물체의 정점에 색을 부여해 물체 자체의 색을 드러내고 입체감을 부여함 (물체 공간에서 작업)
●렌더링: 조명 + 음영
○조명: 시점 좌표계에서 작업
○음영: 래스터 변환 단계에서 작업
●빛의 진행: 흡수, 반사, 투과/굴절
●물체 색: 광원과 물체, 관찰자 위치에 따라 변함
●전역 조명 모델: 다른 물체면에서 반사되어 입사되는 빛까지 고려한 조명 모델
●지역 조명 모델: 광원으로부터 직접 물체 면으로 입사되는 빛만을 고려한 모델
●점, 면적 광원
●분산 광원: 면적 광원을 분산 점 광원으로 근사화 함
●위치성 광원 (옴니라이트): 빛이 모든 방향으로, 즉 방사형으로 진행됨 (근거리 광원)
●방향성 광원 (지향성 광원): 빛이 물체면을 향하여 일정(나란)한 방향으로 진행됨 (원거리 광원/위치 + 방향)
●스포트라이트: 빛이 방사형으로 진행되며, 광원이 유한 거리에 존재함. 하나의 방향을 향해서만 진행
■지역 조명 모델
●물체의 색: 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. 조명 모델 정의
●거리에 따른 빛의 약화: 전역 주변 산사, 방향성 광원은 적용되지 않음
●광원의 색: 주변 광, 확산 광, 경면 광...
●광원의 위치 제어
○광원의 위치가 고정된 경우
○물체는 고정, 광원이 움직이는 경우
○광원이 시점을 따라가는 경우 (광부 헬맷)
●발광체: 스스로 빛을 발하는 물체
●전역 주변 광: 광원에 무관하게 전체적으로 조명을 올리기 위한 것
●시점 위치: 경면 광의 경우 시점의 위치, 즉 시점 좌표계의 원점 위치에 따라 하이라이트의 세기가 좌우됨
'OpenGL로 배우는 3차원 컴퓨터 그래픽스' 카테고리의 다른 글
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 프래그먼트 연산 (0) | 2020.12.07 |
---|---|
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 텍스처 (0) | 2020.12.07 |
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 래스터 변환 (0) | 2020.12.07 |
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 가시성 판단 (0) | 2020.12.07 |