제 1 장. 컴퓨터 그래픽스 시스템과 모델 - 3D 컴퓨터 그래픽스 구조 - OpenGL API 개요

Slides:



Advertisements
Similar presentations
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Advertisements

수학을 통해 배우는 IT 과학의 세계 전북대: 한상언 교수.
컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
그래픽 하드웨어.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
OpenGL 시작하기.
Image & Video processing
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
최윤정 Java 프로그래밍 클래스 상속 최윤정
신호처리 실험 (Signal Processing Lab)
모 바 일 게 임 제 작 한국IT전문학교 박재성.
3D Project Cloud Warcraft 박 종 선.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
컴퓨터 프로그래밍 기초 [Final] 기말고사
Open Graphics Library 팀 명 : Spes 송정웅 김정환
그래픽스 시스템과 모델.
독립형 모션제어기 사양 - Catalog (optional) XMC-PO04-MOD
11 장 LAN 기본 개념과 Ethernet LAN
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Visual Basic .NET 처음 사용하기.
Error Detection and Correction
OpenGL.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
LCD 모듈의 특징 LCD 컨트롤러 내장으로 모든 디스플레이 기능을 명령어로 제어 8비트 혹은 4비트로 인터페이스
10장. 예외처리.
11장. 1차원 배열.
제 1장. 멀티미디어 시스템 개요.
3차원 객체 모델링.
Wireless Java Programming
Method & library.
프로그래밍 개요
자바응용.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
제 1장. C++ 시작하기.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
그래픽 모듈 편집.
자율주행 차량용 드라이빙 컴퓨팅 하드웨어 플랫폼 05
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
2장. 변수와 타입.
Clipping 이진학.
웹디자인
4장 기하학적 객체와 변환 - 기하 1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
LabVIEW WiznTec 주임 박명대 1.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
암호학 응용 Applied cryptography
구조체 (Structure).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
AT MEGA 128 기초와 응용 I 기본적인 구조.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
9 브라우저 객체 모델.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
.Net FrameWork for Web2.0 한석수
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
6 객체.
Lecture #6 제 4 장. 기하학적 객체와 변환 (1).
타이머를 시작하려면 슬라이드 쇼 메뉴에서 쇼 보기를 클릭하십시오.
Presentation transcript:

제 1 장. 컴퓨터 그래픽스 시스템과 모델 - 3D 컴퓨터 그래픽스 구조 - OpenGL API 개요 Lecture #3 제 1 장. 컴퓨터 그래픽스 시스템과 모델 - 3D 컴퓨터 그래픽스 구조 - OpenGL API 개요

강의 개요 3D 컴퓨터 그래픽스 시스템 인터페이스 3D 컴퓨터 그래픽스 시스템 구조 OpenGL API 함수 소개 2차원 그래픽 프로그램 작성 3차원 그래픽스의 특수한 경우로 취급 가능 2차원 그래픽 프로그램 예 #1 : 간단한 사각형 도형 그리기 2차원 그래픽 프로그램 예 #2 : 사각형 도형 애니메이션

프로그래머 인터페이스 그래픽스 시스템과의 상호 작용 기존의 프로그램을 이용한 인터페이스 : GUI 인터페이스 페인팅 프로그램의 인터페이스

응용 프로그래머 인터페이스(API) 그래픽 시스템과의 상호 작용 API를 통한 인터페이스 그래픽 시스템에 대한 응용 프로그래머의 모델

응용 프로그래머 인터페이스(API) 프로그래머가 하드웨어에 대한 구체적인 내용을 알 필요가 없도록 해준다 합성 카메라 모형이 OpenGL, PHIGS, GKS-3D 등의 API 들의 기반이 된다 객체, 관측자, 광원, 표면 재질들에 대한 지정 함수가 필요

그래픽스 표준 CORE GKS GKS-3D PHIGS PHIGS+

De facto (industry) 표준들 QuickDraw (Apple) Xlib (X-window) GL (SGI), OpenGL DirectDraw, Direct3D (MS) Renderman (Pixar) Java3D

API의 함수들 3D 그래픽스 시스템은 일반적으로 합성 카메라 모형에 기반하고 있어 다음과 같은 API 함수를 지원한다 객체 보통 정점들의 집합과 객체 타입(정점들 사이의 관계)로 정의 관측자 카메라의 위치지정 : 위치, 방향, 초점거리, 필름면 광원 위치, 세기, 색, 방향성을 지정 재질의 특성 반사 성질, 투과 성질, 확산 성질 등

객 체 API에서 제공하는 기본 객체 OpenGL의 삼각형 정의 glBegin(GL_POLYGON); 점, 선분, 사각형, 다각형, 텍스트 등 API에 따라 곡선, 면을 지원하기도 한다 OpenGL의 삼각형 정의 glBegin(GL_POLYGON); glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0, 1.0, 0.0); glVertex3f(0.0, 0.0, 1.0); glEnd();

관측자 정의 기본적으로 필요한 명세 다양한 방식으로 정의 가능 위치 방향 초점 거리 필름 면 투영 중심의 위치로 기술 투영 중심을 원점으로 하는 좌표계에서의 회전 초점 거리 카메라가 보는 세계의 부분 정의 필름 면 필름면의 높이와 넓이 다양한 방식으로 정의 가능

고전적 관측 대 합성 카메라 관측 고전적 관측 합성 카메라 관측 객체와 관찰자와의 관계를 강조 : pp. 35 그림 참조 객체와 관찰자의 독립성 강조 입방체의 이점 투시

OpenGL의 관측자 명세 glOrtho(….) gluLookAt(cop_x,cop_y,cop_z, at_x, at_y, at_z, ...); gluPerspective(field_of_view, …);

광원 & 재질 특성 광원 재질 특성 광원과 재질 특성은 API가 지원하는 광-재질 상호작용의 모형에 의존적 위치, 세기, 색 및 방향성 등을 지정 단순화를 목적으로 일점 광원(pointer light)와 단색 광원 (monochrome light)을 가정 재질 특성 객체의 성질(속성)을 지정 반사 성질, 투과 성질, 확산 성질 등 광원과 재질 특성은 API가 지원하는 광-재질 상호작용의 모형에 의존적

일련의 이미지들 색 그림판 : pp 219 그림 참조 OpenGL을 이용하여 동일한 객체에 차츰 복잡한 랜더링을 적용 3D 그래픽스와 관련하여 다루게 될 주제를 순서대로 개략적으로 제시 1 : 선 구조 이미지 (wire frame image) 3 : 평면 다각형 (은면 제거 알고리즘이 수행됨) 4 : 광원 사용, 단순 음영법(flat shading) 사용 5 : 세련된 음영법 사용(smooth shading) 6 : 무늬 사상(texture mapping) 사용 7 : 프랙탈(fractals) 8 : 안개 효과 사용

선구조 이미지 평면 다각형 (2차원으로 보임)

광원, 단순 음영법 사용 세련된 음영법 사용

프랙탈 무늬 사상

안개효과

3D 이미지 형성 패러다임 합성 카메라 모형 광원 추적(Ray-tracing) 모형 모델링-렌더링 모형

모델링-렌더링 패러다임 모델링-렌더링 패러다임 모델기 렌더기 모델링과 렌더링을 분리할 수 있다 모델링 : 고도로 대화적, 상세한 이미지 작업 불필요 그래픽 워크스테이션에서 실행 렌더링 : 방대한 계산필요, 계산 전용기계에서 실행 중간파일 모델기 렌더기 The modeling-rendering pipeline

그래픽 시스템 구조 초기 그래픽 시스템 Von Neumann 구조의 범용 컴퓨터 사용 벡터 디스플레이에 기반 주컴퓨터 : 선분의 양 끝점 계산 초기 그래픽스 시스템

디스플레이 처리기 디스플레이 처리기 주컴퓨터는 이미지를 생성하는 명령을 구성하여 디스플레이 처리기에 전달 주사 변환 담당 그래픽 기본 요소를 표시하는 기능 수행 주컴퓨터는 이미지를 생성하는 명령을 구성하여 디스플레이 처리기에 전달 Display-processor 구조

파이프라인 구조 산술 연산의 파이프라인 이미지 생성 과정이 파이프라인 구조에 적합 많은 정점을 비슷한 방식으로 처리

기하 파이프라인 (Geometry Pipeline) 정점집합 변환 절단 투영 래스터화 화소집합 Geometric pipeline

변 환(Transformation) 서로 다른 좌표계 사이의 변환이 필요 행렬로 표현 객체의 좌표계 => 카메라의 좌표계 => 스크린 좌표계 행렬로 표현 일련의 변환은 행렬의 곱셈으로 처리

절 단(Clipping) 모든 이미지 형성 시스템은 전체 세계를 한번에 볼 수 없다 사람 : 화각이 90도 정도 카메라 : 적절한 렌즈를 선택하여 화각을 조절 합성 카메라 모형 : 절단 사각형(Clipping Retangle) 정점들을 이용하여 절단 연산이 가능하므로 변환연산과 함께 파이프라인에 포함시킬 수 있다 절단 기능을 일련의 파이프라인 절단기로 분할 가능

투 영(Projection) 3차원 객체  2차원 객체로 투영 투영 행렬을 정점에 곱함으로써 수행 가능한 나중에 투영을 수행 보다 정확한 이미지를 얻을 수 있도록

래스터화(Rasterization) 투영된 객체들을 프레임 버퍼 내의 화소들로서 표현 래스터화 과정은 7장에서 제시

성능에 관한 점들 두 가지 종류의 처리 성능 기하학적 처리 후반부 처리(back-end processing) 파이프라인 구조가 적합 후반부 처리(back-end processing) 프레임 버퍼 내의 비트들을 직접 조작 비트 블록의 빠른 이동 필요 성능 파이프라인 내에서의 얼마나 빨리 기하학적 요소를 이동 프레임 버퍼내의 화소를 1초에 얼마나 많이 변경

OpenGL API (1) 컴퓨터 그래픽스 시스템 응용 프로그래머에게는 블랙 박스로 간주 그래픽스 하드웨어와 하드웨어 드라이버로 구현되거나 하나의 소프트웨어 시스템으로 구현 사용자 프로그램 그래픽스 시스템 입출력 장치 함수 호출 출력 데이터 입력

OpenGL API (2) OpenGL API 그래픽스 하드웨어에 대한 소프트웨어 인터페이스 SGI사가 자사의 GL API를 다른 하드웨어나 운영체제에 이식하기 쉽도록 개발된 개방형(open) API 마이크로소프트사는 OpenGL API를 윈도우 환경에서 동작하도록 소프트웨어(library)로 구현하여 제공 SGI사에서도 windows용 OpenGL Library 제공 Mesa 3D Library 300 여 개의 API 함수들로 구성 클라이언트-서버 모델(생성-표시) 플랫폼에 독립적 하드웨어와 운영체제 시스템에 독립적

OpenGL API (3) OpenGL 구현 : 기본 구현(Generic Implementation) 소프트웨어적인 구현 어플리케이션 프로그램 OS 서비스 I/O 서비스 GDI OpenGL Software Rasterizer 디스플레이/윈도우 시스템

OpenGL API (4) OpenGL 구현 : 하드웨어 구현(H/W Implementation) 어플리케이션 프로그램 OS 서비스 I/O 서비스 GDI OpenGL 하드웨어 드라이버 디스플레이/윈도우 시스템

OpenGL API (5) OpenGL 라이브러리 구성 GL : 기본 라이브러리 GLU : GL 보다 상위 객체, 기능 지원 (U = utility) GLUT : 윈도우 시스템과의 인터페이스 (UT = utility toolkit) OpenGL 응용 프로그램 GLU GL GLUT GLX Xlib, Xtk 프레임 버퍼 X-윈도우 시스템 환경에서의 OpenGL 라이브러리 구성

OpenGL API (6) 플랫폼 독립성 윈도우 관리, 파일 입출력, 사용자와의 상호작용 등 하드웨어나 운영체제에 종속적인 기능에 대한 API는 지원하지 않는다 GLUT(OpenGL Utility Toolkit) 윈도우 시스템과의 인터페이스 하드웨어나 운영체제와 관련된 기능을 지원하는 라이브러리 윈도우 생성 및 관리, 팝업 메뉴 지원, 조이스틱 지원 등 현재 SGI사가 GLUT version 3.7을 지원 (http://reality.sgi.com/opengl/glut3/glut3.html)

OpenGL API (7) 자료형(Data Type) 특정 플랫폼에서 작성된 OpenGL 코드를 다른 플랫폼으로 쉽게 이식하기 위해 OpenGL 고유의 자료형을 정의 OpenGL에서 자료형 내부 표현 방식 C 언어 자료형 리터럴 접미사 Glbytes 8-bit integer Signed char b Glshort 16-bit integer Short s Glint, Glsizei 32-bit integer long l Glfloat, Glclampf 32-bit floating point float f Gldouble, Glclampd 64-bit floating point double d Glubyte, Glboolean 8-bit unsigned integer unsigned char ub Glushort 16-bit unsigned integer unsigned short us Gluint, Glenum 32-bit unsigned integer unsigned long ui GLbitfield

OpenGL API (8) 자료형(Data Type) 포인터 및 배열은 C 언어에서 정의하는 것과 동일하다 e.g: GLshort shorts[10]; GLdouble *doubles[10];

OpenGL API (9) 함수 명명 규칙(Naming Convention) <라이브러리를 나타내는 접두사> <command를 의미하는 어근><인자의 개수-옵션><인자의 타입-옵션> 함수명을 통해 소속된 라이브러리 종류, 함수의 기능, 전달받는 인자의 개수 및 타입을 알 수 있다 예: glColor3f(0.5f, 0.5f, 0.5f); glRectf(100.0f, 150.0f, 150.0f, 100.0f); glCreateWindow(“Sample”); OpenGL에서는 기본적으로 실수형 리터럴을 float형 (single-precision floating point type)로 정의한다 Windows C/C++ 환경에서는 실수형 리터럴은 double형으로 사용한다

OpenGL API (10) OpenGL API 함수의 그룹 기본 요소 함수 : 점, 선분, 다각형, 문자열 등 속성 함수 : 색, 선의 두께, 글자체 등 관측함수 : 합성 카메라 설정 변환 함수 : 회전, 이동, 크기 변환 등 객체 변환 입력 함수 : 키보드, 마우스 등의 입력 처리 제어 함수 : 윈도우 시스템과의 통신, 초기화, 에러 처리 등

2D CG 프로그램 #1 간단한 사각형 도형 그리기

2D CG 프로그램 #2 사각형 애니메이션 그리기