티스토리 뷰
Ray_Tracing
- 이미지의 픽셀 하나하나를 통과하는 광선들이 있다는 가정하에 그 광선(Ray)을 역추적(Trace)하는 방식
Physically Based Rendering
- light ray를 다 추적하는 것
- light -> reflection -> pixel
- light ray 와 material 과의 상호작용에 의해서 color가 결정된다.
shading
- 음영(3차원 형태로 나오게 하는 것)
Shadow(그림자)
- 바닥과 그 위에 물체가 있을 경우 광원으로 부터 나온 빛이 도달하지 않는 영역
- 그림자가 없으면 물체가 떠있는지 바닥에 붙어있는지 파악할 수 없다
Backward Ray Tracing
- camera(eye)로 부터 light, 물체로 빛(ray)를 쏘는 것
- pixel -> reflection -> light
- 눈에 들어오는 것만 추적을 하여 모든 ray를 추적하는 것보다 효율적
- 투명, 반짝인 물체일 경우 오류 발생 => 혼합해서 사용
Shadow(그림자)
- Shadow ray를 광원에 대해서 쐈을 때 막혀있으면 그림자가 된다.
Ray, Object
- 직선의 방정식을 이용해서 ray의 위치를 표현 할 수 있다.
- t값을 변형해가며 물체와 ray가 충돌하는 위치를 찾을 수 있다.
- P(pixel): 시작점
- t: 선 위의 점을 표현한 parameter
- collision: 충돌(물리적으로 부딪친다.)
- intersection: 기하학적 의미에 가깝다(교차) => collision에 포함된다.
d(ray)는 단위 벡터 입니다.
- 크기가 1이 아니면 color 값이 변형될 수 있기 때문
- 그래서 |P(pixel) - P(camera)|로 나눠준 것입니다.
Ray로 부터 물체와 교차하는 방법
- Ray를 쪼개서 쪼갠 만큼 이동하여 물체와 교차하는 지점을 찾는다.
Implicit Surface
- 어떤 주요 material을 함수 f(x)로 표현하고 f(x)에 값(p(n))을 넣었을 때를 파악
- f(p(n))이 0에 가까울 수록 물체의 표면에 가까워졌다.
조건
- f(p(n)) < 0
- 물체 안에 있다.
- f(p(n)) = 0
- 물체 표면에 있다.
- f(p(n)) > 0
- 물체 밖에 있다, 충돌 방지 X
정밀도 보완 방법(Bisection Method)
- 이분할 방법
- 딱 0으로 떨어지는 값보다는 작은 값을 설정하여 해당 값에 가깝게 한다.
RGB (Pixel 값 설정)
color \ type | double | unsigned char |
---|---|---|
RED | (1.0f, 0, 0) | (255, 0, 0) |
GREEN | (0, 1.0f, 0) | (0, 255, 0) |
BLUE | (0, 0, 1.0f) | (0, 0, 255) |
Image Format
- RGB color 값의 2차원 values
BMP
bit map 디지털 그림을 저장하는 데 쓰이는 그림 파일 포맷
빛과 물체가 상호작용해서 색의 값을 결정하는 과정
Shading Model
Phong Reflection Model
- 빛이 반사되면서 어떤 색 값을 띄는 가
- 빛이 눈으로 들어 왔을 때 어떤 색 값을 보여주는가
- L 과 R이 가까울 수록 빛이 많이 반사된다.(사이 각이 작을 수록)
- ex) 거울에 직선으로 빛을 비췄을 때 반사되는 빛이 가장 쎄다
Vector
1. V
- P(collision) -> P(camera)
- 물체와 ray의 충돌 지점으로 부터 카메라로 빛을 쏴주는 것
- 눈이 어디 방향에 있는지 알 수 있다(normalize, 정규화 해줘야 한다.)
2. Surface normal (N)
- 수직 방향 normal vector
- surface의 기하학적 특성에서 부터 결정이 된다.(물체를 modeling하고 결정)
3. Light vector (L)
- 충돌 지점에서 봤을 때 광원이 어디에 있는지를 나타내는 vector
4. Perfect Reflection vector (R)
- 완전 반사 방향
- V(1번)의 반대 방향
- 빛이 들어오면 어디로 반사될 것인지 나타내는 vector
Perfect Reflection vector
- normal vector(N)을 기준으로 봤을 때 입사각과 반사각이 같은 경우
Red vector
- V를 surface normal vector(N)에 projection 해준 것
Blue vector
- V에서 Red vector을 빼준 것
R vector
- V에서 Blue vector를 2번 빼준 것
+
Projection (투사)
- 물체의 그림자를 어떤 물체 위에 비추는 일 or 그 비친 그림자
- 도형이나 입체를 다른 평면에 옮기는 일
출처: https://blueskyvision.tistory.com/236
- 벡터 b를 벡터 a에 투영시킨 결과 => 투영벡터 p
Phong Shadow Model
- 빛이 표면으로 부터 반사가 되고 우리 눈에 들어 올 때 어떻게 보이는지 3가지로 나눈 것
- I: 빛(조명)에서 설정
- K: 표면의 성질
- a: 빛이 얼마나 반짝 거리는지
1. Ambient
- 빛이 있으면 이런 색을 나타낸다.
- 광원들은 사방으로 펴져나가는 형태이기 때문에 빛이 반사되고 돌고돌면서 전체적으로 밝아진다 이러한 효과를 표현하기 위해 Ambient가 있다.
2. Diffuse
- 표면 위에 부딪친 빛이 사방으로 골고루 퍼져 나가는 것
3. Specular
- 표면 위에 부딪친 빛이 완전 반사각 방향으로 강하게 펴져 나가는 것 (반짝)
Projection Model
Orthogonal projection
- Screen 부터 수직인 애들만 쏴준다.
- 치수가 정확하다
- CAD 등에서 사용
Perspective projection
- 사람의 눈 위치로 부터 쏴준다.
- 치수가 정확하지 않는다.
출처:
반응형
'활동 > 42Seoul' 카테고리의 다른 글
[push_swap] 풀이과정 (0) | 2021.06.19 |
---|---|
[cub3d] Ray-Casting (0) | 2021.02.15 |
[miniRT, cub3d] wsl2에서 miniRT, cub3d setting (2) | 2021.01.25 |
[miniRT, cub3D] Man 설명 (0) | 2021.01.25 |
[miniRT] Subjects (0) | 2021.01.25 |
공지사항
최근에 올라온 글