• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - SceneKit,测试 SCNNode 是否完全可见

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:07:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个相邻的 2 个 SCNNode(1 个大盒子和 1 个小盒子)。

我旋转它的父级,这样小盒子有时在相机中不再可见,是否有可能知道小盒子何时不再可见,因为它在大盒子后面?

我目前的结构

Scene - RootNode 
           - SCNNode (camera)
           - SCNNode (parent)
                - SCNNode (Big box)
                - SCNNode (Small box)



Best Answer-推荐答案


您正在寻找的是遮挡测试,它不是 SceneKit 提供的 API 来做的。在一般情况下,这是一个大毛病。

不过,由于您只是在使用盒子,因此有相当不错的方法来伪造它。如果小盒子隐藏在大盒子后面,那么从相机位置到小盒子八个角的线将与大盒子相交。

所以:

  1. 在包含两者的节点(根节点)的坐标系中获取相机和每个角的位置。对于盒子的角,您可以获取盒子节点的位置并进行数学运算以获得角,或者使用 SCNBoundingVolume 协议(protocol)。您可能需要使用一些 SCNNode 坐标转换方法来获取同一空间中的所有点。

  2. 对于每个角,使用 ptions:" rel="noreferrer noopener nofollow">hitTestWithSegmentFromPoint:toPointptions: 进行射线测试方法。

  3. 如果所有八个 HitTest 都返回大框,则小框完全隐藏在大框后面。

关于ios - SceneKit,测试 SCNNode 是否完全可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799485/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap