0

我是 SceneKit 的新手,我可以在以下方面使用您的帮助:我有两个 SCNView - 一个大的(skView)为用户显示场景,用户可以在启用标准 allowCameraControl 选项的情况下对其进行操作 - 另一个小的( coordinateCrossView)在左角显示一个坐标交叉,我想反映用户在大型 SCNView 中执行的任何相机导航

坐标跨 SCNView

我通过使同时拥有 SCNViews 的 ViewController 成为 SCNRendererDelegate 并通过更新渲染器中的交叉方向来实现它: updateAtTime: 方法如下:

- (void)renderer:(id<SCNSceneRenderer>)renderer updateAtTime:(NSTimeInterval)time {

    [self.coordinateCrossView.scene.rootNode childNodeWithName:@"cross" recursively:YES].orientation = self.skView.pointOfView.orientation;
    [self.coordinateCrossView setNeedsDisplay];
}

到目前为止,一切都很好。但是,这仅在用户用手指在屏幕上操作大 SCNView 时才有效。在手指离开屏幕时作为滑动手势后,大 SCNView 中的对象继续旋转一点 - 但坐标十字不会更新。任何想法为什么 pointOfView.orientation 更改未捕获此行为?

4

1 回答 1

0

我发现了问题所在:小坐标交叉视图没有持续更新,因此即使坐标十字方向发生了变化,视图也没有显示它——即使调用了 setNeedsDisplay。我通过设置强制更新的坐标的 isPlaying 属性解决了这个问题。

于 2016-07-07T16:45:29.210 回答