2017-09-29 1 views
1

SCNKit 및 ARKit을 좀 더 잘 이해하고 Xcode 9 Augmented Reality 응용 프로그램을 배포하고 iPhone (간단한 테스트 장치로 사용)에서 작동하도록 노력하고 있습니다.ARKit 및 SCNKit으로 가상 자산 위치 지정

이 응용 프로그램의 소스 코드는 here입니다.

기본적으로 앱이 시작되고 카메라가 초기화되고 3D 뷰 파이터가 카메라 뷰포트에 삽입되는 방식과 비슷한 방식으로 3D 전투기가 장면 (세계관) 내에 렌더링됩니다 (카메라를 가리킬 때마다). 정말 멋진!

이 코드는 모두 Xcode에서 자동으로 생성되었습니다. 그래서 로직이 어디에 있는지 결정하려고합니다. 은 전투기의 위치/방향을 지정합니다 (이라는 SCN 파일).

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Set the view's delegate 
    sceneView.delegate = self 

    // Show statistics such as fps and timing information 
    sceneView.showsStatistics = true 

    // Create a new scene 
    print("Hello there Mr. Zac") 

    let scene = SCNScene(named: "art.scnassets/ship.scn")! 

    // Set the scene to the view 
    sceneView.scene = scene 
} 

을하지만는 제트/선박을 배치하고 어떤 방향으로 방향을 어디에 프로그램이 을 선택하는 방법을 이해하지 않습니다 here에서 우리는 제트가로드되는 참조하십시오. 첫 단계로 제트기의 위치를 ​​변경하고 내 자산 파일을 교환하려고 시도하고 싶습니다. 미리 감사드립니다!

답변

2

그와 같은 "논리"는 두 곳에서 생깁니다.

  1. ship.scn 파일은 모델하지만, 현장에서 모델의 위치 단지를 정의합니다. 카메라가의 기원에 배치되어있는 경우 그 Xcode 프로젝트 템플릿 배송, 모델이 0, 0, -0.5 같은에 위치하는 scn 파일에서

    을 (즉, 글로벌 "세계"에. 좌표 공간), 그래서 좌표 시스템에서 우주선은 반 미터 떨어져있는 카메라 바로 앞에 나타납니다.

  2. ARKit 자체는 장치의 초기 실제 위치/방향과 관련하여 장면/세계 공간을 정의합니다. By default을 사용하면 좌표계의 z 축이 장치의 초기 방향과 일치하므로 AR 세션을 시작할 때 좌표 원점의 앞쪽에있는 모든 것이 카메라 앞에 표시됩니다.

+0

감사합니다. @rickster (+1), 앱을 시작할 때 좌표 시스템의 원점을 결정하는 요소는 무엇입니까? 게다가'.scn' 파일은 장면에서 모델의 기본/초기 위치를 정의하는 것입니까? 이 기본/초기 위치를 재정의하고 장면에로드 된 후에 업데이트하는 방법이 있습니까? 다시 한 번 감사드립니다! – smeeb