簡體   English   中英

SceneKit,測試 SCNNode 是否完全可見

[英]SceneKit, test if SCNNode completely visible

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

我旋轉它的父級,這樣小盒子有時在相機中不再可見,是否有可能知道小盒子何時不再可見,因為它在大盒子后面?

我目前的結構

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

您正在尋找的是occlusion testing ,而不是 SceneKit 提供 API 來做的事情。 在一般情況下,這是一個大毛病。

但是,由於您只是在使用盒子,因此有相當不錯的方法可以偽造它。 如果小盒子隱藏在大盒子后面,那么從相機位置到小盒子八個角中的每一個角的線都會與大盒子相交。

所以:

  1. 在包含兩者的節點(根節點)的坐標系中獲取相機和每個角的位置。 對於框角,您可以獲取框節點的位置並進行數學運算以獲取角,或者使用SCNBoundingVolume協議。 您可能需要使用一些SCNNode坐標轉換方法來獲得同一空間中的所有點。

  2. 對於每個角,使用hitTestWithSegmentFromPoint:toPoint:options:方法進行光線測試。

  3. 如果所有八個命中測試都返回大盒子,那么小盒子就完全隱藏在大盒子后面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM