【问题标题】:SceneKit, 'hit' testing between camera orientation and geometrySceneKit,相机方向和几何之间的“命中”测试
【发布时间】:2016-02-02 03:42:06
【问题描述】:

我目前正在关注 David Roonqvist 的 3D Graphics with SceneKit 一书。

第 5 章涉及点击测试,实现它没有问题,但只涉及他的鼠标事件测试。

现在,我知道我的相机的方向总是会与某个几何体相交。

我需要获取相机方向和几何图形交点的纹理坐标。

关于如何去做的任何指示?我一直在四处寻找,但没有取得多大成功。

感谢任何帮助。

【问题讨论】:

    标签: scenekit hittest scnnode


    【解决方案1】:

    我没试过,但是...

    SCNHitTestResult 返回 textureCoordinatesWithMappingChannel(_:)。文档引用了在游戏角色被激光击中后为其纹理添加焦痕的示例。

    看来SCNNode

    hitTestWithSegmentFromPoint(_ pointA: SCNVector3,
                         toPoint pointB: SCNVector3,
                         options options: [String : AnyObject]?) -> [SCNHitTestResult]
    

    无论相机的方向如何,都会在相机和几何体之间为您提供所需的命中。如果相机和目标使用不同的局部节点坐标系,则必须使用convertPosition(_:from:Node:)或类似函数进行一些转换。

    【讨论】:

    • hay Hal,我最终申请了 SCNSceneRenderer.hitTest(.... 但也感谢您的有效回答!
    • 太棒了!请将您的解决方案作为答案发布,然后接受该答案,因此问题将显示为已关闭。另外,我很想了解更多关于您如何使用 SCNSceneRenderer 的详细信息!
    • sceneView.delegate = self,然后实现:func renderer(renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: NSTimeInterval) { renderer.hitTest(midpoint, options: nil) 给出了相同的 [ SCNHitTestResult]
    猜你喜欢
    • 2015-06-14
    • 2017-12-24
    • 2021-10-13
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多