私のSceneKitプロジェクトは、インポートされた.OBJファイルを使用します。このファイルには、巨大なイメージを持つノードが1つだけ含まれています。イメージは、異なるオブジェクトまたはパーツで構成されます。私は足をタップするか、特定の部分をイメージし、それを強調表示する必要があります。 これは私が盗聴されるために必要な左足右足や床などのさまざまな部分で3Dモデルを持っている私は、タップジェスチャー認識にSceneKit NSNode分割部分
// 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ファイル
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
、ここをインポートするためのコードですそれらに異なる色を表示します。問題は、これらすべてが単一ノードにあることです。
あなたはそれが単なるノードであり、子どもがいないことは確かですか?複数のノードに対して1つのイメージを持つことは一般的です。ノード階層を再度確認してください。それ以外の場合、Hal Mueller氏は、3Dモデリングソフトウェアに戻ってそのメッシュを複数のメッシュに分割するのが賢明だと述べています。 –
はい、ノードが1つしかありません。ノードは、HitTestメソッドを使用して取得した多くのジオメトリ要素で構成されています。最後に、3Dモデルの各部分を得ました。今私はどのように材料を拡散してジオメトリ要素の色を適用することができるのかという問題に直面していますか? –
「SCNGeometryElement」https://developer.apple.com/reference/scenekit/scngeometryelementのドキュメントをチェックしてください。ジオメトリは、複数の要素に対応する複数の要素で構成されています。 –