[캡스톤 디자인] AR 메타버스 만들기

KYJ의 Tech Velog·2023년 4월 4일
0

프로젝트

목록 보기
2/5
post-thumbnail
  • 프로젝트 소개
  • 게임 소개
  • 담당 업무
  • 프로젝트 회고

프로젝트 소개

Unity의 경험이 거의 없는 친구 2명과 함께 진행한 졸업 작품입니다.

친구가 Visual Localization 이라는 오픈 소스를 가져와서 시작하게 되었습니다.

Visual Localization

  1. 서비스화하고자 하는 공간에 대한 데이터를 디지털화하고 특징점을 추출하여 데이터베이스를 구축합니다.
  2. 데이터베이스가 구축된 공간에서 카메라로 촬영한 이미지를 데이터베이스의 특징점과 비교하여 이미지를 촬영한 위치 정보를 도출합니다.
    Link - https://github.com/naver/kapture-localization

애플리케이션 소개

앞서 설명했던 Visual Localization 기술과 Unity AR Foundation을 이용하여 새로운 모바일 AR 메타버스를 제공하는 애플리케이션입니다.


담당 업무

애플리케이션 개발

  • Unity의 System.Net.Sockets
  • Unity의 AR Foundation

소켓 통신

디바이스로 촬영한 이미지를 서버로 전송해야 합니다.

그리고 서버에서 Visual Localization으로 계산된 위치 정보를 클라이언트에 받아와 디바이스의 Unity 상의 좌표를 서버에서 받아온 위치로 동기화시켜야 합니다.

애플리케이션을 클라이언트로 하여 서버와 실시간 통신을 하기 위해 소켓 통신을 활용하였습니다.

프로젝트 초기에는 실시간 통신으로 디바이스의 위치 정보를 실시간으로 서버에서 받아올 계획이었습니다.

하지만 실시간으로 보내는 이미지가 흔들리지 않은 이미지라는 보장이 없고, 다수의 테스트를 거친 결과 계산한 위치 정보가 항상 예상한 좌표와 맞지는 않았습니다.

AR Foundation

결국 실시간 통신을 포기하고 Unity의 AR Foundation을 이용하여 AR Camera의 좌표를 디바이스의 실시간 좌표로 이용하였고, 서버에서 전송해준 위치 정보는 위치를 보정해주는 용도로 활용하였습니다.

좌표계 변환

그리고 서버에서 계산한 위치 정보가 유니티 상의 좌표계와 반대였습니다.

유니티는 왼손 좌표계를 사용하지만 계산한 위치 정보는 오른손 좌표계의 정보였습니다.

저는 좌표계 변환을 위해 좌표계 변환 오픈 소스 코드를 이용하여 계산한 위치 정보를 왼손 좌표계로 변환하여 활용하였습니다.


프로젝트 회고

서버-클라이언트 통신 방식

프로젝트를 끝내고 나서야 실시간 통신이 아니고 서버가 클라이언트에게 먼저 보낼 일이 없다면 HTTP 통신이 좋을것 같다는 생각이 들었습니다.

HTTP 통신은 클라이언트가 이미지를 전송(요청)하면 서버가 위치 정보를전송(응답)하는 단방향 통신이고 연결을 계속 유지하지 않아서 리소스를 적게 소모한다는 이점이 있기 때문입니다.

협업

이 프로젝트를 팀원 3명과 협업하는 데에 있어서 많은 어려움이 있었습니다.

1년을 진행하는 동안 온전히 이 프로젝트에만 몰두할 수 있었던 상황이 아니었고 각자의 일하는 성향이 너무나도 달랐습니다.

프로젝트에만 온전히 몰두할 수 있는 상황이 아니었기 때문에 각자의 작업 시간이 달랐습니다.

각자의 작업을 하다가 다른 팀원의 의견이 필요할 때, 또는 다른 팀원들의 동의가 필요할 때에 다른 팀원에게 연락이 잘 닿지 않는 경우가 종종 있었습니다.

이렇게 프로젝트가 진행되면서 누군가의 의견이 팀 의사결정에 반영되지 않는 것을 가볍게 생각하게 되었습니다.

그래서 저는 일주일에 한 번 있는 학교에서 배정해준 멘토님과의 미팅 시간에 갈등에 관해서 이야기하자고 말을 꺼냈습니다.

멘토님은 갈등관리를 위해서는 서로의 불만을 이야기할 때에는 논리적이고 객관적으로 이야기하기보다는 그 상황에 대해 느낀 감정을 많이 표현하라고 조언하셨습니다.

친구들과 함께 조언대로 서로의 생각을 나누고 나니 프로젝트를 원활하게 진행되었습니다.

협업을 하기 위해서는 각자의 일을 잘 수행할 뿐만 아니라 프로젝트를 진행하면서 생기는 문제에 대해서 해결하는 것도 중요하다는 것을 알게 되었습니다.


0개의 댓글