컴퓨터그래픽스응용 (Computer Graphics...

21
Computer Graphics App. Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga 컴퓨터 그래픽스 응용 (Computer Graphics App.) August 30, 2006 Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga 컴퓨터 그래픽스 (1) 정의 컴퓨터를 이용하여 영상을 제작하는 기술 예제 광고: Milka Chocolate (Tippette Studio) Downhill Eagle

Transcript of 컴퓨터그래픽스응용 (Computer Graphics...

Page 1: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Computer Graphics App.

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

컴퓨터 그래픽스 응용(Computer Graphics App.)

August 30, 2006

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

컴퓨터 그래픽스 (1)

정의컴퓨터를 이용하여 영상을 제작하는 기술

예제광고: Milka Chocolate (Tippette Studio)

Downhill Eagle

Page 2: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

컴퓨터 그래픽스 (1)

정의컴퓨터를 이용하여 영상을 제작하는 기술

예제광고: Milka Chocolate (Tippette Studio)

영화: Batman & Robin (Buf Campagine)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

컴퓨터 그래픽스 (2)

이미징 (Imaging) – 2차원 이미지 표현

모델링 (Modeling) – 3차원 오브젝트 표현

렌더링 (Rendering) 3차원 모델들로부터 2차원 이미지 생성

애니메이션 (Animation)시간의 흐름에 따라 변화를 시뮬레이션

Page 3: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

이미징

예술적 이미지를 생성

와핑 (Warping) 합성(Compositing)

경계선 검출 (Edge Detection)

모핑 (Morphing, Metamorphosis)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

모델링

3차원 모양을 묘사하고 디자인

폴리곤(Polygon)

서브디비젼(Subdivision)

프랙탈(Fractal)

NURBS CSG

Blobby

지형(Terrain)

Page 4: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

렌더링

빛의 움직임을 시뮬레이션 하여 이미지 형성

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

애니메이션

움직임을 표현하고 제어

물리기반당구 시뮬레이션

모션 캡쳐 시스템(Motion Capture System)

Page 5: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

컴퓨터 그래픽스의 활용

CAD (Computer Aided Design)

시뮬레이션 (Simulation)

컴퓨터 아트 (Computer Art)

엔터테인먼트 (Entertainment)

데이터 시각화 (Data Visualization)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

CAD

건축 공학을 위한 그래픽 시스템

빌딩, 자동차, 비행기, 기계 등의 디자인

AutoCAD 2002 실내 디자인

Page 6: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

시뮬레이션

교육적인 목적을 위해 물리적 또는 경제적인다양한 상황의 모델을 컴퓨터로 생성

비행 시뮬레이터(Flight Simulator)

화성 탐사 시뮬레이터(Mars Rover Simulator)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

컴퓨터 아트

예술가들을 위한 그래픽스

MetaCreations Painter

Page 7: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

엔터테인먼트

영화, 게임, 가상 현실 등을 위한 그래픽스

파이널 판타지 온라인 게임

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

데이터 시각화

과학, 공학, 또는 의학 데이터의 가시화를 위한그래픽스

의학 이미지 (Medical Image)성운 (Nebula)

Page 8: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

강의 목적 및 개요

3차원 컴퓨터 그래픽스의 이해

모델링

렌더링

애니메이션

그래픽 라이브러리 사용 – OpenGL

3차원 컴퓨터 그래픽스의 활용게임, 시뮬레이션 또는 과학적 가시화 제작

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

강의 교재

컴퓨터 그래픽스 배움터

최윤철, 고견, 임순범

생능출판사

Page 9: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

참고서

Computer Graphics with OpenGL (3rd Edition)

Donald Hearn and Pauline Baker

Prentice Hall, 2003

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

강의 계획

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

AUG 30, 31

SEP 06, 07

SEP 13, 14

SEP 20, 21

SEP 27, 28

OCT 04, 05

OCT 11, 12

OCT 18, 19

OCT 25, 26

NOV 01, 02

NOV 08, 09

NOV 15, 16

NOV 22, 23

NOV 29, 30

DEC 06, 07

DEC 13, 14

3차원 컴퓨터 그래픽스의 소개

OpenGL을 이용한 그래픽스 프로그래밍

3차원 그래픽스의 기하변환

3차원 객체 모델링: 다각형 및 곡면

3차원 객체 모델링: 계층적 모델링

중간 고사

컴퓨터 애니메이션: 키프레임 애니메이션

절차적 그래픽스 기법

기말 과제 발표

기말 고사

Chapter 1

Chapter 3

Chapter 7

Chapter 8

Chapter 8

Chapter 11

Chapter 12

컴퓨터 애니메이션: Dynamics & 모션 캡쳐

컴퓨터 애니메이션: Inverse Kinematics Chapter 12

Chapter 12

3차원 그래픽스의 뷰잉

조명 모델

Chapter 7

Chapter 10

추석

다각형 렌더링 및 고급 렌더링 기법 Chapter 10

Page 10: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

평가 방법

필수 조건2/3 이상 출석

중간/기말 고사, 모든 과제 제출

출석 및 퀴즈

중간 고사

기말 고사

10%

40%

50%

매주 실습

개인 과제 (1~2개)

기말 과제 (2인 1조)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

기말 과제 (1)

주제3차원 컴퓨터 그래픽스 활용

시뮬레이션, 게임, 과학적 가시화

예) 3차원 게임, 우주, 바닷속, 하늘 비행, 박물관 가상관람, 실내 인테리어, 인체 탐구, 등

방법1인 또는 2인 1조

OpenGL 라이브러리 이용

동영상 제작 후 제출

Page 11: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

기말 과제 (2) – 2003학년도 수업

3D 당구3D 당구 3D 볼링3D 볼링

가상 모델 하우스가상 모델 하우스 When I fall in desertWhen I fall in desert

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

연락처

수업 홈페이지http://www.hallym.ac.kr/~sunkim/teach/2006/cga/

담당 교수김선정 ([email protected])

조교이정모 ([email protected])

Page 12: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

연습 문제

윈도우 프로그램 실행 후, 모든 코드 해석해 오기(다음 시간에 질문할 예정)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

MS Visual C++ 6.0

Page 13: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

File New

1

2

3

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

New Win32 Application

Page 14: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

New Win32 Application

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

ClassView

Page 15: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

FileView

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

File New

1

2

Page 16: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

New C++ File

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

Hello

Page 17: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

“main.cpp”#include <windows.h>

HWND MyMWindowHandle = 0;

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR, intnShowCmd )

{// Create the main window

// Main message loop

}

LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )

{

}

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

WNDCLASS와 등록

// Registers the window class

WNDCLASS wc;

wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = (WNDPROC)WndProc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );wc.hCursor = LoadCursor( 0, IDC_ARROW );wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );wc.lpszMenuName = 0;wc.lpszClassName = szClassName;

RegisterClass(&wc);

Page 18: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

MSDN Library (1)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

MSDN Library (2)

Page 19: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

MSDN Library (3)

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

윈도우 만들기와 보여주기

// Create the main window

MyMWindowHandle = CreateWindow( szClassName,

"Hello",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

0,

0,

hInstance,

0 );

if( !MyMWindowHandle )

return false;

ShowWindow( MyMWindowHandle, nShowCmd );

UpdateWindow( MyMWindowHandle );

Page 20: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

메시지 루프

// Main message loop

MSG msg;

while( GetMessage( &msg, 0, 0, 0 ) )

{

TranslateMessage( &msg );

DispatchMessage (&msg );

}

UnregisterClass( szClassName, wc.hInstance );

return msg.wParam;

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

윈도우 프로시저

LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )

{switch( msg ) {case WM_LBUTTONDOWN:

MessageBox( 0, "Hello, World!!!", "Hello", MB_OK );break;

case WM_KEYDOWN:if( wParam == VK_ESCAPE ) {

DestroyWindow( MyMWindowHandle );}break;

case WM_DESTROY:PostQuitMessage( 0 );break;

default:return DefWindowProc( hWnd, msg, wParam, lParam );

}return 0;

}

Page 21: 컴퓨터그래픽스응용 (Computer Graphics App.)graphics.hallym.ac.kr/teach/2006/cga/src/00intro.pdf3차원컴퓨터그래픽스 활용 시뮬레이션, 게임, 과학적가시화

Sun-Jeong Kim http://www.hallym.ac.kr/~sunkim/teach/2006/cga

MessageBox 함수

hWnd – 소유주 윈도우의 핸들 (null 가능)

lpText – 메시지 상자에 넣을 텍스트

lpCaption – 메시지 상자의 제목에 넣을 텍스트

uType – 메시지 상자의 스타일 (MB_OK, MB_OKCANCLE, MB_YESNO, MB_ICONINFORMATION, MB_ICONQUESTION, …)

리턴 값 – IDOK, IDCANCLE, IDYES, IDNO, …

int MessageBox (HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType

);

int MessageBox (HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType

);