HW3

단국대학교 응용컴퓨터공학 컴퓨터그래픽스 (2016년 가을학기) 실습

 

과목코드 : 514780

강사 : 박경신

날짜 : 2016년 11월 18 일

실습 : HW3 Due by 12/9

요약 : 여러 개의 3차원 객체 (3D objects) 모델을 전체 장면 World에 배치시키고 움직임을 넣어본다.

 

참고자료: moglclass.zip

https://www.dropbox.com/s/ca55a0prrj1n64x/moglclass16.zip?dl=0

(반드시 OpenAL 설치 요망 http://dis.dankook.ac.kr/lectures/cg16/entry/OpenAL-Getting-Started)

 

(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 학번이름_숙제3.zip으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 *.cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.) HW2의 기능을 활용해서 3차원 장면을 만든다.

 

– 실습문제

  1. HW2 가을 풍경 ‘꽃/나무/캐릭터’ 등 본인이 제작한 계층적 변환 구조(Hierarchical transformation)를 가진 3차원 객체에 텍스쳐를 넣어준다.

– 물체에 OpenGL texture mapping을 추가한다. 이때 적어도 2개 이상의 texture image를 사용한다.

 

  1. 전체 장면을 꾸며주기 위하여, 주변에 2개 이상의 3차원 모델을 추가로 그려준다. 이 3차원 모델은 OpenGL의 텍스쳐매핑과 알파블렌딩을 적용한다. 예를 들어, 구(Sphere)에 알파 블렌딩을 적용한 나뭇잎 텍스쳐를 매핑시켜서 나무를 그려주면 보다 입체적인 모습의 표현이 가능하다.

– 본인이 3DMAX나 MAYA로 텍스쳐가 있는 모델을 넣어줄 수도 있다. (단, 출처를 밝힐 것)

 

  1. 전체 장면에 움직이는 캐릭터 또는 물체 (예를 들어, 떨어지는 낙엽, 잠자리 등)을 추가한다.

– 1-KEY를 눌렀을 때, 1인칭 시점(camera viewpoint)으로 변하고 전후좌우(UP/DOWN/LEFT/RIGHT)로 움직일 수 있다. 카메라의 기본 위치는 꽃밭의 정중앙에서 바깥쪽을 바라보는 방향을 향한다.

– 2-KEY를 눌렀을 때, 시점이 본인이 제작한 움직이는 물체(낙엽, 잠자리)의 시점으로 변환한다.

 

  1. 사운드 클래스 (OpenAL 라이브러리)를 사용하여 배경음악과 이벤트 사운드를 추가한다. 위의 코드로 하나의 완성된 장면을 구성하는 프로그램을 작성하고, 실행 화면과 코드를 첨부하시오.

HW2

단국대학교 응용컴퓨터공학 컴퓨터그래픽스 (2016년 봄학기) 실습

 

과목코드 : 514780

강사 : 박경신

날짜 : 2016년 10월 21 일

실습 : HW2 (Hierarchical 3D Objects) Due by 11/11

 

(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 학번이름_숙제2.zip으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 *.cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.) HW1의 기능을 활용해서 계층적 구조의 3차원 객체로 만든다.

 

– 실습문제

  1. HW1 가을 풍경 ‘꽃/나무/캐릭터’ 등 본인이 원하는 계층적 변환 구조(Hierarchical transformation)를 가진 3차원 객체를 3개 이상을 만든다 (e.g., SimpleCar, SimpleMobile, SimpleSolar).

-Geometry 예제 (circle, cube, cylinder, sphere, square)와 Transformation 예제 (car, orbit, planet, robot, simple solar system)를 참고하여 본인만의 ‘꽃/나무 (내부 구성은 창의적으로)’를 구성하여 만든다.

-‘꽃/나무’에 사과, 배, 복숭아, 감 등등이 달려있다. (보고서에 스케치 첨부할 것 – 좀 더 구체적으로 형체를 알아볼 수 있도록)

-‘꽃/나무’ 물체는 적어도 3 단계 이상의 계층적 구조를 가진다. (움직임에 적용)

 

  1. a-key가 눌려지면 animation play/pause 모드로 바꿔줄 수 있도록 한다.

-‘space bar’-key는 ‘꽃/나무’을 피어/자라나게 하는 button이다. 이 키를 다시 누르면 처음부터 다시 자라난다.

-움직이는 모드에서는 ‘꽃/나무’가 바람에 흔들리듯이 천천히 좌우로 움직이거나 회전을 한다. – 힌트: update() 함수를 사용할 것.

-가능하다면, 2단계 이상의 계층적 구조의 (즉, 부분적으로 다른) 움직임을 ‘꽃/나무’ 물체에 적용하도록 한다.

 

  1. 또한 w-key가 눌려지면 wireframe/solid모드로 바꿔줄 수 있도록 한다. 위의 코드로 하나의 완성된 장면을 구성하는 프로그램을 작성하고, 실행 화면과 코드를 첨부하시오.

HW1 다시제출

HW1 숙제를 e-learning 강의실에 실행파일(*.exe)과 소스코드(*.h, *.cpp, *.fs, *.vs)와 보고서(*.doc/*.hwp)를 전부 “학번_이름_HW1.zip”으로 묶어서 제출하도록 합니다. 또한, 비주얼 스튜디오에서 만든 프로젝트 전체 파일 (*.sln, *.vcxproj)를 폴더에 같이 넣어주시길 바랍니다.
보고서는 출력해서 수업시간에 제출합니다.

HW1

단국대학교 멀티미디어공학전공 그래픽스프로그래밍 (2016년 봄학기) 실습

 

과목코드 : 514780

강사 : 박경신

이름:                                 날짜: 2016년 9월 23 일

학번:

– 실습번호 : HW1 (Due by 10/7)

– 실습제목 : Draw Primitives

– 실습요약 : 정점 버퍼와 인덱스 버퍼를 이용하여 간단한 2차원 기본 요소(primitives)와 3차원 객체 (3D objects)를 만들고 그린다. Lab2를 이용한다.

 

– 실습문제

  1. lab2 프로그램은 삼각형(triangle), 사각형(quad), 원(circle), 입방체(cube), 구(sphere) 등을 그리는 프로그램이다. 본인이 원하는 2차원 모양 3가지 (예: 나무, 꽃, 집)와 본인이 원하는 3차원 객체 (예: 미키 마우스 등) 1개 이상을 작성하라. 이 객체에 여러 가지 색(color)를 추가한다. 각 도형 별로 다양한 OpenGL Primitive Type을 사용하여 그려본다.

GL_GeometricPrimitives

  1. 그리고, 이 객체들을 여러 개 합쳐서 배치하여 “가을 풍경”의 장면을 구성해준다.

fall-season

  1. 완성된 장면을 구성하는 프로그램을 작성하고, 실행 화면과 코드를 첨부하시오.

Lab1

1. include & lib 를 받아서 실습 디렉토리 (예: lab) 안에 저장한다.  freeglut-MSVC-3.0.0-2.mp.zip & glew-2.0.0-win32.zip & glm-0.9.7.6.zip

include lib bin  (freeglut.dll, glew32.lib, glew32ms.dll)

C:\Windows\system32 폴더에 freeglut.dll glew32.dll glew32mx.dll를 넣습니다.
** 64-bit 운영체제 (Window8 기준)
C:\Windows\SysWOW64 폴더에도 freeglut.dll glew32.dll glew32mx.dll를 넣습니다.

 

2. 새로운 OpenGL 프로젝트 (예: lab0, etc)를 실습 디렉토리 아래에서 생성한다.

lab_dir

lab0_dir

3. source code 를 넣어준다.

lab1-moglclassShader (moglclass.h, shaders.cpp, shaders.h, vertexBufferObject.cpp, vertexBufferObject.h) colorTriangle.cpp, simple2.vs, simple2.fs

4. 각 OpenGL 프로젝트마다 include 와 lib 디렉토리 설정을 하고 lib 를 넣어준 후 빌드 (즉, compile & link) 한다.

include_dir

lib_dir

lib

5. 실행한다.

 

6. 다른 코드를 실행해 본다.

colorTriangle

colorTriangles

circle

indexedSquare

indexedCube