XCode のドキュメントには、3D ライン セグメントのテストを計画している場合、SCNRender、SCNView、または SCNNode 自体を使用して、SceneKit でのジオメトリのヒット テストを実行できることが明確に記載されています。レンダラーやビューのないノードで SCNScene を使用しているため、SCNNode hitTesting を使用する予定です。SCNScene を作成し、そこに SCNNode を配置して、通過する単純な光線をテストしますが、常に空の hitList が返され、その理由がわかりません。
import Swift
import SceneKit
let boxGeometry = SCNBox(width: 1.0, height: 1.0, length: 1.0, chamferRadius: 0)
let boxNode = SCNNode(geometry: boxGeometry)
var scene = SCNScene()
scene.rootNode.addChildNode(boxNode)
let from = SCNVector3(x: 0, y: -2, z: 0)
let to = SCNVector3(x: 0, y: 2 , z: 0)
var hits = scene.rootNode.hitTestWithSegmentFromPoint(from, toPoint: to, options:nil) // this is always empty
if hits != nil {
if hits!.count > 0 {
var hit = (hits!.first as! SCNHitTestResult).node as SCNNode
}
}
さまざまな形式のオプションを渡そうとしましたが、何も変わりません。
- SCNHitTestFirstFoundOnlyKey: yes または no は何も変更しません
- SCNHitTestSortResultsKey: yes または no は何も変更しません
- SCNHitTestClipToZRangeKey: SCNNode では無効
- SCNHitTestBackFaceCullingKey: yes または no は何も変更しません
- SCNHitTestBoundingBoxOnlyKey: yes または no は何も変更しません
- SCNHitTestRootNodeKey: シーンまたは boxNode の rootNOde は何も変更しません
- SCNHitTestIgnoreHiddenNodesKey: yes または no は何も変更しません
私は何を間違っていますか?