override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate sceneView.delegate = self
// 씬 생성 let scene = SCNScene()
// 씬 뷰에 SCNScene 인스턴스를 올림 sceneView.scene = scene
// 인벤토리 버튼 추가 setupInventoryButton()
// 제스처 인식기 추가 addGestureRecognizers()
}
func loadUSDZModel(named modelName: String) {
// sceneView의 씬에서 루트 노드의 모든 자식 노드를 제거
// forEach 문으로 루트 노드의 모든 자식노드를 돌면서 씬의 루트 노드에 있는 모든 자식 노드를 제거함
sceneView.scene.rootNode.childNodes.forEach {
$0.removeFromParentNode()
}
guard let url = Bundle.main.url(forResource: "art.scnassets/\(modelName)", withExtension: "usdz"), let node = SCNReferenceNode(url: url) else {
print("USDZ 파일을 찾을 수 없습니다: \(modelName)")
return
}
// 일부 객체가 검게 보이는 현상이 있으므로 다시 조명추가해줌
// 씬에서 오브젝트를 갈아낄때 노드가 삭제되면서 조명(라이팅)이 제거된 것으로 보임
addLighting()
currentModelName = modelName
// 소리를 재생합니다
playSound(modelName)
// 노드를 올립니다
node.load()
// Animated_fire 모델의 특성으로 z축으로 떨어져서 보내게 했습니다
node.position = SCNVector3(x: 0, y: 0, z: -15)
// 원하는 스케일로 조정
node.scale = SCNVector3(x: 0.15, y: 0.15, z: 0.15)
// 씬의 루트노드에 자식노드를 추가합니다
sceneView.scene.rootNode.addChildNode(node)
// 핀치 제스쳐 관련으로 selectedNode 속성을 사용했었으나 지금은 쓰지않음(일단 넣어뒀음 - 추후 삭제예정)
// selectedNode = node
// addAnimation(node: node)
originalScale = node.scale
}