SceneKit nodesInsideFrustumWithPointOfView:意外返回空

时间:2016-09-05 01:51:20

标签: ios xcode scenekit ios9.3 scnnode

我使用以下方法确定相机可以看到哪些SCNNode。

[self.scnView nodesInsideFrustumWithPointOfView:cameraNode];

但是返回的数组总是为空。 我将场景设置如下:

-(void)setupScene{
scene = [SCNScene scene];

cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
[scene.rootNode addChildNode:cameraNode];
cameraNode.position = SCNVector3Make(0, 0, 0);

[scene.rootNode addChildNode:cameraNode];

self.scnView.scene = scene;
self.scnView.showsStatistics = YES;
self.scnView.backgroundColor = [UIColor clearColor];
}

在随机时间,在创建场景之后,我将SCNNode添加到场景中:

testnode = [Testnode createNode];
testnode.position = SCNVector3Make(0, 0, -10);
[self.scnView.scene.rootNode addChildNode:testnode];

在我的设备上,节点“testnode”在我的屏幕上可见但nodesInsideFrustumWithPointOfView:什么都不返回。

编辑:我尝试将观点更改为聚光灯对象并测试“testnode”是否在其平截头体内。这是我在屏幕上看到的内容:http://imgur.com/a/C3XGu但数组仍然返回空。 testnode是白色立方体。

1 个答案:

答案 0 :(得分:1)

添加此项以获得更好的可见性。感谢Crashalot。

基本上,如果您尝试使用[scnView nodesInsideFrustumWithPointOfView:][scnView isNodeInsideFrustum: withPointOfView:]检测到的SCNNode是具有空几何的节点的子节点,则不会检测到它。

就我而言,我添加了一个平面几何体并将材质设置为透明:

SCNNode *emptynode = [SCNNode node];
node.geometry = [SCNPlane planeWithWidth:1.0f height:2.0f];
node.geometry.firstMaterial.transparency = 0.0f;