Download presentation
Presentation is loading. Please wait.
Published byAnnis Reeves Modified 6년 전
1
이산적 기법들 최 수 미
2
버퍼와 사상 버퍼 (buffers) 프레임 버퍼 깊이 버퍼 비트평면(bitplane), 화소(pixel) 이산적
공간과 깊이에서 제한된 해상도 n x m 인 k 비트 요소들의 메모리 블록 프레임 버퍼 n x m 은 화면 해상도와 일치 k 는 얼마나 많은 색을 표시 깊이 버퍼 k 는 지원할 수 있는 깊이 해상도 비트평면(bitplane), 화소(pixel)
3
사상 알고리즘 (mapping algorithm)
컴퓨터에서 가상의 오렌지를 만들려면 ? 구 (현실감이 떨어짐) 곡면 (보다 많은 제어, 여전히 현실감이 떨어짐) 절차적 모델링 (어느 정도의 무작위성 표현, 많은 다각형 모델) 대안 단순한 모델 -> 상세한 부분은 렌더링 처리 부분으로 추가 사상 알고리즘 (mapping algorithm) 맵을 사용하여 재질 특성과 법선같은 표면 매개변수를 바꿈으로 음영법을 수정
4
사상 알고리즘의 세가지 주요 접근 방법 텍스처 사상 (texture mapping) : 텍스처를 표면으로 사상함으로써 얻어지는 영상을 표면 렌더링의 한 부분으로 규정 융기 사상 (bump mapping) : 실제 오렌지의 융기와 같은 변형을 생성하기 위해 표면의 형상을 왜곡 환경 사상 (environmental mapping) : 반사광을 추적하지 않으면서도 광선 추적된 영상처럼 보이게 함
5
텍스처 사상, 융기 사상, 환경 사상의 공통점 개별 화소의 음영을 바꾸며 음영처리의 한 부분으로 구현
일차원, 이차원 또는 삼차원 디지털 이미지로 저장된 맵에 의존 엘리어싱 오류가 발생할 수 있음
6
텍스처 사상 매개변수형 곡면을 위한 텍스처 맵 텍스쳐 좌표 기하학적 좌표 매개변수 좌표 화면 좌표
7
고려할 점 텍스처 좌표에서 기하학적 좌표로의 맵 결정 텍스처 공간(흔히 사각형 영역)->삼차원 공간의 임의의 영역
예> 사각형을 구에 사상 화소 단위로 렌더링하기 위해 화면 좌표로부터 텍스처 좌표로의 역사상 한 화소의 음영을 결정할 때 텍스쳐 영상의 어떤 점을 사용할 지 결정 점이 아닌 영역에서 영역으로의 사상 (화소에 대한 것) 엘리어싱 문제 발생 가능성 굴곡진 정현파와 같은 무늬의 모아레(moiré) 패턴
8
화소의 전이미지 (preimage) 텍스처 공간 객체공간 화면좌표
9
텍스처 생성에서의 엘리어싱 화소의 중심을 역투영하여 얻어지는 점을 사용하여 텍스처 값을 구함
개선안 : 전이미지 상의 텍스처 맵의 평균에 근거해서 텍스처 값을 할당 (불충분) 규칙적인 텍스처에서 더욱 문제
10
선형 텍스처 사상을 위한 접근 방법 같은 크기의 텍스처 조각들이 신축되어 표면 조각에 맞추어짐
11
이단계 사상을 이용한 접근 방법 1단계 : 구, 원기둥, 입방체와 같은 간단한 삼차원 중간단계 표면으로 텍스처 사상
12
이단계 사상을 이용한 접근 방법 2단계 : 사상된 텍스처를 갖는 중간 단계 표면을 렌더링 되는 표면으로 사상 중간 표면으로
부터의 법선 객체 표면으로 부터의 법선 객체 중심의 사용
13
OpenGL에서의 텍스처 사상 화소 파이프라인과 기하학적 파이프라인
14
Glubyte my_texels[512][512];
glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, my_texels); glTexImage2D(GL_TEXTURE_2D, level, components, width, height, border, format, type, tarray); Component : 맵으로 효과를 주려고 하는 색 성분(RGBA)의 수 (1-4) Level, border : 텍스처에 대한 섬세한 제어 glEnable(GL_TEXTURE_2D); /* 텍스처 사상을 인에이블 */
15
텍스처 좌표를 정점들에 할당 glTexCoord2f(s,t);
16
glBegin(GL_QUAD); glTexCoord2f(0.0, 0.0); glVertex2f(x1, y1, z1); glTexCoord2f(1.0, 0.0); glVertex2f(x2, y2, z2); glTexCoord2f(1.0, 1.0); glVertex2f(x3, y3, z3); glTexCoord2f(0.0, 1.0); glVertex2f(x4, y4, z4); glEnd(); 전체 텍셀 배열을 사용 텍셀 배열의 일부분을 사용
17
(0.0, 1.0) 의 범위를 넘어서는 s 또는 t 값 지정 텍스처가 반복되도록 함
0.0 또는 1.0 값으로 절단. 즉, (0.0, 1.0) 의 범위보다 아래 또는 위의 값에 대해서는 각기 0.0, 1.0 에서의 값을 사용 반복되는 텍스처를 위한 매개변수 설정 glTexParameteri(GL_TEXTURE_WRAP_S, GL_REPEAT); 절단되는 텍스처 GL_CLAMP 를 사용
18
텍스처의 확대나 축소 지정 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 앨리어싱 문제 야기 -> 평균 텍셀값 이용 (보다 나은 이미지) GL_NEAREST -> GL_LINEAR (4개의 가장 가까운 텍셀의 평균) 확대 축소
19
밉맵핑 (mipmapping) 텍셀 배열에 비해서 작은 스크린 공간 영역에 투영되는 객체
OpenGL 은 일련의 축소된 크기의 텍스처 배열 생성을 허용 64x64 배열에 대해서 다음 GLU 함수를 통해 32x32, 16x16, 8x8, 4x4, 2x2, 1x1 배열을 설정 가능 gluBuild2DMipmaps (GL_TEXTURE_2D, 3, 64, 64, GL_RGB, GL_UNSIGNED_BYTE, my_texels); GL 함수를 이용하여 mipmap 들을 자동적으로 설정 glTexparameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
20
텍스처와 음영과의 상호작용 텍스처 사상과 투영과의 관계 텍스처의 색 성분에 음영에서 주어지는 색 성분을 곱함
glTexEnvi(GL_TEX_ENV, GL_TEX_ENV_MODE, GL_MODULATE); GL_MODULATE -> GL_DECAL 으로 바꾸면 텍스처의 색이 객체의 색을 결정 : 전사(decaling) 텍스처 사상과 투영과의 관계 OpenGL은 텍스처 값을 찾기 위해서 화면 공간에서 선형 보간을 사용 직교 투영에서는 선형 사상이 적합하지만, 투시 투영에서는 부적절 glHint(GL_PERSPECTIVE_CORRECTION, GL_NICEST);
21
텍스처 생성 텍스처와 음영과의 상호작용 텍스처 사상과 투영과의 관계 텍스처의 색 성분에 음영에서 주어지는 색 성분을 곱함
glTexEnvi(GL_TEX_ENV, GL_TEX_ENV_MODE, GL_MODULATE); GL_MODULATE -> GL_DECAL 으로 바꾸면 텍스처의 색이 객체의 색을 결정 : 전사(decaling) 텍스처 사상과 투영과의 관계 OpenGL은 텍스처 값을 찾기 위해서 화면 공간에서 선형 보간을 사용 직교 투영에서는 선형 사상이 적합하지만, 투시 투영에서는 부적절 glHint(GL_PERSPECTIVE_CORRECTION, GL_NICEST);
22
환경 사상 방 가운데 있는 반짝이는 금속 공 이 단계 절차 광선 추적에 의한 방법은 계산량이 너무 많음
텍스처 맵을 환경 맵 또는 반사 맵으로 확장함으로써 원하는 반사를 근사하는 이미지를 얻음 예> 색그림판 29, 30 : Pixar 애니메이션 스튜디오의 Geri’s Game, 반사맵이 육면체 상에서 계산 이 단계 절차 중간 투영 표면에 환경의 이미지를 얻음 예> 방의 중간객체는 상자: 벽, 바닥, 천장에 대응되는 여섯 개의 투영 계산 객체 표면에 텍스처 맵을 옮김 환경의 사상 중간 면으로부터의 사상
23
OpenGL을 이용한 환경사상 텍스처 좌표의 자동 생성 이미지 스캐닝 또는 장면 투영을 이용하여 텍스처를 생성
glTexGenfv(GL_S, GL_SPHERE_MAP, 0); glTexGenfv(GL_T, GL_SPHERE_MAP, 0); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T);
24
융기 사상 융기 사상 (bump mapping) 매개변수형 곡면의 법선 교란
표면이 렌더링될 때 표면에서의 법선 벡터를 교란시킴으로써 표면의 외견 상 형상을 변화시킴 법선 교란을 렌더링 동안에 적용할 수 있으면, 부드러운 표면 모델을 사용하면서도 복잡한 표면 모양을 갖도록 렌더링 매개변수형 곡면의 법선 교란 매개변수형 곡면상의 한 점 단위법선 : 편미분 벡터들의 교적 bump function
Similar presentations