-
Notifications
You must be signed in to change notification settings - Fork 94
Checklist for the Sensor and VR | 한국어
Mingyu Kim edited this page Jan 16, 2020
·
13 revisions
- 디바이스의 자이로모션은 iOS 12.2부터 기본적으로 비활성화되어있으며, iOS13 이후부터만 스크립트를 통해 활성화될 수 있습니다.
- 사용자에게 설정 -> Safari -> Motion & Orientation Access를 활성화하도록 가이드합니다.
- PanoViewer의
enableSensor()
메소드를 통해 디바이스모션을 활성화할 수 있습니다. ⚠️ 주의하실 점은, 해당 메소드는 사용자의 인터랙션에 의해서만 호출되어야 합니다.- iOS 13+인지 판정될 경우, 버튼을 포함한 Modal을 화면에 표시한 이후 버튼의 onclick callback을 통해
enableSensor
를 호출하시는 것을 권장드립니다.
A-Frame의 예시
- iOS 13+인지 여부는 다음과 같이 판정하실 수 있습니다.
var IS_IOS13_OR_LATER = DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === "function";
- 취소되었을 경우 관련 설명
- Modal 설정 관련 설명
- iOS 12관련 설명 추가
- View360의 경우
enterVR()
을 호출 시 DeviceMotion이벤트의 Permission이 주어져있는지 체크하는 로직이 포함되어있습니다. - 만일 디바이스모션의 Permission을 기존에 체크하지 않았을 경우
enterVR()
호출 시점에 디바이스 모션을 허락할지에 대한 네이티브 팝업창이 뜨고, 사용자가 이를 허락하면 VR 모드에 진입할 수 있습니다.
- 모바일 iOS의 경우 브라우저와 무관하게 Fullscreen API를 지원하지 않습니다.
- 때문에 주소창에 의해 콘텐츠의 일부가 가려질 수 있으며, 이 때문에 iOS에서는 원만하게 VR 콘텐츠를 감상하는 것이 어렵습니다.
- 동일한 서비스를 제공하는 네이티브 앱이 존재할 경우 이로 연결하거나, PWA를 시도해볼 수 있습니다.
- View360의 경우 WebVR API 1.1 및 WebXR API의 스펙을 둘 다 지원합니다.
- VR에서 핵심적으로 사용되는
enterVR
함수의 경우 WebXR API를 WebVR API보다 우선합니다. 즉, Oculus browser와 같이 네이티브 WebVR API가 존재하는 브라우저에서 WebXR 폴리필을 추가할 경우 WebVR API를 사용할 수 없게 되어 문제가 발생할 수 있습니다. 때문에, WebXR 폴리필을 사용하기 전에, WebVR API가 존재하는지 테스트해보는 것이 좋습니다.
if (typeof navigator.getVRDisplays === "function") {
new WebXRPolyfill();
}
-
WebVR Polyfill을 이용하실 경우, iOS에서 VR모드 진입/해제시 캔버스의 크기가 변경될 수 있습니다.
- WebXR Polyfill로 변경하시면 해결하실 수 있습니다.
- WebVR Polyfill을 사용하셔야 하는 경우, PanoViewer를 생성하신 엘리먼트를 대상으로 다음과 같은 스타일을 추가해주시면 해결하실 수 있습니다.
/* "panoviewer"가 엘리먼트의 id라고 가정합니다. */
#panoviewer canvas {
width: 100% !important;
height: 100% !important;
}
- WebVR Polyfill 사용시 iPad13+에서 "모바일 웹 사이트 요청"시에만 VR모드에 진입 가능합니다.
-
WebXR Polyfill 사용시 iPad13+에서
allowCardboardOnDesktop: true
옵션을 활성화하고, "데스크탑 웹 사이트 요청"시에만 VR모드에 진입 가능합니다.