기본적으로 ARKit의 세계 좌표계는 ARKit이 기기 주변의 실제 세계를 이해 한 것을 기반으로합니다. (그리고 네, 그것은, oriented to gravity 장치의 동작 감지 하드웨어 덕분입니다.) 기본적으로 또한
, 당신이 ARKit 세션에서 SceneKit 내용을 표시 할 수 ARSCNView
를 사용할 때이 장면의 rootNode
가 ARKit 세계에 일치의 좌표계 좌표계. 즉, 장면 공간의 "위로"는 실제 공간에서 "위로"와 항상 동일합니다. 즉, 장치를 아무리 움직여도 상관 없습니다.
은 제외 : 당신이 upAxis
을 발견 scene attributes API는 그들이 생각하지 않습니다. 이는 파일에서로드 된 장면의 고유 설정입니다. 누군가가 3D 저작 도구로 설계된 DAE 파일을 보냅니다.이 도구는 Z 축이 "위로"를 의미하므로 Attribute는 SceneKit에게 SceneKit의 Y-up 좌표 시스템 규칙에 맞게 해당 파일의 데이터를 회전 시키도록 지시합니다. 당신은 세계 공간 일부 SceneKit 노드 상대의 최대 축 찾으려면
는 worldUp
또는 simdWorldUp
속성은 당신이 원하는 것입니다. 그러나이 값은과 관련하여 입니다. 세계 공간 자체가 가리키는 방향을 묻는 API는 없습니다. 왜냐하면 그것은 다른 것과 관련된 방향을 의미하기 때문입니다. 세계 공간은 모든 것이 상대적인 "절대적"좌표 시스템입니다. 그래서 당신은 definition에 의지해야합니다.
이 좌표 시스템의 일치에 대한 중요한 점은 SceneKit을 실 공간에 매우 쉽게 넣을 수 있다는 것입니다. 코드에서 명시 적으로 위치를 지정하지 않았기 때문에 0, 0, 0
에 흰색 줄무늬가 표시됩니다. ARKit 세션에서 세션을 시작할 때 0, 0, 0
은 장치의 위치이므로 ... 해당 코드를 실행 한 다음 뒤로 물러서서 white stripe을 볼 수 있어야합니다.세계는 고정되어 , 그리고 내 장치/카메라 이동 : 간단히 말해서
는 ARKit에 대한 좌표 시스템 모델이있다.
즉, 장치의 현재 위치/방향에 관련된 작업을 수행하려면 카메라 공간으로 변환해야합니다. view.pointOfView
는 당신에게 SceneKit 카메라 노드를 제공합니다, 그래서 당신이 할 수있는 ...