Swift/Swift 개발 노트
[iOS/SceneKit] 특정 노드만 남기고 보이게 만들기
힛해
2024. 8. 21. 12:24
728x90
이전 updateUIView 가 실행이 안돼요 - 2 의 마지막 영상을 보면 특정 노드만 남기지만 밝기도 같이 줄어드는 것을 볼 수 있다.
이는 따로 설정해둔 환경조명, 방향성 조명 노드도 같이 지워지기 때문이다.
환경조명과 방향성 조명 노드를 남기려면 아래 두가지 설정이 필요하다.
- 조명노드들 name 설정
- 조건문에서 조명노드들 isHidden 제외 조건 추가
작성해보자
1. 노드 name 설정
func makeCamera() -> SCNNode {
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
...
cameraNode.name = "camera"
return cameraNode
}
func makeAmbientLight() -> SCNNode{
let ambientLightNode = SCNNode()
let ambientLight = SCNLight()
...
ambientLightNode.name = "ambientLight"
return ambientLightNode
}
func makeDirectionalLight() -> SCNNode {
let directionalLightNode = SCNNode()
let directionalLight = SCNLight()
...
directionalLightNode.light = directionalLight
directionalLightNode.name = "directionalLight"
// 방향성 조명의 방향 설정
directionalLightNode.position = SCNVector3(x: 5, y: 5, z: 10)
directionalLightNode.look(at: SCNVector3.init(x: 0, y: 0, z: 0)) // 장면의 중심을 향하도록 조명 방향 설정
return directionalLightNode
}
위와 같이 name들을 설정해준다
2. 조건문 조건 추가
func hideAllNodesExcept(node: SCNNode, rootNode: SCNNode) {
for childNode in rootNode.childNodes {
if childNode != node && childNode.name != "camera" && childNode.name != "ambientLight" && childNode.name != "directionalLight" {
childNode.isHidden = true
}
}
}
이렇게 기본 설정 노드들을 제외하면 어떤 매개변수가 들어오더라도 동일한 환경값에서 모델 출력이 가능해진다!