需要2d广告牌才能在节点的几何体前面绘制

时间:2015-01-26 15:47:50

标签: swift scenekit

我正在渲染一个球体,其中有一些2d平面(注释)粘在球体上。我希望注释不会渲染,如果它们位于距指向相机的矢量超过90º的点上...如果这是有道理的。

基本上我希望注释在引用我的球体上的相机无法看到的点时消失。

我将如何做到这一点?

澄清我的例子,我正在制作一个带注释的3d地球仪。我不希望渲染球体背面的注释,但我也不希望在下半球的地球正面注释其纹理被剪裁。我能够调整渲染顺序来修复第二个问题,但第一个问题就变成了问题。

更新:感谢mnuages我能够使用此代码来解决我的问题

func renderer(aRenderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval) {

    let position = scene.rootNode.convertPosition(annotation!.position, fromNode: globeNode)

    if position.z > 0 {
        annotation?.hidden = false
    } else {
        annotation?.hidden = true
    }

}

1 个答案:

答案 0 :(得分:1)

  1. 计算视图空间中球体中心的坐标
  2. 计算视图空间中跟踪点的坐标
  3. 计算从球体中心到视图空间中跟踪点的向量
  4. 如果前一个向量的z分量为负数,则隐藏该点(将节点的hidden属性设置为YES