
이제 씬을 올렸으니 위에 scenekit을 활용하여 노드를 위치시켜 오브젝트를 올릴 수 있습니다
여기서는 usdz 확장자를 가진 모델을 업로드하는 방법을 설명합니다.
해당 프로젝트에서는 우선 인벤토리에서 오브젝트를 꺼낼때마다 새로운 오브젝트를 위치시켜야 하므로 기존 오브젝트, 즉 노드를 삭제하도록 합니다. removeFromParentNode메서드를 통해 루트노드의 모든 자식노드를 제거해서 불필요한 기존 노드를 모두 삭제합니다. 이제 새로운 오브젝트를 올리기 위한 코드입니다.Bundle.main.url(forResource:withExtension:) 메서드를 사용하여 art.scnasset폴더내에 지정된 이름과 확장자를 가진 USDZ 파일의 URL을 가져온 후에 SCNReferenceNode(url: url)를 사용하여 해당 url 을 통해 SCNReferenceNode 를 만들고 node 에 저장합니다.이렇게 참조노드 형태로 만들면 방금과 같이 url을 통해 객체 인스턴스가 생성되는 즉시 로드되는것이 아닌 하단의 node.load() 함수처럼 load()메서드가 호출될때 콘텐츠가 로딩됩니다. 외부파일 즉, usdz파일들의 노드들은 이 참조노드의 자식노드가 됩니다. 그리고 가장 마지막 코드인 sceneView.scene.rootNode.addChildNode 를 통해 외부 usdz파일들의 노드를 가지고 있는 방금 생성한 참조노드 즉 node를 sceneView의 루트노드의 자식노드로 설정하면 씬에 위치시킬 수 있게 됩니다.
이 노드를 루트노드에 연결하기 전에 position과 scale 혹은 transform등의 속성을 통해 노드의 위치를 부수적으로 설정해줄 수 도 있습니다.