1. Texture Mapping
=> 3D vertex간의 texture mapping
=> 3차원 물체의 표면에 세부적인 질감의 묘사를 하거나 색을 칠하는 기법
texture coordinates
=> Texture Coordinates
-> 텍스쳐는 2D coordinate system으로 정의됨(u,v)
-> 각삼각형 꼭지점에 (u,v)좌표가 할당되어 삼각형에 붙을 텍스쳐의 어느 부분을 붙여야 하는지 알 수 있음
-> Triangle => TRSA(translation -> rotation -> size -> affine)
-> Pixel texture coordinates 계산(주어진 3개의 값의 weight를 곱해서 더한 값)
Triangle
=> Screen Space vs World Space
-> 원근 변환은 삼각형 모양을 비선형적으로 변경하여 다른 가중치 발생
-> 독립적으로 Mapping이 이루어짐
Texture source / 우리가 얻는것 / 우리가 원했던 것
-> Texture Distortion
-> 삼각형의 각 edge를 고려함
-> 공간으로부터 스크린 공간으로의 project 하는 edge 고려
-> 같은 길이의 격자를 기울일 경우, 가까운 애들의 길이가 길어지고, 이는 가까운 애들의 넓이가 넓어지는 현상이 발생
-> Mesh refinement로 해결
-> Mesh Refinement
-> 삼각형을 잘게 쪼개는 것으로써, Vertex가 많이 생기게 됨
-> 비선형 함수의 경우 구간이 충분히 작으면 조각나누어서 선형 함수로 근사치를 구할 수 있음
다만 아직 부족함
-> Screen Space Barycentric Interpolation
-> 스크린 공간에서 질량중심 무게와 실 공간에서 무게중심 사이의 관계를 발견
-> 1. 가장자리 끝점의 world space 좌표
-> 2. 화면 공간의 끝점(world space에 respond하는 좌표)
-> x : 3차원 좌표상 vertex값 / p : 2차원 uv맵에서의 x좌표
-> 3. 3차원 공간상의 edge
-> 삼각형처럼 2개의 값을 이용하고, weight를 이용(사이의 점 표현)
-> 4. 해당 p^w(s)의 화면공간의 위치
-> 위의 점에 해당하는 X,Z,카메라(h)를 보내서 삼각형 모델의 임의의 점 하나를 uv맵 하나의 임의의 점으로 보냄
-> 5. 무게 t가 있는 화면 공간의 동일한 점
-> uv맵 위에서의 value of interpolation
-> 6. 화면 공간의 무게중심 좌표에서 world space까지의 매핑을 계산하기 위해 s 계산
-> s = [a0,a1,a2] / t = uv맵에서의 weight / z = depth값의 차이
결과
2. Proxy Objets texture
=> 분리해서 부착
3. Alising
=> 텍스처를 멀리서 볼때, 왜곡되는것
=> 앞과 뒤의 삼각형을 projection할 때, uv맵에서는 같은넓이를 차지함
=> 가까운것은 여러 point로 표현하나, 먼것은 적은 point로 표현해서 가까운건 oversampling / 먼것은 undersampling
=> MIP Maps
-> UV맵을 여러 크기의 Resolution을 보유하고 있는 Map
-> Pixel 자체를 줄여 Sampling Pixel 갯수에 다라 pixel 자체를 작은 것을 사용(의미있는 값으로 interpolation)
-> 여러개를 가지고 있어 undersampling때의 문제를 해결(이미지가 작아져서 blur된것처럼 보임
=> RIP Maps
-> MIP과는 조금 다르게 X방향으로, Y방향으로, XY둘다 줄인것을 가지고 있는 것(MIP은 XY만 보유)
Transformation (0) | 2023.07.27 |
---|---|
Graphics System (0) | 2023.07.27 |
Ray Tracing (0) | 2023.07.27 |
LOD(Level Of Detail) Frameworks (0) | 2023.07.27 |
변환(transformation) (0) | 2023.02.05 |