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 라이브러리)를 사용하여 배경음악과 이벤트 사운드를 추가한다. 위의 코드로 하나의 완성된 장면을 구성하는 프로그램을 작성하고, 실행 화면과 코드를 첨부하시오.

simage library

COIN3D simage library (http://www.coin3d.org/lib/simage)

  • COIN3D simage가 제공하는 이미지 포멧은 JPEG, PNG, GIF, TIFF, RGB, PIC, TGA, EPS등 다양하다.
  • COIN3D의 simage library를 사용하려면, 프로젝트에 additional library and include directory를 추가해야한다. 기존 include 와 lib 디렉토리 안에 simage.h 과 simage1d.lib를 복사한다.
  • 그리고, 텍스쳐 이미지 로딩을 위해 프로젝트에 simage1.lib 라이브러리를 링크한다.

OPENAL GETTING STARTED

1. OpenAL 1.1 SDK & Installer for Windows를 다운로드하여 설치한다. (OpenAL11CoreSDK)

2. 기존 프로젝트 include 와 lib 디렉토리 안에 OpenAL 헤더파일 al.h, alc.h, efx.h, efx-creative.h, EFX-Util.h, xram.h과 OpenAL libs/Win32안에 있는 OpenAL32.lib, EFX-Util_MT, EFX-Util_MTDLL 라이브러리들을 복사한다.
3. 그리고, 본인 프로젝트 Additional Dependencies에 OpenAL32.lib 라이브러리를 추가하고 링크한다.

GLU/GLUT Geometry

GLSL built-in variables gl_Vertex, gl_Normal, gl_MultiTexCoord0 (version 130 까지만 지원)

GLSL Tutorial https://www.opengl.org/sdk/docs/tutorials/TyphoonLabs/Chapter_3.pdf

 

Light & Material를 사용하여 glutTeapot, glutSolidSphere, glutSolidCylinder를 Shading

glutShaded

lab12-ShadedGLUT

 

Light & Material & Texture를 사용하여 glutTeapot, gluSphere, gluCylinder를 Shading

gluTextureShaded

lab12-TextureShadedGLUT

ShadedGeometry

pervertex

ShadedGeometry-PerVertexLighting

lab11-GeometryPositionNormalPerVertexLighting
http://en.wikibooks.org/wiki/GLSL_Programming/GLUT/Diffuse_Reflection
http://en.wikibooks.org/wiki/GLSL_Programming/GLUT/Specular_Highlights

 

 

perpixel

ShadedGeometry-PerPixelLighting

lab11-GeometryPositionNormalPerPixelLighting
http://en.wikibooks.org/wiki/GLSL_Programming/GLUT/Smooth_Specular_Highlights