Skip to content

Rob-Yoo/Silver-Explore-Clean-Version

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 

Repository files navigation

은빛 탐험가 클린 버전

은빛탐험가 앱아이콘


고령층의 디지털 격차 문제를 해결하기 위해 개발한 AR 기술을 활용한 체험형 디지털 교육 어플리케이션입니다. 고령층의 디지털 기기 및 기술에 대한 체험을 탐험이라는 컨셉으로 잡아 “은빛 탐험가”라는 이름으로 기획하였습니다.

🗄️ 프로젝트 정보

  • 기간 : 2023.07.18 ~ 2023.08.18 (1개월) -> 리팩토링 기간 2024.01.18 ~ 2024.05.07 (약 4개월)

  • 개발 인원 : iOS 4명

  • 기술 스택 : UIKit(Codebase UI) ARKit SceneKit Combine CoreML VisionKit Vision

  • 프로젝트 주요 기능

    • AR 기술을 활용해 3D 캐릭터와 함께 단계별로 다양한 터치 제스처에 대해 체험하고 학습할 수 있는 기능
    • 각각의 터치 제스처에 따른 3D 캐릭터의 애니메이션 동작 기능
    • 실제 카페 키오스크 UI를 통해 메뉴 선택부터 스탬프 적립, 결제까지 키오스크 주문에 대해 체험하고 학습할 수 있는 기능
    • AR 기술을 활용해 3D 키오스크 기기의 카드 투입구나 바코드 리더기 위치를 확인할 수 있는 기능
    • 사물의 작은 텍스트를 인식해 큰 텍스트로 변환하여 보여주는 OCR 기능
    • 인식된 텍스트를 음성으로 들려주는 TTS 기능

    터치 제스처 탐험하기 키오스크 탐험하기 AI 탐험하기


🧰 담당 기능 구현 방법

터치 제스처 탐험하기

  • ARKit을 활용해 3D 캐릭터와 함께 단계별로 다양한 터치 제스처를 체험하는 기능
  • Tap, LongPress, Swipe, Pan, Pinch, Rotate 제스처에 대해 SceneKit을 활용한 3D 캐릭터 애니메이션 구현

키오스크 탐험하기

  • Codebase UITableView, UICollectionView, UISegmentControl, UIStackView 등을 활용해 실제 카페 키오스크 UI를 구현하여 메뉴 선택부터 스탬프 적립, 결제까지 체험할 수 있는 기능
  • AR과 터치 제스처를 활용하여 키오스크 기기 자체에 대한 체험을 할 수 있는 기능

📌 고려 사항

ARKit의 오브젝트 렌더링 위치 결정 방식

  • 고민 지점

    • ARWorldTrackingConfiguration은 수평면이나 수직면을 자동으로 인식하여 해당 평면의 특정 좌표에 렌더링
    • 평면을 잘 인식하기 위해선 평면과의 거리를 벌리기 위해 고령층이 아이패드를 높게 들어야 하는 UX적 단점 존재
  • 결과

    • ARImageTrackingConfiguration을 사용하여 평면이 아닌 특정 사물의 이미지를 인식하여 인식된 사물 위에 렌더링하는 방식으로 결정
    • 이로써 아이패드를 들지 않고 폴리오 케이스나 거치대를 사용하여도 오브젝트의 렌더링 위치를 결정 가능
    • 은빛 탐험 티켓을 제작하여 오브젝트 렌더링용 사물의 역할과 동시에 어플리케이션의 컨셉 강화 도구로 사용

    은빛탐험티켓

MVC 아키텍처

  • 고민 지점

    • 모든 코드가 ViewController에 존재함으로써 ViewController가 많은 책임을 가지게 됨
    • 따라서, 적절한 역할 분리를 통해 ViewController의 책임을 덜어내고자 MVC 아키텍처 적용
  • 결과

    Model View
    Model View
    Model과 ViewController간에 옵저버 패턴 적용 User Action을 ViewController에 전달 및 UI 업데이트를 계층적으로 수행

    Controller(ViewController)
    VC
    Delegate 패턴을 통해 RootView로부터 User Action을 전달받고 Model 변경
    Model의 변화를 감지 후 RootView에 UI 업데이트 지시

3D 오브젝트에 대한 POP

  • 고민 지점

    • 3D 오브젝트 객체의 추상화를 통해 다형성을 활용하기 위한 설계
    • 인터페이스 분리 원칙을 준수한 프로토콜 설계
  • 결과

프로토콜 설계

🚨 주요 이슈와 해결 과정

터치 제스처 탐험하기에서 단계별 UIGestureRecognizer와 SceneKit Animation간의 동기화 이슈

  • 문제 상황

    • 다양한 UIGestureRecognizer와 그에 맞는 SceneKit Animation 메서드들이 단계에 따라 추가되고 사라져야함
    • 관련 코드들이 여러 파일에서 복잡하게 얽혀 있어 상태 관리에 어려움을 겪음
  • 해결 방식

    • 상태 패턴 사용

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages