스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
visionOS용 엔터프라이즈 API
새로운 visionOS용 엔터프라이즈 API를 활용하여 Apple Vision Pro에서 직원 및 고객의 생산성을 향상하는 공간 경험을 만들어 보세요.
챕터
- 0:00 - Introduction
- 2:36 - Enhanced sensor access
- 11:38 - Platform control
- 18:39 - Best practices
리소스
- Building spatial experiences for business apps with enterprise APIs for visionOS
- Forum: Business & Education
관련 비디오
WWDC24
-
다운로드
안녕하세요, 저는 Kyle McEachern입니다 Vision Pro의 엔터프라이즈 팀 엔지니어이며 오늘 여러분과 함께 visionOS용 엔터프라이즈 API라고 부르는 일련의 기능에 대해 이야기를 나누고자 합니다 Vision Pro 출시 이후 저희는 기업 고객으로부터 비즈니스 방식을 혁신할 수 있는 앱을 구축하기 위한 추가 기능이 있으면 좋겠다는 의견을 많이 들었습니다 오늘 드디어 이러한 엔터프라이즈 API를 통해 visionOS에 추가되는 새로운 기능을 소개해 드리게 되어 기쁩니다 이제 다양한 엔터프라이즈 환경에서 Vision Pro를 통해 더 쉽고 더 생산적이고 더 정확하게 작업할 수 있습니다 새로운 공간 경험으로 협업과 커뮤니케이션을 향상 시키고 가이드가 포함된 작업 활동을 만들어 복잡한 작업을 더 간단하게 만들 수 있습니다 이전에는 불가능했던 완전히 새로운 공간 경험을 구현할 수도 있습니다 이러한 다양한 기능을 지원하기 위해 올해에는 기업 고객과 앱을 위한 흥미롭고 새로운 기능을 제공하는 6개의 새로운 API 모음을 제공합니다 정말 대단하죠? 이제 API를 자세히 살펴보기 전에 이러한 API가 여러 산업 분야에서 폭넓게 사용되지만 기존 API보다 기기 기능에 대한 훨씬 더 높은 수준의 액세스를 제공한다는 점을 이해하는 것이 중요합니다 또한 Apple은 개인정보 보호가 누구나 누려야 하는 기본적 인권이라고 믿기 때문에 이를 염두에 두고 API를 설계했습니다 적절한 상황에서만 사용되도록 하기 위해 관리되는 권한이 필요하며 앱에 대한 권한을 활성화하는 개발자 계정에 연결된 라이선스 파일도 필요합니다
또한 이러한 API는 기업 전용이므로 독점적인 사내 앱 또는 다른 비즈니스를 위해 맞춤 제작된 앱에 대해서만 자격을 사용할 수 있으며 Apple Business Manager를 통해 조직의 사용자에게 권한이 비공개로 배포됩니다 첫 번째 카테고리는 향상된 센서 액세스를 제공하고 메인 카메라에 대한 액세스, 향상된 캡처 및 스트리밍 카메라를 통한 향상된 기능 등 Vision Pro의 시각적 기능을 개선하는 API로 구성됩니다
두 번째 카테고리는 플랫폼 제어에 초점을 맞춘 것으로 Apple Neural Engine을 통한 고급 머신 러닝 기능, 향상된 물체 추적 기능, 앱의 성능을 조정하여 집중적인 워크로드를 위한 더 많은 컴퓨팅 기능을 제공하는 기능 등이 있습니다 오늘은 이러한 카테고리를 살펴보고 6가지 새로운 API와 구현 방법, 사용 사례에 대해 논의한 다음 몇 가지 모범 사례를 소개하며 마무리하겠습니다 첫 번째 카테고리인 향상된 센서 액세스부터 시작하겠습니다 가장 많이 받는 요청 중 하나는 메인 카메라에 대한 액세스 권한이 필요하다는 것입니다 그래서 여기서부터 시작하겠습니다 이 새로운 API가 활성화되면 이제 Vision Pro 주변의 전체 환경을 볼 수 있습니다 이 API는 앱이 기기의 메인 카메라 비디오 피드에 액세스하여 앱에서 사용할 수 있게 해줍니다
이 피드를 분석하고 해석한 다음, 보이는 내용에 따라 어떤 조치를 취할지 결정함으로써 향상된 여러 공간 기능을 활용할 수 있습니다
예를 들어, 생산 라인에서 메인 카메라 피드와 이상 감지용 컴퓨터 비전 알고리즘을 사용하여 품질 기준에 맞지 않는 부품을 빠르게 식별하고 이를 강조 표시하여 양호한 부품으로 교체할 수 있습니다 이제 메인 카메라 피드에 액세스하여 앱에 임베드하는 방법에 대해 자세히 살펴보겠습니다 ‘main-camera-access.allow’ 권한과 앱과 함께 빌드된 유효한 엔터프라이즈 사용권 파일을 사용하면 API를 활용하여 비디오 피드를 가져올 수 있습니다 권한 설정이 완료되면 핵심 변수를 설정합니다 먼저 기본 카메라에서 피드를 가져올 수 있도록 지원되는 형식을 ‘main’으로 정의한 CameraFrameProvider를 설정하고 피드를 저장하고 표시할 수 있도록 ARKitSession과 CVPixelBuffer를 생성하는 것부터 시작합니다 그런 다음 메인 카메라 액세스에 대한 사용자의 승인을 요청한 다음 CameraFrameProvider를 ARKit 세션에 전달하고 실행합니다
이 작업이 완료되면 해당 ‘main’ 형식에 대한 CameraFrameUpdates를 요청하여 CameraFrameProvider에서 비디오 프레임을 가져와 변수에 저장하여 액세스할 수 있습니다 마지막으로, 우리가 사용하는 ‘메인’ 카메라는 사용자의 왼쪽에 있는 카메라이므로 ‘.left’ 값에서 샘플을 가져와서 픽셀 버퍼에 넣으면 앱에서 원하는 대로 사용할 수 있습니다 아주 간단하죠 메인 카메라 액세스는 기업용 앱의 무궁무진한 잠재력을 끌어냅니다 여기서는 그 중 일부만 집중적으로 살펴봤지만 다양한 산업 분야에서 큰 영향을 미치는 잠재력을 분명 가지고 있습니다 오늘 이러한 내용을 이야기할 수 있어 정말 기쁩니다 다음에는 화면 캡처에 패스스루 동영상을 포함하는 것에 대해 이야기해 보겠습니다 현재 Vision Pro로 화면 캡처를 실행하면 사용자가 열어둔 모든 윈도우가 캡처되지만, 사용자 주변의 패스스루 비디오 피드가 포함되지 않고 배경이 삭제됩니다 이제 Vision Pro 내에서 사용자의 전체 화면을 캡처하고 공유할 수 있습니다 이 API를 사용하면 패스스루 카메라의 피드를 포함한 전체 공간 뷰를 visionOS의 화면 캡처에 통합할 수 있습니다 사용자가 보고 있는 모든 것을 캡처하여 저장하거나 앱을 통해 별도의 기기에 있는 다른 사용자에게 스트리밍할 수 있습니다 이 기능은 열려 있는 앱을 포함하여 사용자의 전체 화면을 캡처할 때 사용자의 개인정보를 더 잘 보호하기 위해 브로드캐스트 업로드 확장 프로그램을 사용하여 피드를 수신해야 하며 visionOS의 내장된 브로드캐스트 기능인 ReplayKit을 통해 사용자가 화면 캡처 또는 공유를 시작할 때마다 시스템의 ‘Start Broadcast’ 버튼을 특히 활용해야 합니다 예를 들어, 현장의 기술자가 사무실에 있는 전문가에게 전화를 걸 때 이 기능을 사용할 수 있습니다 ‘내가 보는 것 보기’ 기능을 사용하여 패스스루 카메라와 그 위에 있는 visionOS 윈도우를 모두 포함한 실제 화면을 공유할 수 있습니다 그런 다음 핸즈프리로 해당 전문가와 함께 작업하여 현재 경험하고 있는 것과 정확히 일치하는 피드백을 받을 수 있습니다 그렇다면 이를 어떻게 구현할 수 있을까요? 살펴보겠습니다 메인 카메라 API와 마찬가지로, 화면 캡처 시 패스스루 카메라와 결합된 공간 보기에 액세스할 수 있는 ‘include-passthrough’ 권한 파일을 넣습니다 네 끝입니다! 이 권한이 있는 앱에서 시스템 화면 캡처를 수행하면 시스템이 자동으로 검은색 배경을 패스스루 카메라의 보기로 대체하여 캡처에서 ‘내가 보는 것 보기’ 기능을 사용할 수 있습니다 정말 간단하죠 한 단계만 수행하면 되니 이보다 더 편리할 순 없습니다 이 API를 사용하면 앱에서 사용자가 원격으로 디버깅하거나 전문가가 다른 위치에 있는 작업자들에게 가이드를 제공할 수 있어 지식이 풍부한 사람이 다양한 시나리오에서 도움을 줄 수 있는 범위가 늘어납니다 몇 달 전에 납땜하는 법을 독학하려고 했을 때 이 API가 있었다면 얼마나 좋았을까요! 마지막으로 공간 바코드와 QR 코드 스캔입니다 이제 Vision Pro는 바코드와 QR 코드를 자동으로 감지하고 구문 분석하여 감지된 코드를 기반으로 맞춤형 앱 기능을 구현할 수 있습니다 QR 코드 또는 바코드가 감지되면 앱은 감지된 코드 유형, 사용자와 관련된 공간적 위치, 해당 코드의 페이로드 콘텐츠에 대한 정보를 수신합니다 QR과 바코드를 사용하는 잠재적 용도가 무수히 많은 것만큼이나 이 기술은 무수히 많은 분야에서 사용될 수 있습니다
한 가지 예로 물류창고에서 이 기술을 사용하면 요청된 물품을 검색하는 작업자가 물품의 바코드를 보고 원하는 물품이 맞는지 간단히 확인할 수 있습니다 더 이상 손으로 직접 확인하거나 스캐너를 들고 다니며 물건을 옮기는 불편함을 감수할 필요가 없습니다 이 API의 경우 ‘barcode-detection.allow’ 권한을 사용합니다 이제 앱에서 바코드 감지를 설정하는 방법을 살펴보겠습니다
먼저, 바코드를 감지하는 데 필요한 .worldSensing 권한이 활성화되어 있는지 확인하여 ARKitSession을 설정합니다
그런 다음 visionOS에 새로 추가된 변수인 BarcodeDetectionProvider를 활성화합니다 기존의 HandDetectionProvider 설정 기능과 마찬가지로 이 변수는 이러한 바코드를 찾고 추적하는 기본적인 작업을 처리합니다 이 경우 이 세 가지 기호를 전달하여 Code-39 바코드, QR 코드 및 UPC-E 유형 바코드를 찾습니다 이 문서에는 이 Vision Pro 엔터프라이즈 API가 지원하는 모든 기호가 나열되어 있습니다
그런 다음 이 BarcodeDetectionProvider에 연결된 ARKit 세션을 시작합니다 그런 다음 해당 공급자에 대한 업데이트를 기다렸다가 업데이트가 도착하면 처리합니다
API는 새 코드가 감지되면 ‘added’ 이벤트와 함께 업데이트를 전송합니다 예를 들어 코드를 강조 표시할 수 있습니다 코드의 위치가 이동되면 ‘updated’ 이벤트를 통해 코드를 추적하기 위해 UI를 업데이트하는 등의 작업을 수행할 수 있고, 코드를 더 이상 볼 수 없게 되면 ‘removed’ 이벤트를 통해 UI를 정리할 수 있습니다 네 끝입니다! 공간 바코드가 자동으로 감지되어 앱에서 사용할 수 있습니다 물류, 오류 확인, 부품 식별, 특정 지점에서 사용자에게 컨텍스트 데이터를 제공하는 등 다양한 용도로 활용될 수 있습니다 이제 이러한 새로운 API를 사용하여 이전에는 불가능했던 경험을 어떻게 만들 수 있는지에 대한 간단한 데모를 보여드리려고 합니다 지금 새로운 전자 부품을 조립 중인데 계속 실패해서 지원 센터에 근무 중인 친구 Naveen의 도움을 받아야 할 것 같아요 저는 오늘 오후에 있을 미팅의 프레젠테이션에 필요한 전자 부품을 직접 조립하려고 고군분투하고 있었어요 그런데 중간에서 막혀버렸어요 하지만 회사의 ‘지원 센터’ 앱이 있어 이런 상황에서 다행히 실시간 도움을 받을 수 있습니다 지원 센터를 열면 지원 상담원에게 연결하여 실시간 도움을 받을 수 있습니다 본사에 있는 제 친구 Naveen과 연결된 것 같아요 분명 이 친구가 저를 도와줄 수 있을 거예요 Naveen이 제가 작업 중인 내용을 살펴보고 싶다며 카메라를 공유할 수 있게 해달라고 요청합니다 ‘카메라 공유 활성화’를 클릭하면 내 메인 카메라 피드를 Naveen과 공유할 수 있습니다 여기 윈도우에 미리보기가 표시되니 내가 무엇을 보고 있고 Naveen에게 어떤 내용을 보내는지 알 수 있습니다
한눈에 식별하기 쉽지 않은 키트인 것 같아서 Naveen은 키트 설명서를 살펴보고 싶어 합니다 상자에 있는 코드를 사용하여 올바른 키트에 대한 설명서를 자동으로 불러올 수 있습니다 앱에서 ‘바코드 스캔 활성화’를 클릭한 다음 상자를 들어 측면의 코드를 바라보니 지침이 앱에 바로 표시됩니다
Naveen에게 지침을 찾았다고 알려 주었더니 제가 보는 화면과 지침을 한 번에 볼 수 있도록 전체 화면을 공유해 달라고 했습니다 이렇게 하려면 ‘전체 뷰 공유’를 클릭하고 메뉴에서 앱 이름을 선택한 후 ‘방송 시작’을 누르면 됩니다 이제 Naveen이 전체 화면을 볼 수 있습니다 Naveen이 보고 있는 화면을 확인해 보겠습니다 여기에서 Naveen의 보기를 볼 수 있으며 지원 센터 상담원 보기에서 공유 중인 내 전체 보기도 확인할 수 있습니다 Naveen은 제가 만든 키트를 설명서와 비교하며 살펴보더니 마지막 단계가 누락되었다며 핀 45에 전선을 연결하면 작업을 완료할 수 있다고 알려 줍니다
다시 제 쪽으로 돌아와서 조각을 올바른 위치에 끼웠더니 조립 성공입니다! 상태 표시등이 녹색으로 바뀌고 키트가 완성되었습니다 Naveen과 작별 인사를 하고 앱을 닫습니다 이제 조립에 성공했으니 나중에 있을 중요한 미팅 준비는 마쳤습니다 휴! 물론 이 데모는 이러한 새로운 기능을 어떻게 사용할 수 있는지 간략히 보여드리기 위해 하나의 앱에 여러 기능을 특정 방식으로 결합한 것입니다 여러분의 경우에는 이러한 기능 중 한두 개만 필요할 수도 있고, 사용법이 완전히 다를 수도 있습니다 이러한 기능은 유연하고 강력하며 다양한 산업 분야의 기업 환경에 적합하도록 설계되었습니다 이제 두 번째 카테고리인 플랫폼 제어 강화에 대해 살펴보겠습니다 먼저, Vision Pro가 기기에 탑재된 Apple Neural Engine에 액세스할 수 있습니다 이를 통해 CPU와 GPU만 사용하는 기본 방식이 아닌 Apple Neural Engine을 통해 온디바이스로 머신 러닝 작업을 수행할 수 있습니다 이를 통해 Vision Pro의 기존 CoreML 기능이 향상됩니다 기기가 Apple Neural Engine에 대한 액세스가 필요하거나 이를 통해 향상된 모델을 실행할 수 있습니다
예를 들어, 앞서 설명한 메인 카메라 액세스 기능을 구현할 때 Vision Pro가 결함이 있는 제품을 식별하는 동안 고객은 이상 감지를 위한 맞춤형 머신 러닝 모델을 구현할 수 있습니다 이 모델은 모든 것을 로컬에서 감지할 수 있도록 기기에서 모델 작동을 위해 Apple Neural Engine이 필요로 하는 기능을 갖추고 있죠
Apple Silicon은 모든 머신 러닝 플랫폼을 구동하며 CPU, GPU 및 Apple Neural Engine에서 모델이 실행됩니다 이 권한이 없으면 visionOS의 모델은 Vision Pro의 CPU와 GPU에서 실행할 수 있으며 이 권한이 있으면 앱에서 모델을 실행할 수 있는 컴퓨팅 기기로서 Apple Neural Engine이 활성화되어 강력한 머신 러닝 기능을 사용할 수 있습니다
CoreML이 구현되면 기기의 현재 리소스 사용량, 사용 가능한 컴퓨팅 기기, 모델의 특정 요구 사항 등 다양한 요소를 기반으로 모델이 가장 효율적으로 실행될 처리 장치를 동적으로 결정하고 해당 장치에서 모델 계산을 수행하도록 지시합니다 모델에 Apple Neural Engine을 활성화하는 방법을 살펴보겠습니다 이를 구현하는 과정은 매우 간단합니다 다른 모든 API와 마찬가지로 권한과 사용권을 설정해야 합니다 Apple Neural Engine의 경우 ‘neural-engine-access’ 권한이 필요하며 이 권한만 있으면 Neural Engine으로 모델을 실행할 수 있습니다 코드에서 Apple Neural Engine에 액세스할 수 있는지 확인하려면 다음과 같은 스니펫을 사용하여 MLModel 클래스의 ‘availableComputeDevices’ 속성을 확인한 다음 결과에 따라 조치를 취할 수 있습니다 이는 앱에서 사용할 수 있는 메서드 호출 예시이며 API의 일부가 아니라는 점에 유의하세요 그런 다음 모델을 호출할 때 적절한 경우 시스템은 모델을 실행하는 동안 Neural Engine을 활용합니다 Neural Engine을 사용할 수 없거나 시스템 상태로 인해 Neural Engine을 효율적으로 사용할 수 없는 경우 CoreML은 계산을 위해 GPU 및/또는 CPU로 자동 전환합니다 이러한 동적 의사 결정 시스템을 통해 이 권한이 부여된 앱에서 실행되는 모든 머신 러닝 모델은 가능한 한 효율적으로 자동 실행됩니다 멋지죠? 다음으로 매개변수 조정을 통해 향상된 알려진 객체 추적에 대해 알아보겠습니다 알려진 객체 추적은 visionOS 2.0의 새로운 기능으로, 앱이 특정 참조 객체를 프로젝트에 내장하여 보기 영역 내에서 감지 및 추적할 수 있도록 지원합니다 기업 고객의 경우, 한 번에 추적할 수 있는 최대 객체 수 변경을 포함하여 사용 사례에 가장 적합하도록 객체 추적을 조정하고 최적화할 수 있도록 구성 가능한 매개변수를 통해 이러한 새로운 기능을 개선하고 있습니다 매개변수를 통해 이 새로운 기능을 개선하고 있습니다 정적 객체와 사용자의 시야에서 움직이는 동적 객체의 추적 속도를 모두 변경하고 Vision Pro의 시야에서 이러한 알려진 객체의 새로운 인스턴스를 식별하고 위치를 찾기 위한 감지 속도를 수정합니다
그러나 이 API의 기본 컴퓨팅 성능은 동일하므로 사용 사례에 가장 적합한 매개변수를 하나 이상 증가시켜 이점을 최대화하려면 다른 매개변수를 줄여야 할 수 있습니다 그렇게 해야 앱이 필요로 하는 특정 기능을 최적화하면서도 시스템의 안정성을 유지하고 컴퓨팅 요구 사항을 균형 있게 충족시킬 수 있습니다
이는 다양한 도구와 부품을 추적하고 사용해야 하는 복잡한 수리 환경을 위해 빌드된 앱에서 사용할 수 있습니다 이 환경에서 기술자는 기계의 부품을 교체하는 과정을 안내받을 수 있으며 수많은 관련 객체들에 대한 저장된 지식을 활용하여 수리 중 필요할 때 해당 부품이나 도구를 현장에서 바로 강조하여 보여줄 수 있습니다 그렇다면 실제 사례에서는 어떤 모습일까요? 무척 단순합니다 이 API에 대한 권한은 ‘object-tracking-parameter- adjustment.allow’입니다 이 권한이 설정되어 있으면 객체 추적 코드를 설정할 수 있습니다
먼저 TrackingConfiguration을 설정합니다 그런 다음 해당 구성 변수에 새로운 대상 값을 설정합니다 이 경우 추적 가능한 최대 객체 수를 기본값 10이 아닌 최대 15로 설정합니다
매번 모든 값을 설정할 필요는 없으며 변경하려는 값만 설정하면 됩니다 이 용례를 보여 드리기 위해 여기 코드에 포함시켰습니다 그런 다음 방금 설정한 맞춤형 TrackingConfiguration과 함께 찾고자 하는 참조 객체를 전달하여 ObjectTrackingProvider를 설정합니다 이러한 참조 객체는 visionOS 2.0의 모든 알려진 객체 추적과 마찬가지로 ‘.referenceObject’ 파일입니다 이러한 파일 생성 프로세스에 대한 링크는 이 세션의 문서에서 찾을 수 있습니다
그런 다음 해당 ObjectTrackingProvider를 사용하여 ARKit 세션을 시작하면 모든 준비가 완료됩니다 이렇게 추적 가능한 최대 객체 수를 늘렸습니다 사용 사례에 따라 한 번에 많은 수의 다양한 객체를 추적하거나 기본 감지 속도보다 더 세밀하게 추적해야 할 수 있습니다 따라서 고객의 요구에 유연하게 대응할 수 있도록 설계했으며 이를 통해 앱에서 최상의 경험을 제공할 수 있도록 조정할 수 있습니다 마지막으로, 성능 여유 공간을 늘리기 위한 앱 컴퓨팅 설정이 있습니다 앞서 소개한 새로운 엔터프라이즈 API를 통해 고객은 앱과 기기의 한계를 뛰어넘을 수 있습니다 그리고 이제 앱 컴퓨팅 설정으로 한 단계 더 나아갈 수 있습니다 이 권한을 통해 기업 개발자는 주변 소음이 약간 증가하더라도 시스템이 원활하게 실행되도록 팬을 조금 더 빠르게 돌려 Vision Pro 기기에서 더 많은 컴퓨팅 성능을 활용하도록 할 수 있습니다
워크로드가 과중한 경우 개발자는 컴퓨팅 성능과 열 사용량, 배터리 수명, 사용자 편의성 간의 균형을 맞춰야 합니다 기본 설정에서 Vision Pro는 대부분의 사용 사례에 대해 이 세 가지가 최적의 균형을 이루도록 조정되어 있습니다 그러나 특정 기업 환경에서 추가적인 계산 능력이 필요할 때 이 권한을 사용하면 CPU와 GPU의 성능을 높일 수 있습니다 대신 배터리 수명 및 사용자 편의성 측면의 성능은 약간 저하될 수 있습니다 이러한 방식으로 고객은 Vision Pro의 성능을 최대한 활용하고 기업용 앱의 잠재력을 최대한 발휘할 수 있습니다 예를 들어, 고객이 매우 복잡한 고품질 3차원 디자인을 공간에 로드하고 주변을 걸어 다니면서 검토하려는 경우 앱 컴퓨팅 설정을 활성화하면 렌더링과 성능이 향상되는 것을 확인할 수 있습니다 이 설정을 활성화하려면 ‘app-compute-category’ 권한을 설정하기만 하면 됩니다 그러면 시스템이 향상된 컴퓨팅 기능을 활용할 수 있음을 자동으로 인식하고 필요에 따라 팬을 실행하여 기기가 원활하게 작동하도록 합니다 이 설정은 앱 전체에 적용되며 앱 코드로 켜고 끌 수 없습니다 이 권한을 설정하면 시스템이 워크로드에 따라 필요할 때마다 CPU 및 GPU 전력 사용량과 팬을 자동으로 조정합니다 이 설정은 앱 전체에 적용되며 코드에서 특정 메서드를 호출하여 제어되지 않습니다 따라서 이 시스템은 언제든지 Vision Pro의 상태와 워크로드에 따라 동적으로 활성화되거나 비활성화된다는 점을 기억하세요 이 기능의 동적 특성으로 인해 비슷한 상황에서도 사용자 경험은 다를 수 있습니다 마지막으로 visionOS에서 새로운 엔터프라이즈 API를 구현할 때의 모범 사례에 대해 이야기해 보겠습니다 항상 안전한 환경인지 유의하고 Vision Pro를 사용하는 사람들이 기기를 착용한 상태에서 모든 작업을 안전하게 수행할 수 있는 공간에 있는지 확인해야 합니다
기존 API를 조사하여 특정 사용 사례에 필요한 기능이 이미 포함되어 있지 않은지 확인하세요 놀라운 경험을 구축할 수 있는 많은 훌륭한 기능이 이미 기존 SDK에 포함되어 있습니다 앱에 필요한 특정 권한만 요청하세요 개발자는 기업 앱 개발 목표를 달성할 수 있도록 필요한 정보를 활용하면서도 사용자의 개인 정보를 보호하고 앱이 개발된 목적으로만 사용되도록 제한해야 합니다 마지막으로 직원의 개인정보 보호도 보장해야 합니다 특히 메인 카메라 피드에 직접 액세스할 수 있는 API와 같이 추가 액세스 수준이 생기므로 직장에서 직원들과 함께 고려해야 할 시나리오가 발생합니다 업무 환경에 있는 직원들의 개인정보를 보호하면서 기업의 요구 사항에 필요한 기능만 구축할 수 있도록 하세요 이상으로 visionOS용 엔터프라이즈 API에 대해 간략하게 살펴보았습니다 새로운 API들이 여러분의 필요에 맞는 완벽한 공간 앱에 대한 아이디어를 실제로 구현하는 데 도움이 되기를 바랍니다 이러한 API는 향상된 센서 액세스와 플랫폼 제어를 위한 강력한 새 기능을 제공합니다 API는 다양한 방식으로 사용할 수 있도록 ‘빌딩 블록’으로 설계되어 기업의 비즈니스 요구 사항에 맞는 맞춤형 앱을 만드는 데 사용할 수 있습니다 여러분도 이를 통해 무엇을 만들 수 있을지 저희만큼이나 기대하고 계시리라 생각합니다 마무리하기 전에 마지막으로 몇 가지 사항을 안내해 드리겠습니다 먼저 이러한 API에 대한 설명서를 살펴보세요 이 세션과 관련된 리소스에서 문서에 대한 링크를 찾으실 수 있습니다 그리고 필요에 맞는 하나 이상의 API를 결정했다면 자격 요건에 필요한 사용 사례를 보유하고 있는지 확인하세요 직원 또는 고객의 직원을 위해 설계된 사내 기업용 앱이 있는지 확인해야 합니다 그리고 이러한 항목을 확인한 후 원하는 API와 관련된 적절한 권한을 신청하세요 권한을 어디서 어떻게 신청해야 하는지에 대한 정보는 이 세션의 리소스에서도 확인할 수 있습니다 또한 이러한 새로운 API와 visionOS의 후속 버전에서 기대하는 기능이 있다면 피드백을 보내주시기 바랍니다 마지막으로, 올해의 세션 ‘기기 관리의 새로운 기능’을 확인하여 기업에서 Apple Vision Pro를 관리하기 위한 최신 기술을 알아보세요 visionOS용 엔터프라이즈 API 세션에 참여해 주셔서 감사합니다
-
-
3:36 - Main Camera Feed Access Example
// Main Camera Feed Access Example let formats = CameraVideoFormat.supportedVideoFormats(for: .main, cameraPositions:[.left]) let cameraFrameProvider = CameraFrameProvider() var arKitSession = ARKitSession() var pixelBuffer: CVPixelBuffer? await arKitSession.queryAuthorization(for: [.cameraAccess]) do { try await arKitSession.run([cameraFrameProvider]) } catch { return } guard let cameraFrameUpdates = cameraFrameProvider.cameraFrameUpdates(for: formats[0]) else { return } for await cameraFrame in cameraFrameUpdates { guard let mainCameraSample = cameraFrame.sample(for: .left) else { continue } self.pixelBuffer = mainCameraSample.pixelBuffer }
-
7:47 - Spatial barcode & QR code scanning example
// Spatial barcode & QR code scanning example await arkitSession.queryAuthorization(for: [.worldSensing]) let barcodeDetection = BarcodeDetectionProvider(symbologies: [.code39, .qr, .upce]) do { try await arkitSession.run([barcodeDetection]) } catch { return } for await anchorUpdate in barcodeDetection.anchorUpdates { switch anchorUpdate.event { case .added: // Call our app method to add a box around a new barcode addEntity(for: anchorUpdate.anchor) case .updated: // Call our app method to move a barcode's box updateEntity(for: anchorUpdate.anchor) case .removed: // Call our app method to remove a barcode's box removeEntity(for: anchorUpdate.anchor) } }
-
13:17 - Apple Neural Engine access example
// Apple Neural Engine access example let availableComputeDevices = MLModel.availableComputeDevices for computeDevice in availableComputeDevices { switch computeDevice { case .cpu: setCpuEnabledForML(true) // Example method name case .gpu: setGpuEnabledForML(true) // Example method name case .neuralEngine: runMyMLModelWithNeuralEngineAvailable() // Example method name default: continue } }
-
15:39 - Object tracking enhancements example
// Object tracking enhancements example var trackingParameters = ObjectTrackingProvider.TrackingConfiguration() // Increasing our maximum items tracked from 10 to 15 trackingParameters.maximumTrackableInstances = 15 // Leaving all our other parameters at their defaults trackingParameters.maximumInstancesPerReferenceObject = 1 trackingParameters.detectionRate = 2.0 trackingParameters.stationaryObjectTrackingRate = 5.0 trackingParameters.movingObjectTrackingRate = 5.0 let objectTracking = ObjectTrackingProvider( referenceObjects: Array(referenceObjectDictionary.values), trackingConfiguration: trackingParameters) var arkitSession = ARKitSession() arkitSession.run([objectTracking])
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.