컴퓨터공학프로젝트b 복셀길들이기:...

1
컴퓨터공학프로젝트B 복셀길들이기 : 레고블록을 이용한 소셜 네트워크 게임 설계 및 구현 박유림, 변세진, 이서진 Specification 개발환경(IDE) MonoDevelop 개발도구 Unity3D, OpenCV, MySQL 개발언어 C# S/W 개발환경 H/W 구성장비 캠코더 프로젝트 소개 사용자가 자신의 가상공간에 설치할 모델을 복셀 단위의 블록을 이용하여 직접 제작하는 방식의 소셜네트워크게임. 단순히 모델을 제작하는 것 뿐 아니라, 모델에 특성을 부여하면 그 특성에 맞는 행동이 가능. 친구와 함께 하며 독창적인 공간을 자랑하고 개성을 나타낼 수 있는 플레이 가능. 기능 영상처리 캠코더로 촬영한 영상을 이용해 레고를 인식. 게임에 저장 게임 클라이언트 UI 및 모델 커스터마이징. 모델들의 움직임과 이벤트 발생. 데이터베이스 및 클라우드 서버 회원정보를 영구 저장. 이를 통해 친구 방문 기능. Scene 구성도 로그인 메인 화면 친구 방문 블록 구입 모델 에디터 특성 부여 모델 설치 등록 하기 레고 만들기 데이터베이스 ERD 및 저장 테이블 회원 관리 친구 목록 관리 유저 월드 관리 DB [MySQL] Cloud Server Game Client [Unity3D ] UI 제공 컨텐츠 제공 S/W Archtecture 실행화면 및 기능 구현 사용자가 자신의 계정을 통해 자신의 월드로 들어갈 수 있다. 만약 계정이 없을 경우 계정을 새로 등록할 수 있다 사용자가 보유한 게임 머니를 사용하여 원하는 색상의 블록을 구입할 수 있다 구입한 블록은 사용자의 인벤토리에 저장되고 모델 에디터 화면에서 사용 수량을 입력하여 한 번에 대량으로 구매 할 수 있다 블록패키지를 한꺼번에 구매 할 수도 있다. 사용자가 인벤토리에 가지고 있는 블록을 쌓아서 모델을 커스터마이즈 할 수 있다. 정해진 그리드 위에 블록을 쌓을 수 있고, 잘 못 쌓은 경우 한 블록씩 제거하거나 지금까지의 작업 전체를 취소 가능하다. 좌우360도, 상하 180도로 회전 가능 하도록 하여 사용자에게 편의를 제공한다. 에디터에서 사용된 블록은 인벤토리에서 제거 만든 모델에 사람, 집, 탈 것, 친구 등 특성을 부여한다. 모델이 월드에 설치되면, 부여된 특징에 따라 움직임과 행동을 수행하게 된다. 각 특성에 따라 어떤 행동을 수행하는 가에 대한 설명을 UI에서 제공한다. 로그인 화면 블록 구입 블록 에디터 특성부여 영상처리를 이용한 레고 인식 실세계의 모델을 캠코더로 촬영한 영상을 분석. 처리하여 게임에서 사용할 수 있는 3D 오브젝트로 재구성한다. 기성 블록 제품(Lego)을 하나씩 쌓을 때마다 컷을 촬영하고 이전에 저장된 컷과 새로 촬영된 컷을 비교한다. 추가된 블록의 색상과 깊이(쌓인 높이)를 판별하는 영상 처리 기법을 사용한다 회원 이름 이메일 친구 친구 아이디 친구이름 인벤토리 블록 아이디 블록색상 소지개수 모델정보 블록 아이디 position x,y,z color r,g,b 모델list 모델 아이디 모델이름 특성 제작자 아이디 사용횟수 dialog 1~6 추가 설치 소지 레벨 비밀번호 아이디 구성 제작 월드 설치된 모델 아이디 모델이름 월드내 position x,y,z 월드내rotatio n x,y,z 월드내 Scale x,y,z 구성 모델 좌표계에서의 블록의 위치 정보 E-R 다이어그램 중요 알고리즘 및 적용기술 Raycasting을 통해 마우스 인풋에 대한 육면체 모델의 Face 인지 블록을 클릭하는 방향으로 지정한 색의 블록이 추가되도록 하기 위해선 유저가 클릭한 방향이 육면체의 위, 아래, 동, 서, 남, 북 방향 중 어느 방향인지 인지하여 그 방향으로 새 블록을 추가해야 한다. 이를 위해 유저의 마우스 클릭한 블록방향을 노멀 벡터를 이용하여 분류하여 그에 맞는 동작을 하도록 설계 모델의 수치적 데이터 전환 및 수치적 데이터로부터의 모델 재구성 하나의 클래스를 만들어 모델을 구성하는 블록들의 local x, y, z좌표 및 블록들의 색, 모델의 사용 횟수, 특성 값 등을 하나로 인스턴스화해서 관리 메인 공간에 설치될 경우 필요한글로벌 위치, 회전, 크기 등의 정보는 모델저장정보와는 독립적으로 관리할 수 있도록 설계 모델에 지정한 특성에 따른 움직임에 관한 알고리즘 사람으로 제작한 모델의 경우 수시로 raycast를 쏘아 건물로 지정된 모델을 인식하여 피해갈 수 있도록 만들었으며 특히 자기 자신의 캐릭터로 지정한 모델일 경우 a* 알고리즘을 사용하여 공간상에서 터치한 위치까지 최단경로로 가도록 구현 영상처리(OpenCV)를 통하여 레고 인식 레고를 놓기 전과 후로 나누어 영상의 색깔 변화를 계산하여 놓인 레고를 판별 영상의 비트맵 이미지의 RGB 색깔 값의 변화량을 계산하고 레고가 높아짐에 따라 생기는 그림자는 HSV 색깔 값의 변화량을 계산하여 예외처리를 할 수 있게 구현 레고의 위치를 찾는 알고리즘 레고 판의 사이즈가 32*32이기 때문에 레고의 위치를 0~1021라고 저장하고 층마다 정수형 리스트를 만들어 null로 초기화 맨 위층의 리스트부터 탐색을 하여 방금 놓은 리스트의 위치와 같은 위치를 저장하고 있는 리스트가 있으면 한 층위의 리스트에 레고의 위치를 저장

Upload: lykhanh

Post on 29-Aug-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 컴퓨터공학프로젝트B 복셀길들이기: 레고블록을이용한소셜네트워크…cms.ewha.ac.kr/user/cse/k2board/project/7.pdf · 방식의소셜네트워크게임. •

컴퓨터공학프로젝트B

복셀길들이기 : 레고블록을 이용한소셜네트워크 게임설계 및구현박유림,  변세진,  이서진

Specification

개발환경(IDE) MonoDevelop

개발도구 Unity3D, OpenCV, MySQL

개발언어 C#

S/W개발환경

H/W구성장비

캠코더

프로젝트 소개

• 사용자가 자신의 가상공간에 설치할 모델을 복셀 단위의 블록을 이용하여 직접 제작하는

방식의 소셜네트워크게임.

• 단순히 모델을 제작하는 것 뿐아니라, 모델에 특성을 부여하면 그특성에 맞는 행동이 가능.

• 친구와 함께 하며 독창적인 공간을 자랑하고 개성을 나타낼 수 있는플레이 가능.

기능

영상처리캠코더로촬영한 영상을이용해 레고를인식. 게임에저장

게임 클라이언트UI 및 모델 커스터마이징. 모델들의움직임과이벤트 발생.

데이터베이스및 클라우드서버회원정보를영구 저장. 이를 통해 친구방문 기능.

Scene 구성도

로그인메인화면

친구방문

블록구입

모델에디터

특성부여

모델설치

등록하기

레고만들기

데이터베이스 ERD 및 저장 테이블

회원 관리

친구 목록 관리

유저 월드 관리DB[MySQL]

Cloud Server

Game Client[Unity3D ]

UI 제공

컨텐츠 제공

S/W Archtecture

실행화면 및 기능 구현

사용자가 자신의 계정을 통해 자신의 월드로 들어갈 수있다.

만약 계정이 없을 경우 계정을 새로 등록할 수 있다

사용자가 보유한 게임 머니를 사용하여 원하는 색상의 블록을 구입할 수있다

구입한 블록은사용자의인벤토리에 저장되고모델 에디터 화면에서 사용수량을 입력하여 한번에 대량으로 구매 할수 있다

블록패키지를 한꺼번에 구매 할수도 있다.

사용자가인벤토리에 가지고 있는 블록을 쌓아서 모델을 커스터마이즈할수 있다.

정해진 그리드 위에 블록을 쌓을 수 있고, 잘 못 쌓은 경우 한 블록씩제거하거나 지금까지의 작업 전체를 취소 가능하다.

좌우360도, 상하 180도로 회전 가능 하도록 하여 사용자에게 편의를제공한다.

에디터에서 사용된 블록은 인벤토리에서 제거

만든 모델에 사람, 집, 탈것, 친구 등특성을 부여한다.

모델이 월드에 설치되면, 부여된 특징에 따라 움직임과 행동을 수행하게된다.

각 특성에 따라 어떤 행동을 수행하는 가에 대한 설명을 UI에서 제공한다.

로그인 화면

블록 구입

블록 에디터

특성부여

영상처리를 이용한 레고 인식

실세계의 모델을 캠코더로 촬영한 영상을 분석. 처리하여 게임에서사용할 수 있는 3D오브젝트로 재구성한다.

기성블록제품(Lego)을하나씩 쌓을 때마다 컷을 촬영하고 이전에 저장된컷과 새로 촬영된 컷을 비교한다.

추가된 블록의 색상과 깊이(쌓인 높이)를 판별하는 영상 처리 기법을사용한다

회원

이름

이메일

친구

친구아이디

친구이름

인벤토리

블록아이디

블록색상

소지개수

모델정보

블록아이디 position x,y,z

color r,g,b

모델list

모델아이디

모델이름

특성

제작자아이디

사용횟수

dialog 1~6

추가

설치소지

레벨

비밀번호 아이디

구성

제작

월드

설치된모델아이디

모델이름 월드내position x,y,z

월드내rotation x,y,z

월드내Scalex,y,z

구성

모델 좌표계에서의 블록의 위치 정보E-R 다이어그램

중요 알고리즘 및 적용기술

Raycasting을통해마우스 인풋에 대한 육면체 모델의 Face 인지

블록을 클릭하는 방향으로 지정한 색의 블록이 추가되도록 하기 위해선 유저가 클릭한 방향이 육면체의 위, 아래, 동, 서, 남, 북 방향 중

어느 방향인지 인지하여 그 방향으로 새 블록을 추가해야 한다. 이를 위해 유저의 마우스 클릭한 블록방향을 노멀 벡터를 이용하여

분류하여 그에 맞는 동작을 하도록 설계

모델의 수치적 데이터 전환 및 수치적 데이터로부터의모델 재구성

하나의 클래스를 만들어 모델을 구성하는 블록들의 local x, y, z좌표 및 블록들의 색, 모델의 사용 횟수, 특성값 등을 하나로

인스턴스화해서 관리

메인 공간에 설치될 경우 필요한글로벌 위치, 회전, 크기 등의 정보는 모델저장정보와는 독립적으로 관리할 수있도록 설계

모델에 지정한 특성에 따른 움직임에관한 알고리즘

사람으로 제작한 모델의 경우 수시로 raycast를 쏘아 건물로 지정된 모델을 인식하여 피해갈 수 있도록 만들었으며 특히 자기 자신의

캐릭터로 지정한 모델일 경우 a* 알고리즘을 사용하여 공간상에서 터치한 위치까지 최단경로로 가도록 구현

영상처리(OpenCV)를통하여 레고 인식

레고를 놓기 전과 후로 나누어 영상의 색깔 변화를 계산하여 놓인 레고를 판별

영상의 비트맵 이미지의 RGB 색깔 값의변화량을 계산하고 레고가 높아짐에 따라 생기는 그림자는 HSV 색깔값의 변화량을 계산하여

예외처리를 할 수 있게 구현

레고의 위치를 찾는 알고리즘

레고 판의 사이즈가 32*32이기때문에레고의 위치를 0~1021라고저장하고 층마다 정수형 리스트를 만들어 null로초기화

맨 위층의 리스트부터 탐색을 하여 방금 놓은 리스트의 위치와 같은 위치를 저장하고 있는 리스트가 있으면 한 층위의 리스트에 레고의

위치를 저장