1 / 41

Lecture #3

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

dexter
Download Presentation

Lecture #3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

  9. 객 체 • API에서 제공하는 기본 객체 • 점, 선분, 사각형, 다각형, 텍스트 등 • 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();

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

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

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

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

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

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

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

  17. 프랙탈 무늬 사상

  18. 안개효과

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  36. OpenGL API (7) • 자료형(Data Type) • 특정 플랫폼에서 작성된 OpenGL 코드를 다른 플랫폼으로 쉽게 이식하기 위해 OpenGL 고유의 자료형을 정의

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

  38. OpenGL API (9) • 함수 명명 규칙(Naming Convention) • OpenGL API 함수들은 일정한 규칙에 따라 이름이 주어진다 • <라이브러리를 나타내는 접두사> <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형으로 사용한다

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

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

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

More Related