首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SceneKit:在SCNView中查找特定位置节点的原生方法?如果不是,使用字典将位置映射到节点?

SceneKit:在SCNView中查找特定位置节点的原生方法?如果不是,使用字典将位置映射到节点?
EN

Stack Overflow用户
提问于 2016-05-02 02:50:14
回答 2查看 821关注 0票数 0

在SCNView中,有没有一种使用SceneKit在给定位置(例如(0,0,0) )查找节点的原生方法?

假设一个SCNView包含一个SCNNode,它充当其他SCNNodes的层。有没有一种本地方法可以找到层中特定位置的所有节点?

阅读类docs时,似乎唯一的选择是创建和维护一个将位置映射到节点的自定义数据结构。

但希望有一些原生的东西,因为这似乎是一个常见的问题。

如果需要自定义数据结构,字典是否是在Swift中维护10K节点上的选项卡的最有效方式?

EN

回答 2

Stack Overflow用户

发布于 2016-05-02 04:42:05

节点符合SCNBoundingVolume,因此您可以大致了解节点是否“包含”原点。您还可以使用带有不同选项的-[SCNNode - hitTestWithSegmentFromPoint:toPoint:options:]来优化您的搜索。

票数 2
EN

Stack Overflow用户

发布于 2016-05-02 03:23:51

虽然我从未尝试过,但看起来SCNPhysicsWorld可以帮助你做到这一点。您需要在要跟踪或查询的每个节点上都有一个物理主体。

您可以在目标点处放置一个不可见的身体,并等待碰撞代理回调。

还有convexSweepTestWithShape(_ shape: SCNPhysicsShape, fromTransform from: SCNMatrix4, toTransform to: SCNMatrix4, options options: [String : AnyObject]?) -> [SCNPhysicsContact]

另一种方法是使用带有正交SCNCamera的SCNSceneRenderer的nodesInsideFrustumWithPointOfView函数,这样您就可以获得一个矩形或立方体的平截体。

通常,对于SceneKit,顺便说一句,检查所有适用的协议引用。许多常见的调用都在协议上,而不是在类上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36970588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档