최근 기술이 발전함에 따라 다양한VR (Virtual Reality) 및AR (Augmented Reality) 장치들이 등장하고 있다. 이 러한 장치들의 대부분의 콘텐츠는 사용자 상호작용을 위해 컨트롤러에 의존하고 있으나 컨트롤러는 휴대하 기 어렵고 분실하기 쉽다는 단점이 있다. 또한, 컨트롤러를 통한 사용자 인터페이스는 장치에 익숙하지 않은 사용자들이 불편함을 느낄 수 있고 새로 인터페이스를 배워야 하는 한계가 있다. 이러한 문제를 해결하기 위 해Oculus Quest는 핸드 트래킹 기술을 도입하여 사용자가 자연스러운 손 제스처를 인터페이스로 사용할 수 있게 하였다. 그러나 핸드 트래킹을 활용하는 방법은 그 어려움 때문에 아직 널리 연구되지 않았고 아직 활 용되지 못하고 있다. 이에 VR 콘텐츠와 상호작용하는 데 손을 사용하는 방법을 탐구하고, 그것을 이용하여 콘텐츠를 만드는 방법을 설명한다
대부분의 모바일 AR 컨텐츠들은 모바일 디바이스의 기술적 한계로 인해 평면 탐지 후, 그 위에서만 구현되는 제한된 구조를 가지고 있다. 이러한 문제는 제한된 공간이 표현의 범위를 제한하기 때문에 모바일 AR의 확산 에 크게 저해가 될 수 있다. 한편 Unity의 AR Foundation이 제공하는 ‘Meshing’은 실제 오브젝트의 크기와 위 치에 알맞게 메시를 생성해주는데, 이를 활용한다면 모바일 AR 컨텐츠들은 평면에서 벗어나 더 넓은 현실 공 간에 구현될 수 있다. 하지만 ‘Meshing’은 모바일 기기의 센서가 닿지 못하는 부분에는 메시를 생성하지 않기 때문에 별도의 작업 없이 그대로 사용한다면 게임 오브젝트가 빠져나갈 수 있는 구멍이 생길 수 있다. 이 구 멍은 컨텐츠 구현에 있어서 치명적이기에 Hole-Filling 알고리즘을 사용하여 구멍을 메우고자 하는 연구가 있 었다. 하지만 기존 연구에서 사용하는 Hole-Finding 알고리즘은 특정 상황에서 외곽선과 구멍을 제대로 구별해 내지 못하는 문제가 있다. 이 문제는 일부 구멍은 메우지 못하고 외관선끼리 이어버려 컨텐츠에 치명적인 문 제를 야기한다. 본 논문에서는 Meshing이 제공하는 노말 벡터와 경계선들로 계산한 노말 벡터 간의 차이를 이 용해 구멍과 외곽선을 구분하는 방법을 제안한다. 이 방법을 적용한 결과, 이전 연구의 방법보다 좀 더 빠르 면서 구멍과 외곽선을 제대로 구별하는 모습을 확인하였다.
게임을 구현하는 동안 주기성을 보장해야될 필요성이 있는 경우가 많이 있다. 예를 들어 많은 경우에 캐릭 터의 충돌은 주기적으로 처리되어야 될 필요성이 있는데 주기적으로 처리하지 못하는 경우 게임에서 충돌 을 감지하지 못하는 경우가 발생할 수 있다. 또한 슈팅 게임에서는 많은 경우에 사용자의 편의를 위하여 특 정 버튼을 누르면 무기를 자동적으로 발사하는 기능을 포함하고 있어 주기적으로 무기를 발사해야될 필요 성이 있다. 한편 유니티를 사용하여 게임을 구현할 때 이러한 주기성을 보장하기 위해서 WaitForSeconds로 지연을 발생시킨 코루틴, InvokeRepeating, FixedUpdate, .NET의 Timers.Timer가 사용될 수 있다. 그러나 이러한 다양한 방법들로 인하여 방법의 선택에 어려움이 있어 연구를 진행하였다. 본 연구에서는 1분 동안 6000번 메서드를 주기적으로 실행하고 주기성과 횟수를 측정하였다. 또한 다양한 환경에서의 실험을 위하여 추가의 모델 렌더링이 없는 경우와 렌더링을 추가한 경우, 다양한 해상도에서 주기성과 메서드 호출 횟수를 모두 측정했다. 실험 결과, 부하가 적은 환경에서는 InvokeRepeating이 가장 6000회에 가까웠으며 부하가 큰 환경 에서는 Timers.Timer가 가장 6000회에 가까웠으며 실행 주기의 편차가 가장 적었다. 이러한 실험들을 통하여 유니티를 통하여 게임을 구현할 때 일정 시간 내에 실행되는 횟수가 중요한 게임에서 성능 부하가 크지 않 은 경우 InvokeRepeating을, 성능 부하가 크다면 .NET의 Timer를 쓰는 것이 적합함을 알아내었다. 본 연구를 통하여 개발자는 유니티에서 제공되는 주기성 제공 방법들 중에서 적절한 방법을 선택할 수 있다.