Texture Mapping 2001.7.25 김 성 남 1.

Slides:



Advertisements
Similar presentations
1 Kim, Sung-Ho School of Computer, Information and Communication Engineering Sangji Univ.
Advertisements

Texture Mapping 년 봄학기 5/23/2014 박경신. OpenGL Texturing  OpenGL 에서 텍스쳐 맵핑 (texture mapping) 을 위한 3 단계 텍스쳐 활성화 glEnable(GL_TEXTURE_2D) 텍스쳐 맵핑방법.
장. 텍스쳐 학습목표 텍스쳐의 정의와 종류를 이해한다. 평면 다각형의 텍스쳐 매핑 방법을 이해한다. 파라미터로 표현된 곡면 다각형의 텍스쳐 매핑 방법을 이해한다. 파라미터로 표현할 수 없는 곡면 다각형의 텍스쳐 매핑 방법을 이해 한다. 텍스쳐 매핑에서 에일리어싱이.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
컴퓨터와 인터넷.
학습목표 10장. 조명과 음영 조명과 음영의 차이점을 이해한다. 지역 조명모델과 전역 조명모델의 차이점을 이해한다.
163535/A25002 컴퓨터 그래픽스 Chap 6. Shading Copyright ⓒ 2001 N Baek.
컴퓨터 그래픽스 연구회지 2000년 5월 발표자 : 이영건 날짜 :
Chapter 10. Illumination Models and Surface-Rendering Methods
10장. 조명과 음영 학습목표 조명과 음영의 차이점을 이해한다. 지역 조명모델과 전역 조명모델의 차이점을 이해한다.
Deferred Shading (지연 세이딩)
OpenGL 시작하기.
멀티미디어 처리 강의자료 2.4: 영상 기하학적 처리.
학습목표 10장. 조명과 음영 조명과 음영의 차이점을 이해한다. 지역 조명모델과 전역 조명모델의 차이점을 이해한다.
3장 이미지와 그래픽 3.1 이미지와 그래픽의 기본 개념 3.2 입출력장치 3.3 이미지의 처리와 압축
Entity Relationship Diagram
Chap 9. 텍스쳐(Texture).
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환
Practice - texture mapping
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
OpenGL Programming (II) 3D Graphics Fundamentals
그래픽스 시스템과 모델.
Distillation Filtration: Chromatography:. Distillation Filtration: Chromatography:
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Multimedia Programming 10: Point Processing 5
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
Progress Seminar 선석규.
Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 :
1장 그래픽스 시스템과 모델-이미지 형성, 모델, 구조
Multimedia Programming 06: Point Processing 2
602 LAB FDTD 를 이용한 Acoustic Simulation 지도: 이형원 교수님 차진형.
렌더링.
발명의 명칭 IR LED Auto Control 발명의 목적
C#.
Matrix 및 Rendering 파이프라인
자바 5.0 프로그래밍.
인터넷응용프로그래밍 JavaScript(Intro).
메모리 관리 & 동적 할당.
Draw the basic Geometry Objects
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
ITQ 정보기술자격 국가공인 Excel 2007 Ⅱ 함수- 11회차 강사 : 박영민.
Clipping 이진학.
Chapter 34. Advanced Web Page Options
게임수학 제 7 장 조명.
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
Fucntion 요약.
객체기반 SW설계 팀활동지 4.
Computer Science & Engineering
Canary value 스택 가드(Stack Guard).
MATLAB Image Processing Toolbox
Image Restoration Using MATLAB Image ToolBox Visual Communication Lab
Window, Viewport Window, Viewport.
물리 현상의 원리 TIME MACHINE.
Terrain 김 성 남.
생체 신호의 실시간 디지털 처리 7조 홍윤호( )-1등
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
발표자 : 이지연 Programming Systems Lab.
Halftoning patterns Digital halftoning의 정의 :bi_level printing device & bi_level displays(last print, fax machine…)등의 이진 출력기기에서 연속계 조영상을.
상관계수.
컴퓨터공학과 손민정 Computer Graphics Lab 이승용 교수님
통계학 R을 이용한 분석 제 2 장 자료의 정리.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 4 장 Record.
Texture Mapping Example
9장. spss statistics 20의 데이터 변수계산
수학10-나 1학년 2학기 Ⅱ.부등식의 영역 3. 부등식의 영역에서 최대, 최소(5/5) 부등식 영역 수업계획 수업활동.
The Graphics Process: Summary
7 생성자 함수.
6 객체.
Presentation transcript:

Texture Mapping 2001.7.25 김 성 남 1

Contents Goal 2D Texture Mapping Texture Filtering Mipmap Sphere Mapping Projective Texture Mapping 2

Goal 정교한 물체 표현 개선방법 중의 하나 :Texture Mapping 현재 많이 사용되는 방법 Polygon , computation time , memory 개선방법 중의 하나 :Texture Mapping Simplifying objects + texture mapping 현재 많이 사용되는 방법 3D video game … 3

2D Texture Mapping (1/3) + = 3D object의 surface에 미리 생성해 놓은 texture image를 mapping 한 후 rendering 하는 방법 Texture Image + = 4

2D texture mapping (2/3) 개념적인 계산과정 Texture 좌표계 (2D) Modeling 좌표계 (3D) Window 좌표계 (2D) Surface parameterization 5

2D texture mapping (3/3) problems Texture image의 내용과 그에 관련된 성질들을 어떻게 정의할 것인가? 한장의 image를 rendering하기위해 여러 개의 texture를 사용할 경우 texture image들을 어떻게 하면 효과적으로 다룰 수 있을 것인가? Surface parameterization 과정을 어떻게 정의할 것인가? 각 Pixel에 해당하는 texture color를 어떻게 구할 것인가? 각 Pixel에 대하여 texture color와 object의 base color와 어떻게 혼합할 것인가? 6

2D Texture Mapping 구조 Texturing Rasterization glTexImage1D/2D/3D(*) Pixel Transfer & Image Subset Pixel Stroage glTexImage1D/2D/3D(*) Texture memory Texture states glTexParameter*(*) glEnable(*)/glDisable(*) Texel Generation glTexEnv*(*) (Ct,At) Texture Application Texturing (Cf,Af) Fragment before texturing Fragment after texturing (C,A) (xwd,ywd) Zwd (r,g,b,a) (s,t,r,q) (xwd,ywd) Zwd (r’,g’,b’,a’) (s,t,r,q) 7 Rasterization

GL_BYTE,GL_SHORT,GL_INT,GL_FLOAT,GL_BITMAT,… Texture Image 설정(1/8) Image를 openGL sys’에 맞게 설정 : memory에 저장 Format : main memory에 저장되어있는 texture image data의 저장형식, 각 texel을 구성하는 요소 값 Type : 각 필드의 요소 데이터가 실제로 저장되는 type void glTexImage2D(GLenum target,Glint level,Glint internalFormat,Glsizei width, Glsizei height,Glint border,Glenum format,Glenum type,const Glvoid *texels); GL_RGB,GL_BGR,GL_RGBA, GL_BGRA,GL_RED,GL_GREEN,GL_BLUE, GL_ALPHA,GL_LUMINANCE,GL_LUMINANCE_ALPHA GL_COLOR_INDEX … GL_BYTE,GL_SHORT,GL_INT,GL_FLOAT,GL_BITMAT,… 8

Texture Image 설정(2/8) Pixel Storage module Memory에 존재하는 texture data가 (R,G,B,A)형태의 openGL sys’내부에서 사용되는 형식으로 변환 Format 인자에 대해 어떤 상수값을 설정하건, memory에 저장되어 있는 각 texel 값은 일단 내부적으로 (R,G,B,A) 값으로 변환 GL_RED의 경우, R 채널 값은 main memory에 저장된 값, G,B는 0, 그리고 A는 1 값으로 변환 Piexel Transfer & Imaging Subset module 다음 Pixel 이동 등 프로그래머가 설정한 방식으로 적절히 변환이 되어 texture memory에 올려진다. 9

Texture Image 설정(3/8) internalFormat : texture memory에 올려지는 각 texel이 실제로 어떤 형식으로 구성이 되는 지를 결정 texture image의 texel에 저장될 수 있는 요소 데이터는R,G,B,A,L,I 값 등 38가지의 조합가능 Level : texture image의 LOD 결정인자 내부형식 사용 RGBA 채널 대응 내부요소 GL_ALPHA A A GL_LUMINANCE R L GL_LUMINACE_ALPHA R,A L,A GL_INTENSITY R I GL_RGB R,G,B R,G,B GL_RGBA R,G,B,A R,G,B,A 10

Texture Image 설정(4/8) Texture object & binding Texture image 자체에 대한 정보 + texel 값을 구하는 방식에 대한 모든 정보를 저장하는 일종의 자료구조 glTexImage2D(*) 함수를 반복적으로 호출하면서 매번 texture image를 texture memory에 올리는 것보다 더 빠르게 texture mapping 계산을 수행 void glGenTextures(Glsizei n, Gluint *textureNames); void glBindTexture(Glenum target, Gluint textureName); void glDeleteTexture(Glsizei n,const Gluint *textureNames); 11

void glTexParameterf(Glenum target,Glenum pname,Glfloat param); Texture Image 설정(5/8) Texture states glTexImage2D(*) : mipmap을 포함한 texture 자체에 대한 인자들로 형성, 해상도,경계두께,내부형식 등 glTexParameter*(*) : 현재 fragment의 texture좌표가 주어졌을때, texture color를 계산하는데 영향 void glTexParameterf(Glenum target,Glenum pname,Glfloat param); 상태종류 인자 이름(pname) 사용가능 인자(param) 확대 필터 GL_TEXTURE_MAG_FILTER GL_NEAREST,GL_LINEAR 축소 필터 GL_TEXTURE_MIN_FILTER GL_NEAREST,GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR 랩 모드(s,t,r) GL_TEXTURE_WRAP_S(_T,_R) GL_CLAMP,GL_REPEAT, GL_CLAMP_TO_EDGE 12

void glTexEnvf(Glenum target,Glenum pname, Glfloat param); Texture Image 설정(6/8) Texel Generation module 현재 처리하려는 fragment에 입힐 texture의 color(Ct,At) 를 계산하는 과정 Texel states module과 texture memory에 저장된 data를 이용하여 texel을 생성하는 과정 Texture Application module (Ct,At)와 fragment 기반 color(Cf,Af)이 합성하여 fragment의 새로운 color (C,A)를 구하는 과정 void glTexEnvf(Glenum target,Glenum pname, Glfloat param); 13

Texture Image 설정(7/8) 내부형식 GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ALPHA C=Cf,A=At C=Cf,A=AfAt C=Cf,A=AfAt GL_LUMINANCE C=Lt,A=Af C=CfLt,A=Af C=Cf(1- Lt)+CcLt ,A=Af GL_LUMINACE_ALPHA C=Lt,A=At C=CfLt,A=AfAt C=Cf(1- Lt)+CcLt ,A=AfAt GL_INTENSITY C=It,A=It C=CfIt,A=AfIt C=Cf(1- It)+CcIt ,A=Af (1- It)+AcIt GL_RGB C=Ct,A=Af C=CfCt,A=Af C=Ct,A=Af C=Cf(1- Ct)+CcCt ,A=Af GL_RGBA C=Ct,A=At C=CfCt,A=Af At C=Cf(1-At)+CfAt ,A=At C=Cf(1- Ct)+CcCt ,A=Af At 14

void glTexCoord2f(GLfloat s, Glfloat t); Texture Image 설정(8/8) Texture 좌표의 설정 및 변환 object의 modeling단계에서 vertex 좌표와 normal vector, texture좌표를 같이 설정하는 방식 : general Rendering 계산시 programmer가 설정한 방식으로 각 vertex마다 동적으로 texture좌표를 자동 생성하는 방식 Environment mapping, Projection mapping void glTexCoord2f(GLfloat s, Glfloat t); 15

Example 1.0 t s 16

Texture Filtering(1/5) Problem Pixel을 통하여 보이는 texture image의 영역을 대표하는 color를 어떻게 구할 것인가? Discrete screen space & texture space 사이의 변환을 통한 aliasing 발생을 어떻게 해결할 것인가? Pixel Pixel preimage 역변환 Texture space Screen space 17

Texture Filtering(2/5) Solution Ideal Sampling & Filtering 이용 Screen space -> texture space로의 역변환을 통한 pixel의 preimage 영역을 찾아 이 영역에 대한 적분을 통하여 texture image의 color값을 결정 많은 계산시간 소요, 실시간 rendering에 부적합 Sampling & Filtering 이용 Continous 3D object space <-> Discrete 2D screen space 에서의 sampling & filtering 고려 Discrete 2D texture space <-> Discrete 2D screen space에서의 sampling & filtering 고려 18

Texture Filtering(3/5) Sampling Filtering Texel에 대해서는 중심점 Pixel에 대해서는 중심주변의 점 Filtering Nearest neighbor filter Pixel중심에 대응하는 texture space 영역에서 가장 가까운 texel의 color를 texture color로 선택 Bilinear Interpolation filter 확대 상황에서는 좋은 결과 축소 상황에서는 nearest 비슷 Texel 중심 Pixel 중심 19

Texture Filtering(4/5) 확대와 축소의 경계 확대 축소 texel texel pixel preimage 20

Texture Filtering(5/5) 보완 Average filter Pixel의 preimage 영역의 모든 texel의 color를 평균 이상적인 filter와 가장 근사 (적분 -> 합) Preimage영역의 texel 수에 따라 계산시간의 차이가 발생 -> 실시간 rendering에 부적합 보완 Mipmapping(Trilinear Interpolation filter) 21

Mipmapping(1/3) 라틴어 Multum In Parvo : 좁은 장소에 많은 것을 집어넣음 L.Williams,”Pyramidal Parametrics”,SIGGRAPH 83 에서 제안 Pre-calculation technique 실시간적인 성능을 내기위해 미리 전처리를 통해 필요한 data 생성 Multi-resolution technique Texture image -> s,t축으로 해상도를 반으로 줄여나가는 방법 인접한 texel 4개의 평균값을 이용하여 낮은 해상도 image 생성 Mipmap을 이용하면 texture memory 많이 사용 22

Mipmapping(2/3) Trilinear Interpolation을 이용한 mipmapping sampling point Level k0 texture Level k0 + 1 texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 23

Mipmapping(3/3) Mipmap level 계산 : 정사각형을 통한 preimage 근사 Area 중심 :aliasing 발생 가능성 높음 장축 중심 : Blurring 현상 preimage Area 중심 장축 중심 24

void glTexGenf(GLenum coord,GLenum pname,GLfloat param); Texture 좌표의 자동생성 일반적인 경우 Object에 대한 texture 좌표를 미리 계산 Vertex 좌표를 기술할때 glTexCoord2*(*) 함수를 사용 명시적으로 붙여주는 방식 Texture가 object에 고정이 되는 정적인 상황 Object의 vertex에 대한 texture 좌표를 programmer가 동적으로 계산하는 경우 Object의 vertex 좌표를 사용하여 texture좌표를 생성 Object coordinates 사용하는 방법 Eye coordinates 사용하는 방법 Eye coordinates의 vertex의 normal vector의 방향을 사용하여 texture좌표 생성 void glTexGenf(GLenum coord,GLenum pname,GLfloat param); 25

Sphere Mapping(1/2) Texture 좌표의 자동생성 Eye coordinates의 vertex normal vector를 이용 Environment mapping, specular reflection 등 구현에 사용 Eye coordinates를 기준으로 수행 t ye 1 (s,t) Reflection direction ze n r 1/2 u xe s V : vertex 1/2 1 Sphere map 26

Sphere Mapping(2/2) Sphere mapping을 이용한 Phong shading example Smooth shading Sphere map Sphere map에 의한 highlight Sphere map에 의한 Phong shading 정반사를 제외한 rendering 27

Projective Texture mapping 2D texture image를 3D 공간으로 투사, object의 vertex에서의 texture좌표를 동적으로 생성 Slide projector,spot lighting source,shadow 등의고급 기법을 구현 M.Segal et al,”Fast Shadow and Lighting Effects Using Texture Mapping”,SIGGRAPH 92 제안 Slide projector 효과 Spot 광원 효과 28