컴퓨터그래픽스응용 (Computer Graphics...
Transcript of 컴퓨터그래픽스응용 (Computer Graphics...
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
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)시간의 흐름에 따라 변화를 시뮬레이션
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)
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)
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 실내 디자인
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
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)
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
강의 교재
컴퓨터 그래픽스 배움터
최윤철, 고견, 임순범
생능출판사
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
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 라이브러리 이용
동영상 제작 후 제출
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])
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
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
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
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
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
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);
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)
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 );
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;
}
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
);