정지성 Chung-buk National University, Korea

Slides:



Advertisements
Similar presentations
Company 사용자 인터페이스와 멀티미디어 2006 년 1 학기 컴퓨터의 개념 및 실습 Ver. 1.1.
Advertisements

영남대학교 박 진 호 정보디스플레이.
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
디지털 이미지와 컴퓨터그래픽스 첨단영상대학원 박경주 교수,
1 치과 방사선학의 원리. 2 학습할 내용 1. X-rays 란 ? 2. X-rays 는 어떻게 만들어지는가 ? 3. X-ray does 를 어떻게 조절할 것인가 ? 4. X-rays 를 다룰 때 주의해야 할 점은 무엇인가 ? 5. Digital X-ray 란 무엇인가.
사용자 인터페이스와 멀티미디어 2006년 2학기 컴퓨터의 개념 및 실습.
Vision System Lab, Sang-Hun Han
2.1 The Sierpinski Gasket.
Computer Graphics 한신대학교 컴퓨터공학부 류승택 2017년 2학기.
Implement of Input and Interaction
Computer Graphics 한신대학교 컴퓨터공학부 류승택 2015년 2학기.
OpenGL Programming (III) 1. Drawing in 3D 2. Manipulating 3D Space
디지털 영상처리 목포과학대학 방사선과 오 태 석.
그래픽 하드웨어.
하드웨어 9 : Monitor.
OpenGL 실습 1주차.
3.1 그래픽스/영상 데이터 형 3.2 널리 사용되는 파일 형태
OpenGL 시작하기.
LCD 디스플레이 구미대학교 컴퓨터정보전자과.
3장 이미지와 그래픽 3.1 이미지와 그래픽의 기본 개념 3.2 입출력장치 3.3 이미지의 처리와 압축
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
제8장 주변장치.
Virtual Reality Introduction HyoungSeok Kim
: Korea University / Physics / B. Sc.
02장 ㅎㅎ 디지털 영상 빛과 색, 시각 컬러 모델 디지털 영상의 생성 디지털 영상의 종류 한빛미디어(주)
Chapter 12. Color Models and Color Applications
Chapter 12. Color Models and Color Applications
학습목표 7장. 투상변환과 뷰포트변환 평행투상과 원근투상의 차이점을 이해한다. 가시부피 설정방식을 이해한다.
학습목표 7장. 투상변환과 뷰포트변환 평행투상과 원근투상의 차이점을 이해한다. 가시부피 설정방식을 이해한다.
OpenGL Programming (II) 3D Graphics Fundamentals
S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만
Multimedia Programming 06: Point Processing3
2장. 그래픽 하드웨어 학습목표 그래픽 출력장치의 일반적인 작동원리를 이해한다.
학습목표 2장. 컴퓨터 하드웨어 그래픽 출력장치의 일반적인 작동원리를 이해한다.
Sang Il Park Sejong University
그래픽스 시스템과 모델.
Chapter 1 디지털 영상처리의 개념.
제 1 장. 컴퓨터 그래픽스 시스템과 모델 - 3D 컴퓨터 그래픽스 구조 - OpenGL API 개요
이미지 및 그래픽.
8장. 가시성 판단 학습목표 후면제거의 정의와 처리방법을 이해한다. 절단작업의 정의와 처리방법을 이해한다.
입력장치 입력장치란 사용자가 원하는 문자, 그림, 음성 및 동영상 등의 데이터를 특정한 목적으로 처리하기 위해 컴퓨터로 전달하는 장치를 말한다. 키보드, 마우스, 스캐너, 자기잉크문자 판독기, 광학문자 판독기, 광학마크 판독기, 라이트 펜, 바코드 판독기, 카드 판독기,
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
2장. 그래픽 하드웨어 학습목표 그래픽 출력장치의 일반적인 작동원리를 이해한다.
openGL Project 결과보고서 야구 시구 시뮬레이션
제 2 장 변수와 상수.
18년 11월 1일 디스플레이.
Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 :
1장 그래픽스 시스템과 모델-이미지 형성, 모델, 구조
Matrix 및 Rendering 파이프라인
Color, Form, Depth, and Movement
버퍼 (Buffer).
Computer Graphics OpenGL 설치 및 설정
Raster Scan Display 1970년대 출현. TV기술에서 발달.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Draw the basic Geometry Objects
LCD Controller Colorbar
1) 디스플레이(Display)는 무엇인가 ?
Introduction to Programming Language
Chapter 4 컬러( COLOR ).
6장 컬러 6.1 색 6.2 RGB 컬러 6.3 컬러 모델들 6.4 채널과 컬러 보정 6.5 컬러의 일치 멀티미디어시스템
6장 컬러 6.1 색 6.2 RGB 컬러 6.3 컬러 모델들 6.4 채널과 컬러 보정 6.5 컬러의 일치 멀티미디어시스템
DISPLAY.
>> Ⅲ. Web Design Tool 및 특성
OpenGL Introduction 컴퓨터 그래픽스 김 창 헌.
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
혼색 color mixture.
[색채지각 ] Color Perception.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
Ray Casting 발표자 : 박 경 와
Lecture #6 제 4 장. 기하학적 객체와 변환 (1).
Presentation transcript:

정지성 2011. 03. 07 Chung-buk National University, Korea 저수준 렌더링 정지성 2011. 03. 07 Chung-buk National University, Korea

파이프라인의 개념도 2010-12-18

렌더링 원시타입 기하학 원시타입 포인트, 라인, 삼각형, 사각형, 폴리곤 but, 하드웨어 가속을 위한 3D엔진에서는 삼각형만 유일한 원시타입 Why? 세 개의 포인트는 항상 동일한 평면을 구성하기 때문에 2010-12-18

Raster system pixel : picture element raster : an array of pixels frame buffer : pixel 저장용 memory area 바둑판 모델 raster image 2010-01-28

Raster system 1:1 대응 관계 y for (y = 0; y < LINES; y++) for (x = 0; x < PIXELS; x++) display one pixel; display processor x 화면 출력 frame buffer 비디오 카드 2010-01-28

Output Devices CRT : cathode-ray tube 음극선관 raster system frame buffer frame buffer의 모든 pixel을 CRT에서 순서대로 출력 frame buffer (in memory) 2010-01-28

Output Devices LCD : Liquid Crystal Display, 전압에 따른 액정의 배열을 변경으로 색상을 표현 frame buffer (in memory) 2010-01-28

Output Devices PDP : Plasma Display Panel, 대형 디스플레이에 사용, 방전의 원리 를 이용하여 색상을 구현 frame buffer (in memory) 2010-01-28

Graphics Architecture Modeling-Rendering Paradigm 가장 간단한 graphics architecture modeler, renderer 가 별도의 program 예 : Pixar’s RenderMan Interface modeler / renderer 연결은 file 로 되어 있음. AutoCAD, 3DS, MAYA, etc. RenderMan, BMRT, etc. 2010-01-28

Graphics Architecture Single CPU Model 초기의 computer 에서 사용 CPU 에 너무 많은 부하가 걸린다 Intel x86 : SSE (streaming SIMD extension) single CPU model을 위한 지원책 2010-01-28

Graphics Architecture Display Processor Model DPU : display processor graphics 처리 전용의 CPU를 추가 pipeline architecture로 넘어가는 과도기 2010-01-28

Graphics Architecture Pipeline Architecture 가장 진보된 형태 VLSI 기술의 발달로 가능 SGI (Silicon Graphics Inc.) IRIS series ,… , nVIDIA GeForce chips graphics 처리를 몇 단계로 나누어서 각각을 별도의 VLSI chip이 처리 2010-01-28

Graphics Architecture Pipeline Architecture transformation 좌표 변환을 위한 4×4 matrix multiplication clipping projection plane 상에서 불필요한 부분 제거 projection 3D object  2D image 로의 mapping rasterization image 를 frame buffer에 저장하는 과정 2010-01-28

Images: Physical and Synthetic 궁극적으로는 real world를 simulate camera 또는 human visual system이 어떻게 작동하는 지를 그대로 simulate 주로, OpenGL에서는 camera의 정보를 통해 simulate real world  3차원 공간 물체들  object Camera  viewer 2010-01-28

Images: Physical and Synthetic Camera System computer graphics : 3D  2D 로의 mapping object : 3D viewer : 3D (= camera) image : 2D (camera의 film) object viewer image 2010-01-28

Images: Physical and Synthetic Camera System with a light source light : 3D 에서 정의됨 light source light  object  viewer object의 표면 결정 light  object  shadow 그림자 생성 2010-01-28

Images: Physical and Synthetic Light, Optics light : electro-magnetic radiation light, color 는 modern optics에서 해석 graphics 에서는 대부분 geometric optics 사용 2010-01-28

The Human Visual System rod (간상체 杆狀體) : night vision cones (원추체 圓錐體) : day vision human visual system back-end에 brain 이 있기 때문에, simulation 거의 불가능… 반응 곡선 2010-01-28

The Pinhole Camera 바늘 구멍 사진기 가장 간단한 geometric model (x, y, z) : 3D point (xp, yp, zp) : projection 2010-01-28

The Pinhole Camera 용어정리 projection of the point (x, y, z) (xp, yp, –d) : film 상의 좌표 FOV : field of view (= angle of view) 화면을 보는 최대각 DOF : depth of field focus 가 맞는 거리 pinhole camera는 infinite DOF 2010-01-28

The Synthetic-Camera Model graphics 에서 사용하는 camera model object 정의는 viewer와는 독립적 object 정의 function을 별도로 독립 image 생성 시에는 trigonometry 계산 필요 projection plane film을 center of projection 보다 앞으로 2010-01-28

The Synthetic-Camera Model Projection plane, Clipping window projection plane : 계산의 편의 clipping rectangle projection plane 상에서 실제로 보이는 부분 2010-01-28

Color Model Light red yellow green blue violet electromagnetic wave AM 흔히 가시광선(visible light)를 의미 104 106 108 1010 1012 1014 1016 1018 1020 AM FM microwave infrared visible ultraviolet X-ray frequency (Hz) red yellow green blue violet 2010-01-28

Color Model Color C(λ) : wave length에 대한 energy distribution C(λ) 에 따라, color 결정 additive color model C(λ) 끼리 더할 수 있음 three-color theory C = T1 R + T2 G + T3 B 2010-01-28

Color Model Human Visual System cones : red, green, blue 에 민감하게 반응 sensitive curve Si(λ) : wavelength에 따른 반응 정도 brain perception values three-color theory의 기본 이론 (Ared, Agreen, Ablue) 값들이 같으면, 같은 color로 인식 2010-01-28

Color Model Color Model color model color gamut color를 computer H/W, S/W에서 표현하는 방법 용도에 따라, 다양 : RGB, CMY, YIQ, CIE, … color gamut 특정 color model 이 생성 가능한 모든 color color solid (= color cube) color model 에서 흔히 three primary colors 사용 three primary color에 의한 3차원 cube color gamut 표현 가능 2010-01-28

Color Model RGB color model Green Red Blue C M Y Red, Green, Blue tri-stimulus theory 눈에 가장 민감한 3가지 색상 RGB cube : 각각이 0 ~ 1 까지 Green Red Blue C M Y 2010-01-28

Color Model CMY, CMYK color model hard copy 기계에서는 잉크 사용 subtractive system 감산 색계 흰 종이 위에 cyan, magenta, yellow 사용 CMYK color model : K (black) 을 첨가 이론상, cyan + magenta + yellow = black 실제로는 dark gray 해결책 : black(K) ink를 별도로 Yellow Magenta Cyan G B R 2010-01-28

Color Model RGB vs CMY <RGB color system> additive primaries 더하면 밝아진다 monitor 기준 형광 물질로 R, G, B 사용 graphics는 주로 RGB 기준 <CMY color system> subtractive primiaries 더하면 어두워진다 printer 기준 ink로 C, M, Y 사용 2010-01-28

Color Model Direct color system 기본적인 video card 구조 3개의 전자총, 3개의 frame buffer frame buffer 마다, pixel 당 n bit 할당 2n × 2n × 2n colors = 23n colors 3n can be 8, 12, 24, … 3n = 24 : true color system 2010-01-28

Color Model Direct color system OpenGL functions void glColor*( ); 3n 값은 system 마다 틀리다 color 설정은 RGB cube 기준 red, green, blue 모두 0.0 ~ 1.0 void glColor*( ); void glColor3f(GLclampf red, GLclampf green, GLclampf blue); 현재 색상 정의 GLclampf : 0.0 보다 작으면 0.0, 1.0보다 크면 1.0 see OpenGL manual 2010-01-28

Color Model RGBA color model void glColor4f(red, green, blue, alpha); RGB + A (alpha channel) alpha channel 은 opacity value : image 합성에 사용 A = 1.0 이 보통의 경우 void glColor4f(red, green, blue, alpha); void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); clear color 설정 (= background color) void glClear(GLbitfield mask); mask = GL_COLOR_BUFFER_BIT 이면, frame buffer 전체를 clear color로 2010-01-28

Color Model Indexed color system frame buffer size 를 줄이는 방법 color lookup table (LUT) (= palette) 23m bit 로 color 값 2k 개를 저장 frame buffer : k bit index 값 저장 23m color 중에서 2k 개만 동시 표현 color LUT 2010-01-28

Color Model Indexed color system why indexed color system ? image 표현에 필요한 frame buffer size 축소 image file format에서 사용 : GIF, BMP, … OpenGL functions LUT의 setting은 window system / GLUT 가 담당 void glIndex*(…); current color를 LUT의 해당 index로 설정 void glutSetColor(int index, GLfloat red, green, blue); LUT의 해당 index를 새로운 color로 2010-01-28

OpenGL설치 및 Console program 구조 OpenGL Library를 다운 강의자료 다운 OpenGL/GL : C:\Program Files\Microsoft Visual Studio 9.0\VC\include 로 복사 OpenGL/LIB : C:\Program Files\Microsoft Visual Studio 9.0\VC\lib로 복사 OpenGL/DLL : C:\Windows\System32로 복사 2010-01-28

OpenGL설치 및 Console program 구조 The Sierpinski Gasket 예제 문제로 사용 원래, Fractal geometry 에서 정의 만드는 방법 삼각형을 그린다. 삼각형 내부에 random하게 점 Pi 를 선택, 출력 random 하게 꼭지점 중의 하나 Vi 선택 Vi 와 Pi 의 중점을 Pi+1 로 선택, 출력 위 과정을 반복 2010-01-28

OpenGL설치 및 Console program 구조 The Sierpinski Gasket 전체 구조 void main(void) { initialize_the_system( ); for (some_number_of_points) { pt = generate_a_point( ); // 좌표 계산 display_the_point( pt ); // 출력 } cleanup( ); } 제일 먼저 할 일 ? 점을 어떻게 출력할 것인가? 2010-01-28

OpenGL설치 및 Console program 구조 Pen-Plotter Model pen-plotter 2D 종이 위에 펜을 움직여서 출력 moveto(x, y); 정해진 위치로 펜을 이동 lineto(x, y); 정해진 위치까지 선분 출력 가장 오래된 graphics output model 장점 : 간단. 2D 종이, 2D 화면에 적합한 model printer 용 언어, 초기 graphics system 에서 사용 PostScript, PDF, LOGO, GKS, … 단점 : 3D model 에는 부적합 2010-01-28

OpenGL설치 및 Console program 구조 2D in a 3D Model 2D 는 3D의 특별한 경우이다 3D 좌표 : (x, y, z) 2D로 해석할 때는 z = 0 : (x, y, 0) 간단하게 : (x, y) 3D space 2D plane (z = 0) x y z 2010-01-28

OpenGL설치 및 Console program 구조 Vertex space 상의 위치 1개 graphics 에서는 2D, 3D, 4D space 사용 표기법 : column vector geometric objects point : vertex 1개로 정의 line segment : vertex 2개로 정의 triangle : vertex 3개로 정의 point 와 헷갈리지 말 것 vertex triangle 2010-01-28

OpenGL설치 및 Console program 구조 Vertex 정의 in OpenGL OpenGL 에서 vertex 를 정의하는 함수 glVertex[n][t][v](…); n : number of coordinates n = 2, 3, 4 t : coordinate type t = i (integer), f (float), d (double), … v : vector or not v 가 붙으면, vector (= array) form Ex) glVertex2i(2, 3), glVertex3f(1.5, 2.3, 3.0), GLdouble vertex[3] = { 1, 2, 3 }; glVertex3dv(vertex); 모든 OpenGL 함수는 gl 로 시작 2010-01-28

OpenGL설치 및 Console program 구조 Vertex 정의 in OpenGL suffix data type C-language OpenGL type b 8-bit integer signed char GLbyte s 16-bit integer short GLshort i 32-bit integer int / long GLint, GLsizei f 32-bit floating pt. float GLfloat, GLclampf d 64-bit floating pt. double GLdouble, GLclampd ub 8-bit unsigned int unsigned char GLubyte, GLboolean us 16-bit unsigned int unsigned shrot GLushort ui 32-bit unsigned int unsigned int / GLuint, GLenum, unsigned long GLbitfield 2010-01-28

OpenGL설치 및 Console program 구조 Object 정의 in OpenGL geometric object 의 정의 vertex가 여러 개 모여서 하나의 object glBegin(TYPE); glVertex*(…); glVertex*(…); … /* 다른 함수도 가능 */ glEnd( ); 사용 예 glBegin(GL_LINES); glVertex2f(x1, y1); glVertex2f(x2, y2); glEnd( ); 2010-01-28

OpenGL설치 및 Console program 구조 Object-oriented Paradigm graphics program들은 object-oriented paradigm에 적합 Java3D : fully object-oriented library Point3 old(2, 1, 3); Vector3 vec(1, 0, 0); Point3 new = old + vec; OpenGL : not object-oriented ! C-based library 대안은 array 뿐 typedef GLfloat Point2[2]; Point2 p = { 2, 3 }; … glVertex2fv(p); 2010-01-28

OpenGL설치 및 Console program 구조 Sierpinski gasket Algorithm void display( void ) { point2 vertices[3]={{0.0,0.0},{250.0,500.0},{500.0,0.0}}; /* A triangle */ point2 p ={75.0,50.0}; /* An arbitrary initial point inside triangle */ int i, j, k; for (k=0; k<5000; k++) { j=rand( ) % 3; /* pick a vertex at random */ /* Compute point halfway between selected vertex and old point */ p[0] = (p[0] + vertices[j][0]) / 2.0; p[1] = (p[1] + vertices[j][1]) / 2.0; /* plot new point */ glBegin(GL_POINTS); glVertex2fv(p); glEnd( ); } glFlush( ); /* flush buffers */ old (p[0], p[1]) (vertices[j][0], vertices[j][1]) new (p[0], p[1]) 2010-01-28