Category Archives: Homework

실습작품

HW1 – 무피즈 (강현석)사용자 삽입 이미지
HW1 – 무피즈 (백승대)사용자 삽입 이미지HW2 – 캐릭터 (박찬호)사용자 삽입 이미지HW2 – 캐릭터 (원종찬)사용자 삽입 이미지HW2 – 캐릭터 (박재희)사용자 삽입 이미지HW3 – 캐릭터 동산 (정효진)사용자 삽입 이미지HW3 – 캐릭터 동산 (심지흠)사용자 삽입 이미지HW3 – 캐릭터 동산 (심세용)사용자 삽입 이미지




OpenAL soundnode class

OpenAL기반의 sound class와 soundnode class 추가
-기존 oglclass의 sound class 변경 (하나의 사운드 담당)
-soundnode class 추가
  +BackgroundMusic class (배경음) 한번/반복/루프모드에 따라 플레이
  +EnvironmentSound class (환경음) 일정시간이 지나면 랜덤플레이
  +LocalEffectSound class (지역음) 지정한 지역근처에 가면 플레이
        -지역음은 반드시 camera class하고 같이 사용해야 함!

// sound 객체 초기화
camera camera1(45, 1, 1.0f, 1000.0f);
Sound sounds;
Sound sounds2;
BackgroundMusic bgm;
EnvironmentSound ambientsound;
LocalEffectSound localsound1(&camera1);
LocalEffectSound localsound2(&camera1);

// createScene에서 사운드 정의
void createScene(node & root)
{
 // 중간생략..

 // 기존의 sound class 사용방법
 ALfloat sourcePos1[] = { 10., 2., 5.};
 ALfloat sourceVel1[] = { 0., 0., 0.};
 ALfloat sourcePos2[] = { -20., 2., 5.};
 ALfloat sourceVel2[] = { 0., 0., 0.};
 sounds.setSoundSource(“data/sound/stereo.wav”, sourcePos1, sourceVel1, 0.5f, AL_TRUE);
 //sounds.play(); // background sound play
 sounds2.setSoundSource(“data/sound/click.wav”, sourcePos2, sourceVel2, 1.0f, AL_FALSE);


 // 배경음 – 리스트에 음악을 계속 루프해서 플레이
 bgm.addSoundFile(“data/sound/BGM/네오+시티.wav”);
 bgm.addSoundFile(“data/sound/BGM/엘린+숲.wav”);
 bgm.addSoundFile(“data/sound/BGM/무릉.wav”);
 bgm.setMode(BackgroundMusic::LOOP);
 bgm.setVolume(0.2f);


 // 환경음 – 2초가 지나면 리스트에서 랜덤하게 사운드를 하나 선택해서 플레이
 ambientsound.addSoundFile(“data/sound/Env/Beetle Movement.wav”);
 ambientsound.addSoundFile(“data/sound/Env/songbird1.wav”);
 ambientsound.addSoundFile(“data/sound/Env/Purple Sandpipers Chirping.wav”);
 ambientsound.addSoundFile(“data/sound/Env/Frog Croaks.wav”);
 ambientsound.addSoundFile(“data/sound/Env/Forest Cicadas.wav”);
 ambientsound.setTime(2000.0f);
 ambientsound.setVolume(0.5f);


 // 지역음 – 해당지역에 가면 사운드가 플레이
 localsound1.addSoundFile(“data/sound/LocalEffect/water.wav”);
 localsound1.setPosition(sourcePos1);
 localsound2.addSoundFile(“data/sound/LocalEffect/Bee.wav”);
 localsound2.setPosition(sourcePos2);
 localsound2.setAttenuate(20.0f);
}

// 이벤트에 따른 사운드 플레이
void keyboard(unsigned char key, int x, int y)
{
// 중간 생략
  case ‘s’:
   sounds2.play();
   break;
}

// 지정한 사운드 이벤트에 따른 사운드 플레이
void update()
{
 g_CurrentTime = timeGetTime();
 g_DeltaTime = g_CurrentTime – g_PreviousTime;
 g_ElapsedTime = (float)(g_DeltaTime * 0.001);
 g_PreviousTime = g_CurrentTime;

 // 사운드 업데이트
 bgm.update(g_DeltaTime);
 ambientsound.update(g_DeltaTime);
 localsound1.update(g_DeltaTime);
 localsound2.update(g_DeltaTime);
}



9059764278.cpp

HW3

그래픽스 프로그래밍 실습 #3


– 3D Model Loading, Texture mapping, Alpha blending
(321190)
강사: 박경신
2011년 5월 19일
7317779832.hwp


최신 oglclass-source.zip9000776483.zip제출방법: 2011년 6월 2일(목) 밤12시까지

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


 


참고자료: oglclass.zip
(OpenAL 설치 요망 http://dis.dankook.ac.kr/lectures/med08/category/OpenAL)
NOTE: 실습 2의 모든 기능을 그대로 놓은 상태에서 추가 작업을 한다.


 


1. 본인이 제작한 Hierarchical Transformation 구조를 가진 캐릭터에 텍스쳐와 알파 블렌딩을 넣어준다. (30점)
-물체에 OpenGL texture mapping을 추가한다. 이때 적어도 2개 이상의 texture image을 사용한다.


2. 캐릭터가 사는 동산(또는 실내)을 만드는데 전체 장면에서 적어도 하나의 물체는 OpenGL의 alpha blending과 texture mapping을 적용하여 semi-transparent하게 만든다. 예를 들어, 구(sphere)에 알파 블랜딩을 적용한 나무잎 텍스쳐를 매핑시켜서 나무를 그리면 보다 입체적인 모습의 표현이 가능하다. (10점)


3. 전체 장면을 꾸며주기 위하여, 2개 이상의 3차원 모델을 로딩하여 그려준다. (10점)
-obj/3ds model loader를 사용하여 본인이 3DMAX나 MAYA로 (텍스쳐가 있는) 제작한 모델 2개 이상을 전체 장면에 넣어준다. (단, 본인이 직접 제작하지 않고 가져왔을 시 그 출처를 밝힐 것)


4. 캐릭터가 동산(또는 실내)에 걸어다니는 모드와 움직이는 물체 (예를 들어, 비행선, 붕붕자동차)을 타고 돌아다니는 Camera Control을 추가한다. (10점)
-‘1’ KEY를 눌렀을 때, 1인칭 시점(camera viewpoint)으로 변하고 전후좌우(UP/DOWN/LEFT/RIGHT)로 움직일 수 있다. 카메라의 기본 위치는 동산의 정중앙에서 바깥쪽을 바라보는 방향을 향한다.
-‘2’ KEY를 눌렀을 때, 시점이 본인이 제작한 움직이는 물체(비행선, 붕붕자동차)을 타고 있는 시점으로 변환한다.


5. 사운드 클래스 (OpenAL 라이브러리)를 사용하여 배경음악과 이벤트 사운드 추가한다. (10점) 


6. 창의성, 소스코드 주석처리, 리포트 (30점)

HW2

그래픽스 프로그래밍(321190) 실습 #2
– 3D graphics & hierarchical transformation & shading
(321190)
강사: 박경신
2011년 4월 28일


제출 방법: 2011년 5월 12일(목) 밤12시까지
(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 “학번이름_숙제2.zip”으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 .cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.) 8337435290.hwp


참고자료: oglclass-starter.zip


0. Display window 크기는 1000 x 1000로 한다.


1. Hierarchical transformation 구조를 가진 3차원 ‘캐릭터’를 만든다. (30점)
     -gluPerspective(60, 1, 0.1, 1000)를 사용한다.
-Primitives 예제 (circle, cube, cylinder, sphere, square)와 Geometry예제 (GLU quadrics, GLUT objects)와 Transformation 예제 (car, orbit, planet, robot, simple solar system)를 참고하여 본인만의 3차원 ‘캐릭터 (거미, 게, 가재, 개미, 개구리, 나비, 벌, 졸라맨 등)’ 하나를 만든다.
-‘캐릭터’는 적어도 3단계 이상의 계층적 구조를 갖는 3차원 물체를 구성한다.
-‘캐릭터’에 붙어있는 물체의 위치는 균형(balance)을 고려해서 안정적으로 보이도록 한다.


2. ‘Space bar’-key를 누르면 ‘캐릭터’가 움직이거나(즉, 애니메이션) 멈춘다. (20점)
-‘space bar’-key는 ‘캐릭터’를 움직이거나 멈추게 하는 toggle button이다.
-움직이는 모드이면, ‘캐릭터’ 물체가 천천히 좌우로 움직이거나 회전을 한다. – 힌트: Idle() 함수를 사용할 것.
-적어도 2단계 이상의 계층적 구조의 (즉, 부분적으로 다른) 움직임을 ‘캐릭터’ 물체에 적용한다.


3. 전체적인 장면에 조명과 재질을 사용하여 3차원 장면의 사실감을 더한다. (10점)


4. 추가적인 클래스를 작성하여, 캐릭터 주변을 꾸민다. (10점)


5. 창의성, 소스코드 주석처리, 리포트 (30점)

HW1

그래픽스 프로그래밍(321190) 실습 #1
– 2D graphics & interaction
(321190)
강사: 박경신
2011년 3월 24일
3809818042.hwp사용자 삽입 이미지
제출 방법: 2011년 4월 7일(목) 밤12시까지
(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 “CG11_학번이름_숙제1.zip”으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 .cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.)


참고자료: moopies_starter.zip


0. Display window 크기는 500 x 500로 gluOrtho2D(-10, 10, -10, 10)를 사용한다.


1. ‘무피즈(Moopies)’ 클래스를 작성한다. KidPix Studio의 Moopies는 ‘Moving Picture’를 의미한다. (30점)
즉, 마우스의 움직임에 따라 다양한 선과 모양을 그려지는 낙서장을 만든다.
무피즈는 이름에서 의미하듯이 반드시 움직이는 개체이어야 한다.


2. 여러 가지 재미있는 기하의 속성 (attributes – 예를 들어 color, line width, etc)을 가진 ‘무피즈(Kidpix Moopies)’를 생성한다. (20점)
수학적인 공식 또는 기본색이나 모양을 변형하여 적어도 3개 이상의 무피즈를 만든다.


3. ‘무피즈(Kidpix Moopies)’ 프로그램을 작성한다. (30점)
-mouse
 -왼쪽 마우스 버튼을 누르면, 화면에 새로운 무피즈 (즉, Geometry)가 리스트에
 추가된다.
 -왼쪽 마우스 모션을 하면, 무피즈가 계속해서 그려진다.
 -화면의 위치변환(GLUT coordinate => OpenGL coordinate)한 위치 x, y를
 무피즈의 시작 위치 (position)으로 한다.
 -중간 마우스 버튼을 누르면, 화면을 clear한다.
-keyboard
 -spacebar를 계속해서 누르면, 현재 무피즈 도형의 모드(mode)를 선택할 수 있다.
 -q-key 또는 ESC-key를 누르면, 프로그램을 종료한다.
 -c-key를 누르면 화면을 clear한다.
-menu
 -팝업메뉴에서 무피즈 도형의 모드(mode)를 선택할 수 있다.


4. 프로그램이 완성되면 본인의 이름과 소개를 ‘무피즈’로 그린다. 창의성, 소스코드 주석처리, 리포트 (30점)