Korea Digital Contents Society
[ Article ]
Journal of Digital Contents Society - Vol. 24, No. 5, pp.1131-1138
ISSN: 1598-2009 (Print) 2287-738X (Online)
Print publication date 31 May 2023
Received 28 Mar 2023 Revised 10 Apr 2023 Accepted 18 Apr 2023
DOI: https://doi.org/10.9728/dcs.2023.24.5.1131

증강현실을 이용한 고양이 육성 시뮬레이션에 대한 연구

김태은*
남서울대학교 멀티미디어학과 교수
Cat Raising Simulation Using Augmented Reality
Tae-Eun Kim*
Professor, Department of Multimedia, Namseoul University, Cheonan 31020, Korea

Correspondence to: *Tae-Eun Kim Tel: +82-41-580-2192 E-mail: tekim@nsu.ac.kr

Copyright ⓒ 2023 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

초록

최근 많은 사람이 반려동물들을 키우고 있다. 특히 반려동물 중에서 고양이를 키우고자 하는 사람들이 많다. 본 연구는 반려동물을 기르고 싶어도 상황이나 여건이 따르지 못해 감상만 해야 하는 ‘뷰니멀’ 족을 대상으로 하는 체험 몰입형 콘텐츠를 개발하는 연구이다. 고양이에 대해 정확한 정보를 습득할 수 있고 증강현실 기술을 통해 더욱 현실감 있게 고양이를 양육하는 체험형 콘텐츠이다. 적용된 기술은 블루투스 통신을 이용하여 다른 가상의 공간에 존재하는 애완고양이와도 교감할 수 있는 콘텐츠이다. 콘텐츠를 제작할 때 사용된 여러 응용 프로그램으로는 Unity 3D엔진, AR Foundation 프레임워크, 3D MAX, Blender, JAVA AAR, C# Script 및 JSON 등 다양한 응용 프로그램을 혼합 적용하였다. 본 논문은 유니티 콘텐츠 및 증강현실 콘텐츠 제작과정을 실제 제작을 하면서 설명하는 최상위레벨의 인터렉션이 가능한 콘텐츠를 개발하는 연구이다. 우리는 본 연구를 통해서 증강현실의 여러 기술이 혼합된 새로운 형태의 현실감이 증대된 체험형 콘텐츠 제작에 대한 개발경험을 공유하고, 나아가 보편적인 메타버스현장에서도 활용이 가능한 가상증강콘텐츠를 제시하고자 하였다.

Abstract

Many people adopt pets, with many preferring cats among others. This study aimed to develop hands-on immersive content targeting the "Venimal" people who want to raise pets but can only appreciate them because of unfavorable situations or conditions. It is an experiential content that can acquire accurate information about cats and raise cats more realistically through augmented reality technology. Using the applied technology, it is possible to communicate with pet cats in other virtual spaces via Bluetooth communication. Unity 3D Engine, AR Foundation Framework, 3D MAX, Blender, JAVA AAR, C# Script, and JSON were integrated and applied to various applications used to produce the content. The objective of this study was to develop content capable of interacting at the top level that explains the production process of Unity content and augmented reality content while also producing it. Through this study, we share our experience of developing a new type of experiential content that combines various technologies of augmented reality and present virtual augmented content that can be used in metaverse platforms.

Keywords:

Augmented Reality Content, Unity 3D Engine, Realistic Content, Cat-raising Simulation Content, Bluetooth Communication

키워드:

증강현실 콘텐츠, 유니티 3D엔진, 실감형 콘텐츠, 고양이 육성 시뮬레이션 콘텐츠, 블루투스통신

Ⅰ. 서 론

반려동물을 기르고 싶어도 상황이나 여건이 따르지 못하여서 동영상, 게임 등으로 대리만족을 하는 사람들을 뷰니멀 족이라고 한다. 이런 신조어가 나올 정도로 반려동물과 관련된 경제활동이 매년 늘어나는 추세이다[1]. 본 연구는 이러한 시장 가능성으로 제작된 고양이 육성 시뮬레이션인 폰캣(PhoneCat)을 설명하는 논문이다. 현재까지 닌텐도 DS 소프트웨어 중 가장 많이 판매된 콘텐츠인 닌텐독스와 비교 분석하여 콘첸츠의 방향성을 잡았다. 일본 발매 첫 주 매상이 168,000개를 기록하며, 2013년 9월 21일, 미국 닌텐도의 발표에 따르면 8월 22일 발매한 북미 닌텐독스와 일본 닌텐독스의 판매량의 합이 약 150만 개라고 한다.

해당 성공요인은 무엇일까? 닌텐도는 소프트웨어 회사이기도 하지만 하드웨어를 제작하는 회사이기도 하다. 해당 기기에 있는 카메라 모듈, 터치 모듈, 네트워크 모듈을 이용해 가상의 반려동물과 인터렉트할 수 있고, 소비자에게 몰입감을 선사했다. 닌텐도 하드웨어를 단순한 게임기가 아닌 커뮤니케이션의 도구로 활용했다는 점으로 게임 시장의 돌파구를 제시하였다.

하지만 닌텐독스는 해당 플랫폼인 닌텐도 DS 기기에 최적화되어 제작되었기 때문에 접근성이 좋지 않다는 단점이 있다. 닌텐독스 발매 당시 우리가 사용하고 있는 핸드폰의 성능이 게임에 적합하지 않았지만, 스마트폰의 등장으로 모바일 게임시장이 국내시장에서 크게 자리잡았기 때문에 우리는 콘텐츠의 플랫폼을 안드로이드로 정하여 소비자로 하여금 높은 접근성을 노렸다. Unity 엔진을 활용하여 근거리 유저 간 통신플레이를 즐길 수 있는 블루투스 통신이나 자신의 고양이를 현실세계에서 볼 수 있게 하기 위하여 구글의 AR Foundation 등 안드로이드 기기에서 활용할 수 있는 기능들을 적용하는 것에 목표를 두어 제작하였다. 프로젝트의 주요 기능에는 증강현실 기능, 블루투스 통신 기능, DB로 구축된 상점 시스템 기능, 현실 시간 반영한 고양이의 상태 기능, 랜덤으로 행동하는 고양이의 행동 기능이 있다.

그림 1은 닌텐도 사의 닌텐독스 3D영상을 증강하는 장면이다.

Fig. 1.

Nintendo Nintendogs AR


Ⅱ. 본 론

본 논문은 애완동물이 없는 예비 애완동물주인이나, 뷰니멀들에게 애완고양이 육성을 체험해볼 수 있는 콘텐츠 제작과정을 설명하는 논문이다. 닌텐독스의 기기와 안드로이드 기기의 큰 차이점은 안드로이드 기기는 스마트폰으로써 다양한 모듈이 탑재되어 있다는 점이다. 예를 들어 고화질 카메라는 증강현실 구현에 있어서 영상 합성 기술을 적용할 수 있게 하였다. 증강현실에는 대표적으로 마카인식 기술과 영상합성 기술이 있는데, 마카 인식은 높은 정확성을 가지지만 마커가 없으면 활용할 수 없다는 단점이 있다. 고화질 카메라로 이를 보완하게 되었다. 그림 2은 영상합성 기술을 사용하여 AR시연 모습이다. 실사환경에 가상고양이를 증강시킨 장면이다[2],[3].

Fig. 2.

Demonstration of Phone Cat AR

그림 3은 근거리 유저 간 블루투스 통신플레이의 시연 모습이다. LV.14 와 LV.19는 각각 다른 유저의 애완고양이이다.

Fig. 3.

Demonstration of Phonecat bluetooth communication

영상합성이 주는 이점은 어느 장소이든 카메라가 평면만 인식할 수 있다면 어디든지 물체를 렌더링 할 수 있다는 점이다. 상점에서 구입한 장신구를 착용하고 다양한 모션들로 고양이와 사진을 찍어 추억을 남기는 콘텐츠로 제작하였다.

2-1 증강현실(Augmented Reality)이란 무엇인가

이 콘텐츠에서 가장 중요한 기술은 증강현실 기술(Augmented Reality, AR))이다. 증강현실이란 사람이 눈으로 보는 현실 세계에 가상 물체를 겹쳐 보여주는 기술이다. 가상현실(Virtual Reality)은 현실 세계와 관련이 없이 가상의 공간을 보여주지만, 증강현실은 현실 세계 위에 가상의 물체를 올려서 겹쳐 보여 준다는 차이점이 있다[4],[5].

가장 유명한 증강현실 예시로는 2016년 구글 검색어에서 전 세계 1위를 한 ‘포켓몬 Go’이다. ‘포켓몬 Go’를 시작으로 선박, 항공, 제조공장 여러 기업에서 생산성을 높이기 위한 도구나 마케팅 도구로서 이를 적극적으로 활용하게 되었다.

이러한 증강현실 구현하기에는 세 가지 요소가 요구된다. 현실 세계를 트래킹하는 시스템, 트래킹 시스템을 얻은 정보를 바탕으로 현실 세계와 영상을 결합하는 그래픽 시스템, 그리고 출력해주는 디스플레이 시스템이다. 트래킹에는 카메라가 중요하다. 2009년에 마이크로소프트는 컨트롤러 없이 사용자의 신체를 이용하는 뎁스(depth) 카메라를 이용한 기기를 발매한다.

증강현실 기술을 구현하기 위해서는 이처럼 별도의 장비가 필요한데, 뎁스(depth) 카메라는 빛과 같이 외부간섭에 덜 취약하지만, 계산량이 많아 실시간 처리가 어렵고 다른 장비도 마찬가지로 가격에서 상용화되지 못했다. 하지만 스마트폰이 비약적으로 발전함에 따라 증강현실은 이미 보급된 모바일로 옮기게 되었다. 대표적인 기술로는 마커(Marker) 기반 기술, 슬램 기반 기술, 물체 인식 기술, 영상 합성 기술이 있다. 본 연구에서는 영상합성 기술을 접목하여 증강현실을 구현하였다[6].

2-2 기획

강아지나 고양이를 좋아하는 사람들이 많지만, 좋아한다고 무조건 반려동물을 기를 순 없다. 사료비, 치료비 등, 반려동물을 기른다는 것은 큰 책임감이 따른다. 농림축산검역본부가 발표한 신규 반려동물 등록 수 결과, 대부분의 사람이 반려동물을 끝까지 책임지지 못하고 있다는 것이다. 이는 10명 중의 1명꼴로 매우 낮은 비율을 보인다. 그렇기 때문에 예비 반려동물 주인에게 훈련과 교육용으로 제작하게 되었으며, 반려동물 시장이 계속해서 확장되면서 개나 고양이를 직접 키우는 대신에 동영상, 게임 등으로 반려동물을 보며 즐거움을 찾는 이들이 바로 ‘뷰니멀족’이다. 뷰니멀은 ‘보다(view)’와 ‘동물(animal)’의 합성어다. 이런 신조어가 나올 정도로 반려동물과 관련된 경제활동이 작년보다 늘어나는 추세인데, 이러한 시장 가능성으로 제작하게 된 ‘폰캣 : 고양이 시뮬레이터’이다.

‘폰캣 : 고양이 시뮬레이터’는 단순히 밥 주고, 놀아줘서 돌보는 기능, 즉 육성하는 시스템뿐만 아니라 하드웨어 모듈을 활용해 반려고양이와의 상호작용 즉 인터렉트 요소가 중요하다고 생각했다. 그 결과, 터치 모듈을 이용해 털 줍기, 쓰다듬기, 부르기 터치 요소, 고양이와 방을 꾸밀 수 있는 상점 요소, 근거리 통신인 블루투스 모듈을 이용해 친구의 고양이와 만나기 위해서 실제로 만나야 하는 요소, 실제 환경에 가상의 고양이를 렌더링하는 영상합성 AR 요소가 구현되었다.

2-3 디자인

이 콘텐츠를 시작하면 먼저 보이는 방의 디자인은 사용자가 편하게 플레이할 수 있도록 거실의 느낌이 들게 가구를 배치하고 전체적으로 색감을 따듯하게 하였다. 방에 있는 창문은 실제 시간을 기반으로 아침, 점심, 저녁을 표현하도록 했다. 현실세계와 가상세계의 시간을 동기화하는 것은 플레이어에게 몰입감을 주는 효과가 있다.

1) Modeling

기본적인 배경의 맵, 가구는 3D MAX에서 모델링하였다. 고양이 모델링은 Blender에서 작업했다. 텍스쳐는 substance painter를 사용해서 맵핑하였다. 그림 4는 배경 오브젝트 모델링이다.

Fig. 4.

Room background object modeling

밥 주기, 놀아주기, 상점 등 모든 콘텐츠가 이루어지는 방안은 깔끔하고 모던한 느낌을 냈으며 TV, 책상, 서랍, 옷장, 의자들을 조화롭게 배치함으로써 사용자가 가상현실 속 3D 배경을 보았을 때 현실감을 반영하였고, 아늑한 분위기를 느낄 수 있도록 구성하였다. 여러 개의 맵의 텍스쳐를 상점에서 구매해서 플레이어가 방의 벽지나 바닥을 장식할 수 있게 구성하였다.

고양이는 모바일 기기의 발열과 최적화를 위해, 털을 오브젝트로 표현하지 않고 노말맵으로 표현했다. 눈과 입안을 구현해서 좀 더 실제 같은 고양이를 표현했다. 처음 시작할 때 랜덤한 고양이가 주어지는데 다양한 종의 고양이가 랜덤으로 주어지기 위해 고양이의 텍스쳐는 여러 개를 만들어 게임의 다양성을 주었다[6]-[9].

2) UI

사용자가 콘텐츠 진행 중 읽어야 할 글자가 많기 때문에 평범한 하얀 바탕에 검은 글씨를 사용하여 가독성을 높여 UI를 제작했고 UI의 색감은 전체적인 방의 분위기와 어울리게 제작했다. 고양이의 발바닥 색을 생각해 주된 색상은 핑크색 계열의 톤을 사용했다. 핑크와 그린은 대조 색상으로 아주 잘 어울리므로 두 가지 색을 활용했다. 그림 5은 메인 씬 UI의 모습이다.

Fig. 5.

View of the main scene UI

그림 5 메인 씬에서는 고양이가 랜덤으로 움직이고 행동한다. 왼쪽 상단에는 AR기능, 블루투스 통신 기능, 고양이 프로필 확인할 수 있는 버튼들이 있다. 맨 하단에는 쇼핑하기, 먹이주기, 놀아주기 활동을 할 수 있는 버튼들이 있다. 고양이 머리 위에서는 현재 고양이가 심심한지 배가 고픈지에 대한 상태를 디스플레이해준다. 제일 상단에는 레벨, 이름, 친밀도, 메뉴 버튼이 있다.

그림 6은 블루투스 통신 Head up UI를 나타내는 예시이다.

Fig. 6.

Bluetooth communication Head up UI

폰캣에 사용된 UI는 두 가지 종류가 있다. 화면에 고정되는 UI와 사물에 고정되는 UI가 그것이다. 그림 6은 고양이 머리 위에 항상 고정된 UI는 Sceen Space- Camera를 이용했다[10]-[12].

그림 7은 게임의 메뉴화면이다. 게임의 공지사항과 볼륨설정, 앞서 언급한 것과 같이 콘텐츠가 진행하는 과정 중에서 사용자가 어려움 없이 진행해야 하므로 가독성을 높여 전체적인 게임의 진행 순서, 사용자가 어떻게 행동해야 하는지 명시해 주었다.

Fig. 7.

Menu screen of the game


Ⅲ. 개발 기술

이 콘텐츠는 Unity 3D 엔진을 사용하여 스크립트를 제작했다. 더욱이 안드로이드 기반 블루투스 통신은 유니티의 C#이 아니라 JAVA 기반으로 직접 모듈에 권한과 명령을 해야 해서 상당한 지식이 필요하다. JAVA의 AAR(Android Archive) 라이브러리를 활용해서 구현했다. 블루투스 통신을 사용하여 같은 게임을 즐기고 있는 근거리 유저의 고양이와 같은 공간에서 놀이를 할 수 있고, 성별이 다르다면 교배를 통해 새끼를 낳을 수 있다. 증강현실은 Google의 AR Foundation 프레임워크를 활용해 AR를 구현했다. 단순히 실제배경에 오브젝트를 띄우는 작업만 한 것이 아닌 HLSL을 스크립트 해서 그림자 쉐이더까지 구현하여 실제환경 같은 디테일을 더하였다. 유니티의 파일 입출력으로 JSON을 이용해 DB를 구축했다. 3D MAX과 블렌더를 사용하여 3D 캐릭터와 소품들을 모델링하고 리깅을 해 애니메이션까지 제작하였다. 제작한 애니메이션을 Unity의 통합된 애니메이션 메인 소프트웨어인 Mecanim을 이해하고 자연스러운 애니메이션 제작에 더욱 심혈을 기울였다. 또한, 모바일 환경은 3D 환경에서 발열에 취약하다. 프레임 최적화를 고려하여 제작하여야 했기 때문에 디버깅도 중요하지만, 실제 기기로 디버깅하고 성능 프로파일링하는 것이 중요하다.

3-1 애니메이션

사용자가 더욱 현실감 있는 고양이를 느끼게 하기 위해서는 스스로 움직이고 다양한 행동을 하는 고양이를 제작하고자 했다. ‘폰캣 : 고양이 시뮬레이터’에서는 다양한 애니메이션을 보여준다. (Idle, Walk, Tickle, Jump, Sit, Grab, Happy, Attract, 등) 15개의 애니메이션을 제작했다. 다양한 애니메이션은 주로 'Blender’를 사용하여 제작하였고 걷기, 눕기, 밥 먹기, 짖기 등 사용자에게 다양한 애니메이션을 보여줄 수 있다[7],[8].

3-2 AR 기능

AR 기술에는 대표적으로 마카인식 기술과 영상합성 기술이 있다. 마커 인식은 높은 정확성을 가지지만 마커가 없으면 활용할 수 없는 단점이 있다. 이를 보완하기 위해 영상합성 기술을 채택했다. Google의 AR Foundation 프레임워크를 활용해 AR을 구현하였다. 장신구를 착용, 다양한 모션들로 고양이와 사진을 찍어 추억을 남기는 콘텐츠로 제작하였다.

AR Foundation에서 제공하는 AR RAY CAST로 바닥 플레인을 탐지해서 해당 레이케스트가 닿는 부분에 물체를 소환한다. 스크립트에서는 해당 레이케스트가 닿은 위치에 소환하고 물체는 카메라 방향을 볼 수 있게 했다. 이미 물체가 소환된 경우에는 자리 이동만 할 수 있게 스크립트를 구성했다.

표 1은 증강현실 Raycast를 활용하여 오브젝트를 소환하는 스크립트이다.

Object summon script with augmented reality RayCast

표 2는 안드로이드 라이브러리 AAR 불러오는 스크립트 예시이다.

Android library AAR load script

3-3 블루투스 기능

증강현실을 탑재한 포켓몬고는 집 안이나 PC방에서 하던 기존 게임과는 달리 실외로 나가서 가상의 야생에 있는 포켓몬을 잡기 위해 실제 밖으로 나가야 하고, 움직여야 한다는 특징이 있다. 이러한 설정에 아이디어를 얻어서 폰캣은 본인의 고양이를 친구의 고양이와 만나기 위해서 실제로 만나야 한다. 이를 위해 근거리 통신인 블루투스를 사용한다.

스마트폰의 블루투스는 유니티에서 직접 접근하지 못하고 안드로이드 기반 언어는 JAVA를 사용해야 되기 때문에 안드로이드 스튜디오에서 미리 제작된 Android 라이브러리를 통해 접근할 수 있다.

상점은 따로 DB를 구축해 JSON으로 각 아이템 번호, 이름, 가격, 구매 유무를 관리했다. 향후 아이템을 추가하거나 제거할 때 편리하도록 구현했다.

표 3은 Json DB구축 예시이다.

Json DB deployment

유니티에서 기본적으로 제공하는 JsonUtility.ToJson를 사용했다. c#의 탬플릿 클래스를 사용해 List에 담아서 사용했다. DB 구축하기 위해서 txt파일을 파일 입력해서 File.ReadAllText(filePath) 불러온다. 다음에는 JsonUtility로 Json화 한다.

PC와 다르게 모바일 환경은 저장위치가 다르게 대응하기 때문에 Application.persistentDataPath앱의 저장되는 위치를 받아와서 사용하면 모바일 저장 위치를 확인 할 수 있다.

랜덤으로 작동하는 고양이의 행동을 발생하고자 유니티의 코루틴 함수를 사용해 Random.Range로 랜덤한 행동을 구현했다. 각 애니메이션은 랜덤한 시간으로 유지된다.

실제로 살아있는 듯한 느낌을 주기 위해 모든 행동은 랜덤으로 결정하게 구현했다. 코루틴 함수를 사용한 것은 Coroutine은 기존의 Thread를 좀 더 작은 단위로 쪼개어 사용할 수 있는 개념이기에 Thread에서 복수의 Coroutine이 실행될 경우 각 Thread가 가지는 Stack 메모리 영역도 하나가 되어 메모리 절약이 된다.

블루투스 통신에서 고양이 정보가 고양이의 머리위에 계속해서 띄워져 있어야 한다. playerpref로 저장되어 있던 정보를 불러와서 해당 오브젝트의 위치를 업데이트 구문에서 받아와 띄워준다. playerpfref는 보안에 취약하므로 간단한 정보만 저장했다. 예를 들어, 고양이의 위치는 매 10분마다 저장이 되어 다음에 앱을 실행해도 그 위치를 기억하는 로직도 구현했다. 그밖에 시간을 이용한 로직은 배고픔이나 심심함에도 적용이 되었다.

유니티에서는 클릭과 모바일의 터치가 객체가 따로 있다. Touch에는 다양한 객체의 상태가 있기 때문에 클릭이 아닌 터치로 구현하는 것이 좋다. Touch Phase는 가장 최근의 프레임에 손가락이 취한 동작을 나타내는데, Touch Phase의 열거형 값을 비교해 현재 터치 상태를 확인할 수 있다. Began, Moved, Stationary, Ended 및 Canceled이 터치하는 메뉴이다.

시네머신은 유니티 엔진에서 제공하는 카메라 연출 패키지이다. 시네머신에도 애니메이터를 만들어서 4번 터치했을 경우 고양이를 집중적으로 렌더링하는 카메라를 활성화할 수 있다.


Ⅳ. 실행결과

증강현실을 이용한 고양이 육성시뮬레이션을 Play했을 때 실행화면에서 보이는 영상에 대한 설명이다. 시작화면, 쇼핑몰인트로화면, 게임실행화면, 고양이와 교감하는 화면 등을 보여주고 있다.

그림 8은 고양이를 기를 때 필요한 여러 용품들을 판매하는 웹사이트 화면을 보여준다.

Fig. 8.

Websites selling cat products

그림 9는 게임 실행 장면이다.

Fig. 9.

Game execution scene

그림 10은 고양이와 놀아주는 화면이다. 여러 도구를 이용하여 고양이와 교감하고 고양이는 더욱더 건강하게 발육하는 모습으로 진화하는 장면이다.

Fig. 10.

The screen playing with the cat

개발된 시뮬레이션 게임에서는 고양이에게 필요한 여러 용품을 바로 구매할 수 있는 웹사이트와 연동할 수 있도록 하였다. 고양이에게 먹이를 주고 같이 교감하고 성장하는 모든 과정이 실제 현실에서 애완고양이를 양육하는 과정과 동일한 구조로 구성되었다. 개발구성단계부분에서 고양이 양육과정이 현실세계와 동일하게 상세한 부분까지 고려하여서 제작되었다는 점을 알 수 있다.


Ⅴ. 결 론

본 연구는 안드로이드 기기로 고양이를 육성하고 인터렉션이 가능한 증강현실 속에서 누구나 쉽게 플레이할 수 있는 안드로이드 기반 고양이 육성 시뮬레이터 개발연구논문이다. 블루투스 통신을 이용하여 근거리 유저 간의 고양이와 같은 공간에서 놀이를 할 수 있고, 성별이 다르다면 교배를 통해 새끼를 낳을 수 있다. AR 기술을 통해 고양이를 실제 배경에 배치하여 볼 수 있다. 핸드폰 안에 있는 고양이와 놀아주기, 먹이 주기 활동으로 친밀감을 느끼게 할 수 있고, 인테리어 변경을 통해 플레이어의 개성을 표현할 수 있다. 반려동물을 기르지 못해 대리만족을 느끼고 싶은 사람들에게 시뮬레이션 콘텐츠를 제공하였다. 본 연구가 가상증강 교육용 콘텐츠 제작 시 참고자료로 많이 활용될 것으로 기대한다.

현재 메타버스 시대로 다양한 증강현실 콘텐츠들이 계속해서 개발되고 있다. 증강현실은 자신이 직접 해보기 어려운 것들을 체험해보고 느껴볼 수 있어서 다양한 분야에서 사용될 전망이다.

본 연구가 메타버스에 탑재될 여러 기능성 콘텐츠 제작 시 개발자들에게 참고 가이드 논문이 될 것으로 사료된다.

Acknowledgments

이 논문은 2022년도 남서울대학교 학술연구비 지원에 의해 연구되었음.

References

  • Steam [Dream Pets VR], Subdream Studios [Internet]. Available: https://store.steampowered.com/app/738350/Dream_Pets_VR/?l=koreana&curator_clanid=32244664
  • S. H. Bak, H. B. You, and T. J. Choi, “Electroshock Weapon Training System Using VR Technology,” Journal of Digital Contents of Society, Vol. 22, No 4, pp. 605-610, April 2021. [https://doi.org/10.9728/dcs.2021.22.4.605]
  • T. E. Kim, “A Study on the Production of Children’s Storybooks Using Augmented Reality Technology,” Journal of Digital Contents of Society, Vol. 18, No 3, pp. 435-442, June 2017. [https://doi.org/10.9728/dcs.2017.18.3.435]
  • M. S. Kim, J. H. Kang, and M. S. Jun, “Market and Technical Trends of VR Technologies,” The Korea Contents Association Review, Vol. 14, No. 4, pp. 14-16, December 2016.
  • D. W. Jung, A Study on Historical Tourism Information Service Using Mobile Augmented Reality Technology, Master’s Thesis, Graduate School of Ewha Woman’s University, Seoul, February 2012.
  • J. S. Han and G. H. Lee, “VR Tourism Content Using the HMD Device,” Journal of the Korea Contents Association, Vol. 15, No. 3, pp. 40-47, March 2015. [https://doi.org/10.5392/JKCA.2015.15.03.040]
  • Vuforia [Internet]. Available: http://developer.vuforia.com
  • Unity 3D [Internet]. Available: http://korea.unity3d.com
  • E. N. Kim and T. E. Kim, “The Trivium of the Digital Media Art,” Journal of Digital Contents Society, Vol. 15, No. 6, pp. 745-749, December 2014. [https://doi.org/10.9728/dcs.2014.15.6.745]
  • Y. N. Choi and J. Chun, “A Study on User Interface Design of MMORPG Game Based on Affordance: Focused on Comparative Analysis of UI Design according to Platform Differences of,” Journal of Digital Contents Society, Vol. 18, No. 7, pp. 1239-1248, November 2017. [https://doi.org/10.9728/dcs.2017.18.7.1239]
  • S. Rogers, “Level Up! The Guide to Great Video Game Design,” Hoboken, NJ: John Wiley & Sons, pp. 171-177, 2014.
  • G. Seo, “Study on the Efficient Utilization Method of UI Based on the UI Case Analysis of Virtual Reality Games,” Journal of Digital Contents Society, Vol. 22, No. 3, pp. 383-392, March 2021. [https://doi.org/10.9728/dcs.2021.22.3.383]

저자소개

김태은(Tae-Eun Kim)

1989년 : 중앙대학교 전기공학과 졸업(공학학사)

1992년 : 중앙대학교 전자공학과 졸업(공학석사)

1997년 : 중앙대학교 전자공학과 졸업(공학박사)

2001년 : Pattern Recognition저널 게재(제1저자)

1995년 : 삼성전자 휴먼 테크 논문대상 은상수상

1997년 : 영상처리관련 3건의 특허취득확정

1993년~1996년: 한국연구재단참여연구원

현) 한국멀티미디어협회 멀티미디어기술사

1997년~현 재: 남서울대학교 멀티미디어학과 교수

※관심분야 : 교육용게임콘텐츠제작, 영상인식, 증강현실, 컴퓨터비젼기술 등

Fig. 1.

Fig. 1.
Nintendo Nintendogs AR

Fig. 2.

Fig. 2.
Demonstration of Phone Cat AR

Fig. 3.

Fig. 3.
Demonstration of Phonecat bluetooth communication

Fig. 4.

Fig. 4.
Room background object modeling

Fig. 5.

Fig. 5.
View of the main scene UI

Fig. 6.

Fig. 6.
Bluetooth communication Head up UI

Fig. 7.

Fig. 7.
Menu screen of the game

Fig. 8.

Fig. 8.
Websites selling cat products

Fig. 9.

Fig. 9.
Game execution scene

Fig. 10.

Fig. 10.
The screen playing with the cat

Table 1.

Object summon script with augmented reality RayCast



private void placeObjectByTouch()
    {  
        if(Input.touchCount>0 && hold==false && !IsPointerOverUIObject(Input.mousePosition))
        {
if(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            return;

            else
            {
            Touch touch = Input.GetTouch(0);

            List<ARRaycastHit> hits = new List<ARRaycastHit>();
            if (arRaycaster.Raycast(touch.position, hits, TrackableType.Planes))
            {
                Pose hitPose = hits[0].pose;
                if(!spawnObject)
                {
                        spawnObject = Instantiate(placeObject, hitPose.position, hitPose.rotation);
                scan_status.text="고양이 소환";
                Vector3 lookAtPosition = spawnObject.transform.position;
                lookAtPosition.x =transform.position.x;
                lookAtPosition.z =transform.position.z;
                transform.LookAt(lookAtPosition);
                        slider.SetActive(true);
                        catAnime.SetActive(true);
                    }
                else
                {
                    spawnObject.transform.position=hitPose.position;
                    spawnObject.transform.rotation=hitPose.rotation;
                    Vector3 lookAtPosition = spawnObject.transform.position;
                    lookAtPosition.x =transform.position.x;
                    lookAtPosition.z =transform.position.z;
                    spawnObject.transform.LookAt(lookAtPosition);
                
                }
            }// 터치한 곳에 고양이 오브젝트를 소환, 이미 소환된 상태면 자리 이동만 함
            }
        }
    }

Table 2.

Android library AAR load script



public class AndroidPlugin : MonoBehaviour
{
   // 블루투스 기능은 안드로이드 네이티브 기능으로서 안드로이드 스튜디오의
      AAR 라이브러리를 불러와서 사용해야한다.
   private AndroidJavaObject UnityActivity;
   private AndroidJavaObject UnityInstance;
void Start()
    {
        AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        UnityActivity = ajc.GetStatic<AndroidJavaObject>("currentActivity");

        AndroidJavaClass ajc2 = new AndroidJavaClass("com.nsu.forunity.Myplugin");
        UnityInstance = ajc2.CallStatic<AndroidJavaObject>("instance");

        UnityInstance.Call("setContext", UnityActivity);
    }
// 토스트 메시지
    public void ShowToast(string msg, bool isLong)
    {
        UnityActivity.Call("runOnUiThread", new AndroidJavaRunnable(()=>
        {
            if (isLong == false)
            {
                UnityInstance.Call("ShowToast", msg , 0);
            }            
            else
            {
                UnityInstance.Call("ShowToast", msg , 1);
            }
        }
        ));
    }

Table 3.

Json DB deployment



[System.Serializable]
public class Serialization<T>
{
    public Serialization(List<T> _target)=> target = _target;
    public List<T> target;
}

public class DataManager : MonoBehaviour
{
    public TextAsset ItemDatabase;
    public List<Item> AllItemList;
    string filePath;
    
        private void Start()        
        {  
         // Load();
         //txt 파일을 읽어옴. 엑셀 파일로 작성되었음 text 에셋으로 한줄 한줄 잘라냄
        string[] line = ItemDatabase.text.Substring(0, ItemDatabase.text.Length-1).Split('\n');
        for (int i = 0; i < line.Length; i++)
        {
            line[i] = line[i].Trim(); //이거 추가
            string[] row = line[i].Split('\t');
            AllItemList.Add(new Item(row[0], row[1], row[2], row[3]));
        }
        filePath = Application.persistentDataPath + "/allitemdata.txt";
        }
        
      void Save()
    {