1. Ray Tracing
=> 빛이 가는 방향으로 어떤 물체를 만나고 reflection 등의 관계를 알아내기 위함
2. Normal
=> Normal값을 구할 때 외적을 통하여 구함
=> Vertex를 통해 Face를 구하고, Face를 통해 normal을 계산
=> Triangle
-> n = (P2-P0)x(P1-P0)
=> Mesh(Gouraud)
-> n = (n1+n2+n3+n4) / |n1+n2+n3+n4|
=> Phong
-> n(a) = (1-a)nA + anB
-> n(a,b) = (1-b)nC + bnD
3. Shading
=> Normal을 결정한 후 light source의 BRDF를 고려해서 나가는 빛의 양을 결정하는 것을 Shading이라 함
=> Shading을 해주는 것을 shader라 표현
=> Flat shading
-> polygon이 flat하다고 가정
-> 해당 polygon 안에서의 normal은 동일
-> light source 까지의 거리는 constant함(멈)
-> 입사각과 반사각이 어느 위치에서나 동일하다고 가정
-> 보는 사람도 고정되어있고, 굉장히 멀리있다 가정
-> 매끄럽지 못하며, 가장자리를 따라 밝기가 증가함
=> Gouraud shading
-> 적절한 수의 vertex가 있다는 가정하에 color값을 interpolation
-> mesh 단위로 shading 값을 일정하게 주지않고 interpolation 하는 방법
-> 빛이 비춰지는 평균 명암을 적용해서 그것을 부드럽게 적용시켜주는 방법
-> 계산법
-> 각 꼭지점에서 average normal을 찾음
-> 각 꼭지점에 Phong model 적용
-> 각 다각형의 shade를 interpolation
=> Phong shading
-> normal 값 자체를 interpolation하는 방법
-> 하이라이트나 반사광을 표현할 수 있게 해주는 방법
-> 계산법
-> 가장자리를 가로질러서 vertex normal interpolate
-> polygon을 가로질러서 edge normal interpolate
-> 각 fragment에 phong model 적용
4. Ray Tracing
=> 모든 방향의 Ray를 Trace해서 값들을 결정하는 것
=> 광원에서 나온 광선이 물체에서 반사하는 모습을 시뮬레이팅해서 표현하는 방법
=> 이미지 평면에서 픽셀을 통과하는 빛의 경로를 역추적하여 이미지 생성
=> 보통은 Shadow / Refraction / inter-object reflection 고려
=> 높은 현실감을 가지나, 연산이 오래걸림
Graphics System (0) | 2023.07.27 |
---|---|
Texture Mapping (0) | 2023.07.27 |
LOD(Level Of Detail) Frameworks (0) | 2023.07.27 |
변환(transformation) (0) | 2023.02.05 |
[Unity] Euler, Quaternion 오일러각(짐벌락) 쿼터니언 (0) | 2022.07.06 |