내 SceneKit 프로젝트는 거대한 이미지가있는 노드가 하나만있는 가져온 .OBJ 파일을 사용합니다. 이미지는 다른 대상 또는 부품으로 구성됩니다. 나는 다리를 누르거나 특정 부분을 이미지화하고 강조 표시해야합니다. 이 코드는 내가 왼발 오른발 바닥 도청 될 필요와 같은 다른 부분과 3D 모델을SceneKit NSNode 분할 부분
sceneView = SCNView(frame: self.view.frame)
self.view.addSubview(sceneView)
let scene = SCNScene(named: "OBJ.obj")!
print("\(scene.rootNode.childNodes.first?.geometry?.materials.count)")
sceneView.scene = scene
여기에 내가 탭 제스처 인식기를
// add a tap gesture recognizer
let doubleTapRecognizer = UITapGestureRecognizer(target: self, action : #selector(self.tapGesture(sender:)));
doubleTapRecognizer.numberOfTapsRequired = 1;
doubleTapRecognizer.numberOfTouchesRequired = 1;
sceneView.addGestureRecognizer(doubleTapRecognizer);
func tapGesture(sender: UITapGestureRecognizer){
let hitResult : SCNHitTestResult
// check what nodes are tapped
let p = sender.location(in: sceneView)
let hitResults = sceneView.hitTest(p, options: nil)
}
을 사용하고 파일 .OBJ 가져 오는 것입니다 그 (것)들에 다른 색깔을 보여주십시오. 문제는 이들 모두가 단일 노드에 있다는 것입니다.
정말 노드가 하나 뿐이며 하위 노드가없는 것은 확실합니까? 여러 노드에 대해 하나의 이미지를 갖는 것이 일반적입니다. 노드 계층 구조를 다시 점검하십시오. 그렇지 않으면, Hal Mueller는 3D 모델링 소프트웨어로 돌아가서 하나의 메쉬를 여러 메쉬로 분할하는 것이 현명하다고 말합니다. –
예 노드가 하나만 있는지 확인하십시오. Node는 HitTest 메서드를 사용하여 얻은 많은 Geometry 요소로 구성됩니다. 마지막으로 3D 모델의 각 부분을 얻었습니다. 이제는 기하학 요소 색상을 확산시키기 위해 재료를 어떻게 적용 할 수 있을까요? –
'SCNGeometryElement' https://developer.apple.com/reference/scenekit/scngeometryelement에 대한 문서를 확인하십시오. 형상은 여러 재질에 해당하는 여러 요소로 구성됩니다. –