목차
국문요약
제1장. 서론
1. 연구 목적
2. 연구의 중요성
3. 연구의 독창성
4. 연구의 기대효과
제2장. 관련 연구
1. 연구 수행 방법
2. 개발 환경
제3장. 연구 내용
제4장. 연구 결과
제5장. 결론
참고문헌
제1장. 서론
1. 연구 목적
2. 연구의 중요성
3. 연구의 독창성
4. 연구의 기대효과
제2장. 관련 연구
1. 연구 수행 방법
2. 개발 환경
제3장. 연구 내용
제4장. 연구 결과
제5장. 결론
참고문헌
본문내용
아가면서 개발을 완료할 예정이다.
2. 개발 환경
가. 운영체제 : Windows 7 64Bit
나. 개 발 툴 : Visual Studio 2010
다. 모 델 링 : Maya2013
라. 렌 더 링 : Ogre3D 1.8.1
마. 물리엔진 : Bullet 1.79
바. 기 타 : OpenGUI (기타 애드온 추가, 변경 가능함)
3. 연구 내용
Ogre3D 소개
C++ 기반의 오픈 소스 렌더링 엔진으로 윈도우, 리눅스, 맥OS 등의 다양한 플랫폼의 개발 환경을 지원한다. 1.7x 버전 이후로 라이선스가 MIT 로 변경되어 상용으로 개발을 진행하여 배포하더라도 추가 비용은 지불하지 않는다. 국내에는 Ogre3D를 연구하고 토론하는 포럼 등이 활성화 되진 않았지만, 외국의 경우에는 포럼도 어느 정도 활성화가 되어 있는 상태이다. 엄밀히 따지면 게임 엔진은 아니기 때문에 게임 제작의 편의성 부분에서는 조금 떨어지고, 이용 방법이 직관적이지는 않지만, 기본 렌더링 기능에 추가 기능이나 애드온을 통합하여 사용하여야 하므로 기본적인 게임 엔진의 구성에 대한 이해를 하기에는 좋은 학습 효과가 있을 수 있다.
가. Steering
1) 사용자 입력으로 차량이 좌우로 회전
2) 바닥, 타이어의 마찰력 외 물리적 요소에 의해 회전 각도가
점점 늘어나거나(understeering) 줄어드는(oversteering) 현상.
3) 키보드의 입력을 받아 Steering 값을 증가 또는 감소시킴
4) Steering 각도를 제한 두어 범위를 벗어나지 않게 함
나. Straights
1) 차량의 직선 운동으로 엔진에 힘이 주어짐
2) 여러 물리적인 요소를 감안하여 가속도에 영향을 준다
3) 엔진의 힘은 차량의 엔진에 따라 제한 된다.
다. Breaking
1) 차량에 제동을 거는 힘
2) 여러 물리적인 요소를 감안하여 감속도에 영향을 준다
3) 브레이크의 힘은 제한되고, 그 브레이크의 힘만큼 엔진의 힘을 감소시킴
라. Collision
1) 오브젝트를 감싸는 사각형의 충돌을 비교
2) 사각형 간의 교차 여부만 검사하면 되므로 계산 속도가 매우 빠름
3) 오브젝트의 형태가 복잡하거나 오브젝트를 감싸는 사각형의 공백부분이 많으면 검사 결과가 부정확 해지는 단점이 있다.
4) 3차원 상의 게임 이므로 이를 응용하여 오브젝트를 감싸는 육면체를
이용하거나 간단한 다면체를 이용하여 충돌 검사를 할 예정
마. Friction
1) 오브젝트가 멈춰있거나 움직이는 동안에 받는 마찰력을 말한다.
2) 지면, 공기의 마찰력 등 여러 마찰력에 따라 차량의 힘에 영향을 미친다.
3) 추후 구현에는 steering 과 breaking 등에도 마찰력이 영향을 미칠 예정
바. 클래스 다이어그램
제3장 연구 결과
아직 개발이 설계와 진행 단계에 있어, 결과 화면은 아직 준비 하지 못함. 현재 진행 사항에 대해 간략히 보고하자면, 현재 관련 연구 항목을 분석하여 기초적인 차량의 움직임을 Bullet을 사용하여 적용시켜 보고, 추가를 해 나아가는 과정에 있음. 방학 기간 중에 물리엔진 구현을 마치고, 사운드와 UI 등 기타 기능과 세부적인 물리엔진의 기능을 구현해 나아갈 예정임.
제4장 결론
1. 결론
게임 산업이 발전하고, 컴퓨터 그래픽스 기술이 발달하면서 게임에서의 움직임 역시 중요시 되고, 이로 인해 물리 엔진의 기능이나 물리 시뮬레이션의 중요성 역시 중요시 되어가고 있다.
본 연구에서는 이런 추세에 따라 직접 물리엔진을 변형 제작하여 레이싱 게임에서의 차량의 움직임을 직접 시뮬레이션 하는 데에 주안점을 두고 있다. 이런 부분은 우리나라 게임 산업이 외국에 비해 약한 물리적인 시뮬레이션과 움직임이 잘 나타나야 하는 게임 장르의 제작이나, 게임 엔진의 제작 부분에서 많은 기여를 할 것이라고 생각하였다.
아직 개발이 완료 되지 않아서 모든 결론을 지을 수는 없겠지만, 일단 진행 과정에서 발생한 문제와 개선 사항에 대해 간단히 말하겠다.
2. 발견된 문제점과 개선할 내용
가. 버전 간의 차이점으로 인한 문제
아무래도 오픈 소스 기반의 렌더링 엔진이기 때문에, 버전 업이 될 경우 삭제되는 함수가 있는 경우와 변경 되는 부분이 있기 때문에, 예제나 도움을 구하더라도 적용을 할 수 없거나 특정 버전에서 특정 애드온이 호환이 안 되는 등의 문제가 조금 있다. 이런 부분은 버전을 맞추어 가면서 개발을 진행해 나가거나 애드온의 기능을 직접 구현하거나 비슷한 기능의 다른 애드온을 사용하여 개선해 나아갈 예정이다. 또한, 많은 경우 윈도우 보다는 리눅스에서의 개발 환경을 기준으로 만들어진 애드온들이 종종 있어, 빌드 시에 충돌이 일어나는 부분들이 있는데, 이 부분은 CMake 등을 이용해 최대한 해결해 나아가면서 진행하고 있으며, 불가피한 경우에는 툴의 선택을 조금은 변경해 나아갈 수도 있다.
나. 자동차 동역학의 문제
개발을 진행 해 나아가면서, 자동차 동역학에 대한 부분에 자료를 수집하고 분석하는 과정에서 어려 문제점 들이 발생하였다. 보통 인터넷에 있는 차량 시뮬레이션의 경우에는 대부분 예제 수준의 기초적인 움직임만을 보여주거나, 물리 기반으로 시뮬레이션을 하지 않고, 단순히 따라 하거나 아케이드 장르의 게임들이 많았다. 그리고 자동차 동역학에 대한 자료들은 반대로 오히려 실제 자동차 동역학에 대한 부분이 주를 이루어 매우 복잡하고, 난해한 부분이 많았다. 적절히 시뮬레이션이 이루어진 게임의 경우에는 대부분 자동차 게임을 전문적으로 제작 하는 회사의 자체 엔진인 경우가 주를 이루었고, 이 경우에는 오픈 되어 있지 않기 때문에 어려움을 겪고 있다. 그래서 이 부분에 대한 문제는 자동차 동역학 자료를 찾아 구현을 적당한 선에서 간소화 시켜 구현해 나아가고 있으며, 난해 한 부분은 지도 교수님과 협의하고 방학기간 중에 시간 투자를 하여 해소해 나갈 예정이다.
참고문헌
[1] 한국콘텐츠진흥원, 2012 대한민국 게임백서
[2] 위키백과, 컴퓨터 그래픽스
[3] 블로그, Iterative or Incremental Lifecycle Models
[4] 웹사이트, Car Physics for Games (by Marco Monster)
2. 개발 환경
가. 운영체제 : Windows 7 64Bit
나. 개 발 툴 : Visual Studio 2010
다. 모 델 링 : Maya2013
라. 렌 더 링 : Ogre3D 1.8.1
마. 물리엔진 : Bullet 1.79
바. 기 타 : OpenGUI (기타 애드온 추가, 변경 가능함)
3. 연구 내용
Ogre3D 소개
C++ 기반의 오픈 소스 렌더링 엔진으로 윈도우, 리눅스, 맥OS 등의 다양한 플랫폼의 개발 환경을 지원한다. 1.7x 버전 이후로 라이선스가 MIT 로 변경되어 상용으로 개발을 진행하여 배포하더라도 추가 비용은 지불하지 않는다. 국내에는 Ogre3D를 연구하고 토론하는 포럼 등이 활성화 되진 않았지만, 외국의 경우에는 포럼도 어느 정도 활성화가 되어 있는 상태이다. 엄밀히 따지면 게임 엔진은 아니기 때문에 게임 제작의 편의성 부분에서는 조금 떨어지고, 이용 방법이 직관적이지는 않지만, 기본 렌더링 기능에 추가 기능이나 애드온을 통합하여 사용하여야 하므로 기본적인 게임 엔진의 구성에 대한 이해를 하기에는 좋은 학습 효과가 있을 수 있다.
가. Steering
1) 사용자 입력으로 차량이 좌우로 회전
2) 바닥, 타이어의 마찰력 외 물리적 요소에 의해 회전 각도가
점점 늘어나거나(understeering) 줄어드는(oversteering) 현상.
3) 키보드의 입력을 받아 Steering 값을 증가 또는 감소시킴
4) Steering 각도를 제한 두어 범위를 벗어나지 않게 함
나. Straights
1) 차량의 직선 운동으로 엔진에 힘이 주어짐
2) 여러 물리적인 요소를 감안하여 가속도에 영향을 준다
3) 엔진의 힘은 차량의 엔진에 따라 제한 된다.
다. Breaking
1) 차량에 제동을 거는 힘
2) 여러 물리적인 요소를 감안하여 감속도에 영향을 준다
3) 브레이크의 힘은 제한되고, 그 브레이크의 힘만큼 엔진의 힘을 감소시킴
라. Collision
1) 오브젝트를 감싸는 사각형의 충돌을 비교
2) 사각형 간의 교차 여부만 검사하면 되므로 계산 속도가 매우 빠름
3) 오브젝트의 형태가 복잡하거나 오브젝트를 감싸는 사각형의 공백부분이 많으면 검사 결과가 부정확 해지는 단점이 있다.
4) 3차원 상의 게임 이므로 이를 응용하여 오브젝트를 감싸는 육면체를
이용하거나 간단한 다면체를 이용하여 충돌 검사를 할 예정
마. Friction
1) 오브젝트가 멈춰있거나 움직이는 동안에 받는 마찰력을 말한다.
2) 지면, 공기의 마찰력 등 여러 마찰력에 따라 차량의 힘에 영향을 미친다.
3) 추후 구현에는 steering 과 breaking 등에도 마찰력이 영향을 미칠 예정
바. 클래스 다이어그램
제3장 연구 결과
아직 개발이 설계와 진행 단계에 있어, 결과 화면은 아직 준비 하지 못함. 현재 진행 사항에 대해 간략히 보고하자면, 현재 관련 연구 항목을 분석하여 기초적인 차량의 움직임을 Bullet을 사용하여 적용시켜 보고, 추가를 해 나아가는 과정에 있음. 방학 기간 중에 물리엔진 구현을 마치고, 사운드와 UI 등 기타 기능과 세부적인 물리엔진의 기능을 구현해 나아갈 예정임.
제4장 결론
1. 결론
게임 산업이 발전하고, 컴퓨터 그래픽스 기술이 발달하면서 게임에서의 움직임 역시 중요시 되고, 이로 인해 물리 엔진의 기능이나 물리 시뮬레이션의 중요성 역시 중요시 되어가고 있다.
본 연구에서는 이런 추세에 따라 직접 물리엔진을 변형 제작하여 레이싱 게임에서의 차량의 움직임을 직접 시뮬레이션 하는 데에 주안점을 두고 있다. 이런 부분은 우리나라 게임 산업이 외국에 비해 약한 물리적인 시뮬레이션과 움직임이 잘 나타나야 하는 게임 장르의 제작이나, 게임 엔진의 제작 부분에서 많은 기여를 할 것이라고 생각하였다.
아직 개발이 완료 되지 않아서 모든 결론을 지을 수는 없겠지만, 일단 진행 과정에서 발생한 문제와 개선 사항에 대해 간단히 말하겠다.
2. 발견된 문제점과 개선할 내용
가. 버전 간의 차이점으로 인한 문제
아무래도 오픈 소스 기반의 렌더링 엔진이기 때문에, 버전 업이 될 경우 삭제되는 함수가 있는 경우와 변경 되는 부분이 있기 때문에, 예제나 도움을 구하더라도 적용을 할 수 없거나 특정 버전에서 특정 애드온이 호환이 안 되는 등의 문제가 조금 있다. 이런 부분은 버전을 맞추어 가면서 개발을 진행해 나가거나 애드온의 기능을 직접 구현하거나 비슷한 기능의 다른 애드온을 사용하여 개선해 나아갈 예정이다. 또한, 많은 경우 윈도우 보다는 리눅스에서의 개발 환경을 기준으로 만들어진 애드온들이 종종 있어, 빌드 시에 충돌이 일어나는 부분들이 있는데, 이 부분은 CMake 등을 이용해 최대한 해결해 나아가면서 진행하고 있으며, 불가피한 경우에는 툴의 선택을 조금은 변경해 나아갈 수도 있다.
나. 자동차 동역학의 문제
개발을 진행 해 나아가면서, 자동차 동역학에 대한 부분에 자료를 수집하고 분석하는 과정에서 어려 문제점 들이 발생하였다. 보통 인터넷에 있는 차량 시뮬레이션의 경우에는 대부분 예제 수준의 기초적인 움직임만을 보여주거나, 물리 기반으로 시뮬레이션을 하지 않고, 단순히 따라 하거나 아케이드 장르의 게임들이 많았다. 그리고 자동차 동역학에 대한 자료들은 반대로 오히려 실제 자동차 동역학에 대한 부분이 주를 이루어 매우 복잡하고, 난해한 부분이 많았다. 적절히 시뮬레이션이 이루어진 게임의 경우에는 대부분 자동차 게임을 전문적으로 제작 하는 회사의 자체 엔진인 경우가 주를 이루었고, 이 경우에는 오픈 되어 있지 않기 때문에 어려움을 겪고 있다. 그래서 이 부분에 대한 문제는 자동차 동역학 자료를 찾아 구현을 적당한 선에서 간소화 시켜 구현해 나아가고 있으며, 난해 한 부분은 지도 교수님과 협의하고 방학기간 중에 시간 투자를 하여 해소해 나갈 예정이다.
참고문헌
[1] 한국콘텐츠진흥원, 2012 대한민국 게임백서
[2] 위키백과, 컴퓨터 그래픽스
[3] 블로그, Iterative or Incremental Lifecycle Models
[4] 웹사이트, Car Physics for Games (by Marco Monster)
소개글