Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Refactoring
- UITextView
- Protocol
- RxCocoa
- Xcode
- collectionview
- HIG
- 스위프트
- swiftUI
- map
- clean architecture
- 클린 코드
- 리팩토링
- Observable
- UICollectionView
- tableView
- ios
- 리펙터링
- rxswift
- 리펙토링
- combine
- uiscrollview
- 애니메이션
- Clean Code
- MVVM
- SWIFT
- ribs
- uitableview
- swift documentation
- Human interface guide
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - HIG] (Technologies) 5. AR, Augmented Reality (증강현실) 본문
HIG(Human Interface Guidelines)/HIG - Technologies
[iOS - HIG] (Technologies) 5. AR, Augmented Reality (증강현실)
jake-kim 2021. 7. 3. 14:57AR
- 가상현실(VR)의 한 분야
- 실제로 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 것
- AR기능을 지원하는 장치에만 기능을 구현: 장치 확인 및 사용작 권한 요청
- 개발자 참고 문서
가상현실 구현 UX
- 사용자들이 전체 디스플레이를 사용하도록 설계: 실제 세계와 앱의 가상 개체를 표출하는데 최대한 많은 화면을 사용하기 때문
- 최소 60 frame 을 제공
- ARKit의 정보를 이용하여 개체의 크기를 적절하게 조정
- 실제 표면에 배치 환경 조명 조건 반영
- 카메라 grain을 시물레이션
- 실제 표면에 객체의 그림자 표출
- 카메라 위치가 변경됨에 따라 비주얼 업데이트
- 반사 표면이 있는 가상 물체가 환경을 어떻게 보여주는지 고려: ARKit의 반사는 카메라가 캡처한 환경을 기반으로 한 근사치이므로 AR경험이 실제라는 경험을 유지하려면 이러한 근사치의 효과를 반사 표면에 집중하여 설계
- 오디오와 햅틱을 사용하여 몰입형 경험을 향상
- 환경에서 텍스트를 최소화
- 추가 정보 또는 제어가 필요한 경우 화면 공간에 표출하는 것을 고려: AR환경이 장치와 함께 이동하는 동안 고정되어 있기때문에 사용자들이 화면 공간에서 콘텐츠를 찾고 보기가 쉬운 장점이 존재
- 2D control을 통해 지속적인 경험 제공
- ex) Measure앱 - 화면 공간을 사용하여 사용자들이 실제 세계에서 개체를 측정하는데 사용하는 반투명 및 불투명 control 혼합
- 사용자들이 다양한 실제 환경에서 앱을 사용할 것으로 예상하여 설계
- 이동할 공간이 많지 않거나 크고 평평한 표면이 없는 곳에서 앱을 열 수 있는 가능성
- 앱의 요구 사항과 기대치를 사용자에게 명확하게 전달하여 물리적 환경이 AR경험에 어떤 영향을 미칠 수 있는지 돕는 역할
- 기기를 물체에 더 가깝게 이동할 필요 없이 사용자 위치에서 바로 사용할 수 있도록 거리를 고려
- 사용자를 움직이게 하는 모션을 바로 많은것을 원하게 되면 적응하는데에 힘듦으로 '점차적'으로 사용자의 모션을 사용하도록 설계
Coaching 기능
- ARKit이 주변을 감지할 수 있는 방식으로 기기를 움직여야 AR 경험 가능
- iOS13+ 에서 기본으로 제공하는 coaching기능을 사용하여 사용자에게 수행 할 작업을 표출 하고 초기화 프로세스중에 피드백 제공
- 개발 가이드
- 사용자들이 Coaching 보기를 사용하는 동안 불필요한 UI를 hidden시켜서 coaching에 집중할 수 있도록 설계
사용자가 물건을 놓도록 돕는 방법
- 사용자들이 언제 표면을 찾고 물체를 놓아야하는지 표출
- ARKit이 표면을 감지하면 앱에서 개체 배치가 가능한시기를 보여주는 custom visual indicator를 표출
- 지표를 감지된 표면의 평면에 정렬하여 배치 된 물체가 환경에서 어떻게 보이는지 사용자들의 이해를 돕는 것
- 사용자들이 물건을 놓으면 즉시 그 물건을 AR환경에 통합
- 표면 감지는 점진적으로 개선되며 정확도가 좋아지지만, 정확한 데이터를 기다리지 않고 즉시 표출하는것이 좋은 경험을 선사
- 즉시 표출 후 표면 감지가 완료되면 필요한 경우 물체의 위치를 미묘하게 다듬는 방향
- ex) 사용자가 감지된 표면의 경계를 넘어서 물체를 놓는 경우, 물체를 표면 위로 부드럽게 밀어내는 것
- 객체 위치 조정을 위한 ARTrackedRaycast 참고
- 사용자가 화면 밖의 가상 물체로 안내하는 것을 고려: 사용자는 때때로 화면 밖의 물체를 찾는것에 어려움이 있으므로, 물건을 찾을 수 있도록 설계 (물체가 화면에서 왼쪽으로 벗어난 경우, 화면의 왼쪽 가장자리에 왼쪽에 존재한다난 indicator 표출)
- AR에서 표면 경계는 주변 환경이 추가로 분석됨에 따라 변경될 수 있는 근사치이므로 물체를 감지된 표면의 가장장리에 정확하게 정렬하는것을 지양
Interaction
- 가능한 경우 사용자들이 직접 조작(왼쪽 사진)하여 개체와 상호 작용 하도록 설계
- 직접 터치하여 화면 3D 개체와 상호 작용할 수 있을 때 몰입감있고 더욱 직관적
- 표준 제스처 사용
- ex) 움직이는 물체에는 한 손 드래그 동작, 회전하는 물체에는 두 손가락 회전 동작 지원
- 제스처가이드
- Interaction은 가능한 단순하게 설계: 터치 제스처는 2차원이지만 AR경험은 현실 세계의 3차원을 포함하므로 아래와 같은 접근 방식을 사용
- 왼쪽 사진: 물체가 놓여있는 2차원 표면으로 이동을 제한
- 오른쪽 사진: 개체 회전을 단일 축으로 제한
- 앱에서 object의 크기 조정을 지원: 가상의 환경을 탐색하는 경우 실제 세계를 나타낼 필요가 없기 때문에 크기 조정을 지원한느 것이 합리적
- 두 손가락 집기 제스처와 두 손가락 회전 제스처는 유사하므로, 충돌이 나는 경우를 대비하여 앱에서 충분히 테스트
- 콘텐츠에도 사용자 Interaction에 관한 반응을 넣는 방법 지향
- ex) 사용자가 다가가는 경우 캐릭터는 고개를 돌려 사람이 다가가는 모습을 확인
사용자 경험
- 사용자 뒤에 가상 object를 배치할 경우, 해당 사용자로 인하여 가려지는 부분이 존재하도록 현실성 있는 ux를 강화
실제 개체에 반응
- ARKit에서 이미지 인식을 통해 어떤 이미지인지 트리거되는 기능을 이용하여 AR경험을 향상
- ARKit에서 공상 과학 영화의 극장 포스터를 인식 > 트리거 > 포스터에서 가상 우주선이 나타나 주변을 날아 다니는 효과
- 주의사항은, 감지된 이미지가 사라지면 그 이미지에 연결된 가상의 제거를 지연하여 자연스럽게 사라지도록 설정 (fade out하거나 제거 전 최대 1초 동안 기다리도록 설정)
- 개발 참고: Detecting Images in an AR
- 한번에 사요되는 참조 이미지 수를 제한
- 이미지 감지 성능은 ARKit이 실제 환경에서 100개 이하의 고유한 이미지를 찾을 때 가장 잘 동작
- 100개 이상의 참조 이미지가 필욯나 경우, 컨텍스트에 따라 활성 참조 이미지 세트를 변경
- ex) 박물관 안내 앱 > 위치 서비스를 사용하여 사용자가 위치한 박물관의 일부를 확인한 다음 해당 영역의 이미지세트로 제한
사용자에게 알림
- 지침 텍스트를 표시해야하는 경우 접근하기 쉬운 표현을 사용: AR은 일부 사용자들이 이해할 수 없는 개념이므로 쉬운 표현을 사용
- ex) 3D회전 indicator를 배치하는 것이 2D에서의 텍스트를 사용하는 것보다 더욱 직관적
- 3D공간에 텍스트를 표시해야하는 경우 텍스트가 사용자를 향하도록 설정
- 필요한 경우 추가 정보를 얻을 수 있는 방법을 제공
- 탭하여 더 많은 정보를 볼 수 있도록 설계
중단 처리
- ARKit은 사용자가 잠시 다른 앱으로 전환하거나 전화를 받는 경우와 같이 중단되는 동안 장치, 위치, 방향을 추적할 수 없는 특성
- 중단이 끝나면 이전에 배치된 개체가 잘못된 실제 위치에 나타날 수 있는 케이스 존재
- relocallization을 통해 ARKit은 새롱누 정보를 사용하여 가상 객체를 원래의 실제 위치로 복원하려고 시도
- 사용자들이 relocallization할 수 있도록 시스템에서 제공하는 CoachingView를 사용
- CoachingView를 통해 사용자들이 장치를 이전 방향으로 되돌리는데 도움
- relocallization 중에 이전에 배치딘 가상 개체를 숨겨서 깜박임이나 기타 불쾌한 시각 효과를 방지하고, 완료 후 새 위치에 다시 표시
- 사용자에게 relocallization 취소를 허용
- 세션을 재개하는데 성공하지 못한 경우 사용자에게 재설정 버튼 또는 AR경험을 다시 시작하는 다른 방법 제공
- 전면 카메라가 0.5초 이상 얼굴을 추적 할 수 없는 경우 표시
- 카메라가 더 이상 사람의 얼굴을 추적할 수 없음을 표시하고, 텍스트를 사용한다면 최소한으로 유지되게끔 설계
문제 해결 방법 제안
- 기대에 미치지 못하는 경우 사용자들이 경험을 재설정하도록 제공
- 문제가 발생할 경우 친숙한 언어를 사용하여 수정 요청
AR Glyph
- 앱은 ARKit 기반 경험을 시작하는 컨트롤에 AR 글리프를 표출
- AR Glyph 리소스
- 최소한의 여백 사용: AR 글리프 주변에 필요한 최소 여백은 그리프 높이의 10%이므로, 다른 요소가 이 공간을 침범하지 않도록 설정
AR Badge
- ARKit을 사용하여 AR에서 볼 수 있는 특정 항목을 식별 가능
- 일관성을 위해 AR badge를 변경하지 말것
- Glyph 전용 badge보다 명확한 AR badge사용: 일반적으로 AR badge를 수용할 수 없는 제한된 공간에는 Glyph전용 배지를 사용
- 앱의 AR에서 볼 수 있는 개체와 볼수 없는 개체가 혼합된 경우에만 badge를 사용
- badge의 배치는 일관되고 명확하도록 obejct 사진의 한쪽 모서리에 표시되고 명확하게 볼 수 있도록 큰지 확인
- badge도 glyph와 마찬가지로 높이의 10%를 여백으로 유지
* 참고
'HIG(Human Interface Guidelines) > HIG - Technologies' 카테고리의 다른 글
[iOS - HIG] (Technologies) 7. CarPlay (카플레이) (0) | 2021.07.07 |
---|---|
[iOS - HIG] (Technologies) 6. Business Chat (비즈니스 채팅) (0) | 2021.07.05 |
[iOS - HIG] (Technologies) 4. Apple Pay (애플 페이) (0) | 2021.06.30 |
[iOS - HIG] (Technologies) 3. App Clips (앱 클립) (0) | 2021.06.28 |
[iOS - HIG] (Technologies) 2. AirPlay (0) | 2021.06.27 |
Comments