서울여자대학교 컴퓨터 그래픽스 전공 수업
Computer Graphics에는 캐드 , 캠, 가상현실, 애니메이션, 게임, 교육 훈련, 자연과학 가시화, 그래픽 사용자 인터페이스 등 응용분야가 많다. 그중에서도 (1) Computer Aided Manufacturing - Numerical Control Machine 개발 및 자동 생산에 따른 효율과 가공의 정밀도 향상 (2) Virtual Walkthrough - 레이 트레이싱에 의한 렌더링 (3) 애니메이션 및 게임 - 사용자와 프로그램 사이의 상호작용 설계 , 시간 최소화 (4) CAI - 학습 보조도구로서 컴퓨터에 내재하는 추론기능과 지식 데이터 베이스 (5) 과학분야 가시화 SCI VIS (Scientific Visualization) 과 GUI (그래픽 사용자 인터페이스) 에 대해서 이론과 실습을 한다.
- 3D 도형 모델링과 시점 변환
- 투상 변환과 뷰포트 변환
- 가시성 판단을 위한 벡터,후면 제거
- 레스터 변환과 모델 변환
- 그래픽 사용자 인터페이스 응용
- 3D 애니메이션 개인 프로젝트
간단한 원구부터 시작해서 3D Teapot Modeling과 시점 변환
- 평행 투상 변환
- 원근 투상 변환
- x축으로 10도 회전
- x축으로 0.3 이동한 후 1.2배 확대, z축으로 180도 회전
도형 설계 화면
후면과 은면 제거
후면제거
은면제거
후면과 은면 존재
전면 제거
이면 line처리
- 모델링 What to Draw & 렌더링 How to Draw
- 모델링 : 장면 내부 물체를 정의하는 작업으로 선분의 끝점, 다각형의 정점 정의
- 렌더링 : 정의될 물체를 그려내는 작업으로 조명, 관찰자 위치, 재질, 3차원 물체를 어떻게 2차원 화면으로 사상하는지 정의 :heavy_check_mark: 여기서는 화면 선명도를 위해 샤도우 마스크, 애퍼처 그릴 그리고 인터레이싱 = 주사선을 사용했다. 또 화소단위의 컬러링이 아닌 벡터 그래픽 장비로 화소 개념이 없고 전자빔의 폭으로 무한 해상도를 표현할 수 있다.
- 지엘의 래스터 변환
- 은면제거와 동시 진행
- 깊이와 색을 보간
- 정규화 장치 좌표 -> 뷰포트 좌표 -> 화면 좌표 순
- 최대의 연산속도와 최대의 정확성이 요구
- 브레스넘 알고리즘
-
종점 알고리즘
-
빠른 연산 속도
-
부동소수 연산에서 발생하는 표류현상 없음
void MidpointLine(int x1, int y1, int x2, int y2){ int dx, dy, incrE, incrNE, D, x, y; dx = x2 - x1; dy = y2 - y1; D = 2*dy - dx; 결정변수 값을 초기화 incrE = 2*dy; 동쪽 화소 선택시 증가분 incrNE = 2*dy - 2*dx; 동북쪽 화소 선택시 증가분 x = x1; y = y1; 첫 화소 DrawPixel(x, y) 첫 화소 그리기 while (x < x2) { if (D <= 0) { 결정변수가 음수. 동쪽화소 선택 D += incrE; 결정변수 증가 x++; } 다음 화소는 동쪽 else{ 결정변수가 양수. 동북쪽 화소 선택 D += incrNE; 결정변수 증가 x++; y++; } 다음 화소는 동북쪽 DrawPixel (x, y); 화소 그리기 } }
-
- 3D 공룡 모델링
- 마우스 클릭시 Jump 효과 추가
- 3D 배경에 바닥 표현 후 그림자 rotate 효과
- Plane으로 행성을 표현하고 싶었지만 너무 허접했다 ..
- 3D teapot
- 아기 공룡의 성장