OpenGL 프로젝트 2001 1351 김병욱 2001 1354 김상진 2001 1358 김성환.

Slides:



Advertisements
Similar presentations
학과 : 컴퓨터 시물레이션 학번 : , 학년 : 4 학년 성명 : 박현호, 배기택 C 를 이용한 네트워크 타자 게임.
Advertisements

LOGO OpenGL Project ( 해 결 사 ) 여태기 이수원 정화영 정유나 여태기 이수원 정화영 정유나.
미디어 프로그래밍 II 소개.
3장 입력과 상호작용 1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍
Chapter 3. 뷰잉(Viewing).
IT 패러다임을 바꾼 디지털 리더 한국대학생IT경영학회 교육팀 차헌영 가장 성공한 IT기업은?
2016년도 제2차 서비스 자격시험 고사장 안내 시험종목: 병원서비스코디네이터, 서비스경영컨설턴트,
2.1 The Sierpinski Gasket.
CG Programming (Modeling)
CG Programming (Modeling)
Implement of Input and Interaction
OpenGL 실습 12 로봇.
OpenGL Programming (III) 1. Drawing in 3D 2. Manipulating 3D Space
2016 ITA 1월 강의 C Programming -4일차- 포인터배열 및 이중포인터 정대진 ( )
OpenGL 실습 1주차.
OpenGL 시작하기.
동명대학교 게임공학과 강영민 게임프로그래밍 1 강의노트 01.
블렌딩 안티앨리어싱, 안개효과 그리고 폴리곤 오프셋
Lecture #7 제 4 장. 기하학적 객체와 변환 (2).
기하학적 객체와 변환.
4장 기하학적 객체와 변환 – OpenGL 변환 학습목표 OpenGL 에서 어떻게 변환을 수행하는지 OpenGL 행렬모드 회전
Chapter 5. 라이팅(Lighting)
Lecture #8 제 5 장. 관측(viewing).
7장 디스플레이 리스트.
Practice - texture mapping
선 택 과 피 드 백.
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환 5장 관측
Department of Computer Engineering
소프트웨어 공학 Project - 어플리케이션 만들기 ( CS App ) 최종 발표
OpenGL Project (3D 움직이는 자동차)
Program Memorandum - MODEL HOUSE
Sang Il Park Sejong University
SMALL TOWN 조이름 : ~ING < 최종 결과 보고서 >
Department of Computer Engineering
계층적, 객체지향적 그래픽스 최 수 미
테 셀 레 이 션 과 이차 곡 면.
Term Project Team Member
openGL Project 결과보고서 야구 시구 시뮬레이션
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환
Hanyang University Jungsik Park
Right Now 담당 교수 : 문양세 교수님 팀 원 : 김원모(팀장) 우덕령, 김승선, 김종원, 문경민
OpenGL PROJECT 우광식 성기영 서창수 이인주.
openGL Project 제안서 비 오는 정류장에서
OpenGL Project 조민정 장선례.
프 레 임 버 퍼.
Real-time Tactics Game
Computer Graphics OpenGL 설치 및 설정
OpenGL 프로젝트 K.S.C팀.
OpenGL 프로젝트 김병욱 김상진 김성환.
광원 제어 하기.
OpenCV 설치 및 구성 OpenCV
Draw the basic Geometry Objects
OpenGL Project Dong-seo Univ Multimedia Engineering.
Chapter 4 컬러( COLOR ).
Music Robot #Define A+(12-15조) 팀원: 05학번 양현철 , 김 청 07학번 예강훈 , 김한수
○ 직 무 기 술 서 드라이빙센터 매니저 1. 주요 업무 2. 자격요건 직 무 드라이빙센터 매니저 근무형태
Department of Computer Engineering
openGL Project 제안서 - 해상 전투
OpenGL Project.
OpenGL project – Easy Flight Simulator
LOGOTYPE 춤추는 풍선 팀장 : 이준호 팀원 : 장원진.
초딩들의 답안지.
OPENGL project 구성원 : 김수민,남현우 OPENGL을 이용한 당구(3구) 구현하기.
OpenGL Project = Solar System = 김민지 박유나.
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
In to the Night 서정부, 서수민, 안경호
argc, argv 의 사용방법 #include <stdio.h>
OpenGL (3D Racing) PROJECT 2011 Dongseo Univ..
OpenGL Project 과 목 명 : 컴퓨터 그래픽스 E14반 담당교수님 : 이병국교수님 팀 원 : 신호환
OpenGL 프로젝트 복학생은 죽지않아!! ( 강유진, 박지혜)
Presentation transcript:

OpenGL 프로젝트 2001 1351 김병욱 2001 1354 김상진 2001 1358 김성환

개 요 팀 명 : A+불가 팀원 수 : 3명 목적 :수업시간에 배운 내용을 바탕으로 팀 프로젝트를 수행함으로써 OpenGL에 대한 자신감과 성취감을 유발 프로젝트 개발 팀 김상진(20001121) 김성환(20011358) 프로젝트 진행 팀장 김병욱(20011351)

개발 환경 Windows XP Microsoft Visual C++ OpenGL Photoshop CS

프로젝트 목적 그래픽 프로그래밍에 대한 이해 OpenGL에 관한 이해 OpenGL의 사용 범위 확대 Affine Transformations의 이해 유저인터페이스의 구현 3D Object Select 팀 프로젝트에 대한 자신감 고추

프로젝트 내용 프로젝트 : 자전거 타는 로보트 로보트가 자전거 타는 모습 3D구현 마우스 이벤트 - 메뉴 선택 - 로봇의 팔(어깨,손목),다리 회전 메뉴구성 - 로봇 어깨 회전 - 로봇 손목 회전 - 로봇 다리 회전 - 로봇 무릎 회전

프로젝트 구성 포인터로 몸, 자전거의 각 부분을 지정하고, 전역변수로 다리움직임과 바퀴회전과 자전거 이동을 구현 라이트닝효과를 사용 주변광, 산란광, 반사광의 성분을 결정 좌표축의 position값을  계속해서 0.1씩 감 소 시켜 자전거 이동 구현 glRotatef,glTranslatef 사용 스택을 이용한 glPopMatrix() glPushMatrix() 사용

화면구성 로보트가 자전거를 타고 도로를 내려감 메뉴를 선택하고 마우스 오른쪽버튼으로 사람과 자전거의 회전, 팔,다리 회전을 할 수 있음

로봇 구현 void torso() //몸통 생성 { glPushMatrix(); //x축 방향으로 -90도 회전         glRotatef(-90.0, 1.0, 0.0, 0.0);         //실린더로 위쪽이 약간 더 넓은 몸통을 만듧         gluCylinder(t, TORSO_RADIUS, (TORSO_RADIUS+ 0.2), TORSO_HEIGHT, 10, 10);         glPopMatrix(); } void head()   //머리 생성         glTranslatef(0.0, 0.5*HEAD_HEIGHT, 0.0);         glScalef(HEAD_RADIUS, HEAD_HEIGHT, HEAD_RADIUS);         gluSphere(h, 1.0, 10, 10);

로봇팔구현 void left_upper_arm() //왼쪽 윗팔 생성 { glPushMatrix();         glRotatef(20.0, 1.0, 0.0, 0.0);         gluCylinder(lua, UPPER_ARM_RADIUS, UPPER_ARM_RADIUS,                     UPPER_ARM_HEIGHT, 10, 10);         glPopMatrix(); } void left_lower_arm()   //왼쪽 아래팔 생성         gluCylinder(lla, LOWER_ARM_RADIUS, LOWER_ARM_RADIUS,                     LOWER_ARM_HEIGHT, 10, 10); void right_upper_arm()   //오른쪽 윗팔 생성 {         glPushMatrix();         glRotatef(20.0, 1.0, 0.0, 0.0);         gluCylinder(rua, UPPER_ARM_RADIUS, UPPER_ARM_RADIUS,                     UPPER_ARM_HEIGHT, 10, 10);         glPopMatrix();   } void right_lower_arm()   //오른쪽 아래팔 생성         gluCylinder(rla, LOWER_ARM_RADIUS, LOWER_ARM_RADIUS,                     LOWER_ARM_HEIGHT, 10, 10);         glPopMatrix(); 

로봇다리구현 void left_upper_leg() //왼쪽 윗다리 생성 { glPushMatrix();         glRotatef(-90.0, 1.0, 0.0, 0.0);         gluCylinder(lul, UPPER_LEG_RADIUS, UPPER_LEG_RADIUS,                     UPPER_LEG_HEIGHT, 10, 10);         glPopMatrix(); } void left_lower_leg()   //왼쪽 아래다리 생성         glRotatef(-60.0, 1.0, 0.0, 0.0);         gluCylinder(lll, LOWER_LEG_RADIUS, LOWER_LEG_RADIUS,                     LOWER_LEG_HEIGHT, 10, 10); void right_upper_leg()   //오른쪽 윗다리 생성 {         glPushMatrix();         glRotatef(-90.0, 1.0, 0.0, 0.0);         gluCylinder(rul, UPPER_LEG_RADIUS, UPPER_LEG_RADIUS,                     UPPER_LEG_HEIGHT, 10, 10);         glPopMatrix(); } void right_lower_leg()   //오른쪽 아래다리 생성         glRotatef(-60.0, 1.0, 0.0, 0.0);         gluCylinder(rll ,LOWER_LEG_RADIUS, LOWER_LEG_RADIUS,                     LOWER_LEG_HEIGHT, 10, 10);

자전거 구현 void bicycle_upper() //자전거 윗쪽 차체 생성 { glPushMatrix();        glRotatef(0.0, 0.0, 0.0, 0.0);         gluCylinder(bu, BICYCLE_RADIUS, BICYCLE_RADIUS,                     BICYCLE_UPPER_HEIGHT, 10, 10);         glPopMatrix(); } void bicycle_front()   //자전거 앞쪽 차체 생성         //핸들과 앞바퀴를 연결해 주는 차체를 x축 방향으로 65도 기울여서 생성         glRotatef(65.0, 1.0, 0.0, 0.0);         gluCylinder(bf, BICYCLE_RADIUS, BICYCLE_RADIUS,                     BICYCLE_FRONT_HEIGHT, 10, 10); void bicycle_handle()   //자전거 핸들 생성 {         glPushMatrix();         glRotatef(90.0, 0.0, 1.0, 0.0);         gluCylinder(bf, BICYCLE_RADIUS, BICYCLE_RADIUS,                      BICYCLE_HANDLE_HEIGHT,10, 10);         glPopMatrix(); } void bicycle_lower1()   //자전거 아래쪽 앞부분 차체 생성         glRotatef(-30.0, 1.0, 0.0, 0.0);         gluCylinder(bl1, BICYCLE_RADIUS, BICYCLE_RADIUS,                     BICYCLE_UPPER_HEIGHT, 10, 10);

자전거 구현 void bicycle_lower2() //자전거 아래쪽 뒷부분 차체 생성 { glPushMatrix();         glRotatef(0.0, 0.0, 0.0, 0.0);        gluCylinder(bl2, BICYCLE_RADIUS, BICYCLE_RADIUS,                     BICYCLE_UPPER_HEIGHT, 10, 10);         glPopMatrix(); } void bicycle_back()   //자전거 뒷쪽 차체 생성         glRotatef(-30.0, 1.0, 0.0, 0.0);         gluCylinder(bb, BICYCLE_RADIUS, BICYCLE_RADIUS, void bicycle_seat()   //자전거 안장 생성 {         glPushMatrix();         glRotatef(-90.0, 1.0, 0.0, 0.0);         gluCylinder(bs, BICYCLE_SEAT_RADIUS, BICYCLE_SEAT_RADIUS,                     BICYCLE_SEAT_HEIGHT, 10, 10);         glPopMatrix(); } void right_pedal_bar()   //자전거 오른쪽 페달 기둥 생성         glRotatef(-75.0, 1.0, 0.0, 0.0);         gluCylinder(rpb,PEDAL_BAR_RADIUS, PEDAL_BAR_RADIUS,                     PEDAL_BAR_HEIGHT, 10, 10);

자전거 구현 void right_pedal() //자전거 오른쪽 페달 생성 { glPushMatrix();         glRotatef(90.0, 0.0, 1.0, 0.0);         gluCylinder(rp, PEDAL_RADIUS, PEDAL_RADIUS, PEDAL_HEIGHT, 10, 10);         glPopMatrix(); } void left_pedal_bar()   //자전거 왼쪽 페달 기둥 생성         glRotatef(-75.0, 1.0, 0.0, 0.0);         gluCylinder(lpb, PEDAL_BAR_RADIUS, PEDAL_BAR_RADIUS,                     PEDAL_BAR_HEIGHT, 10, 10); void left_pedal()   //자전거 왼쪽 페달 생성         gluCylinder(lp, PEDAL_RADIUS, PEDAL_RADIUS, PEDAL_HEIGHT, 10, 10);

소스구현 void mouse(int btn, int state, int x, int y) { if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) theta[angle] += 5.0; if( theta[angle] > 360.0 ) theta[angle] -= 360.0; } if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) theta[angle] -= 5.0; if( theta[angle] < 360.0 ) theta[angle] += 360.0; display(); void myReshape(int w, int h) { glViewport(0, 0, w, h); //시역 조절 //절단 상자 조절 glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-10.0, 10.0, -10.0 * (GLfloat) h / (GLfloat) w, 10.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); else glOrtho(-10.0 * (GLfloat) w / (GLfloat) h, 10.0 * (GLfloat) w / (GLfloat) h, 0.0, 10.0, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); }

소스구현 void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(600, 600); //600by600 크기의 윈도우 생성 glutCreateWindow("bicycles-robot"); //윈도우 상단에 bicycle-robot이란 이름의 title생성 myinit(); glutReshapeFunc(myReshape); glutIdleFunc(idle); glutDisplayFunc(display); glutMouseFunc(mouse); } //메뉴 생성 glutCreateMenu(menu); glutAddMenuEntry("torso", 0); glutAddMenuEntry(“head1", 1); glutAddMenuEntry(“head2", 2); glutAddMenuEntry("right_upper_arm", 3); glutAddMenuEntry("right_lower_arm", 4); glutAddMenuEntry("left_upper_arm", 5); glutAddMenuEntry("left_lower_arm", 6); glutAddMenuEntry("right_upper_leg", 7); glutAddMenuEntry("right_lower_leg", 8); glutAddMenuEntry("left_upper_leg", 9); glutAddMenuEntry("left_lower_leg", 10); glutAddMenuEntry("quit", 11); glutAttachMenu(GLUT_LEFT_BUTTON); glutMainLoop(); }

소스구현 void idle() { if(direction==1) else //direction2=0 { theta[7] -= 1; //오른쪽 다리의 theta값을 1씩 줄여줌으로써 다리를 움직여줌 theta[9] += 1; //왼쪽 다리의 theta값을 1씩 늘여줌으로써 다리를 움직여줌 theta[11] += 1; //자전거 바퀴의 초기theta값이 0.0으로 설정되어 있으므로 1씩 연속적으로 증가 시켜줌으로써 회전시켜줌 } else theta[7] += 1; theta[9] -= 1; theta[11] += 1; //자전거가 앞쪽으로 이동하기 때문에 바퀴는 한 방향으로만 구른다. 따라서 theta값을 줄여줄 필요없이 계속 증가시켜줌 if(theta[7] == 220.0) direction=1; if(theta[7] == 140.0) direction=0; if(direction2==1) //초기 direction2는 0으로 설정되어 있음 theta[12] += 1; //theta[12] 값을 계속해서 1씩 증가, 초기 theta[12]값은 1200으로 설정되어 있음 position -= 0.02; //position값을 0.씩 감소 position -= 0.02; //position값을 0.씩 감소 } else //direction2=0 { theta[12] -= 1; position -= 0.02; //자전거의 이동은 한 방향이므로 좌표축의 position값을 계속해서 0.1씩 감소 if(theta[12] == 0.0) //theta[12]의 값이 0이 되었을 경우엔 자전거의 이동이 끝나고 이미 화면상에서 사라졌을 때이므로 position값을 12로 바꿔 주어서 자전거를 다시 화면 우상단에 위치시켜줌 position = 12.0; direction2 = 1; if(theta[12] == 1200.0) //theta[12]의 값이 1200이 되었을 경우는 자전거를 다시 우상단에 위치시켜 direction2=0인 경우로 보내 position값과 theta값을 다시 감소시켜 준다 direction2 = 0; display();

프로젝트 결과물 첨부파일 실행파일