SceneKit中的正交相机和缩放控件

时间:2014-02-20 12:49:55

标签: objective-c macos cocoa scenekit

当使用myCameraNode.camera.usesOrthographicProjection = YES;的相机时,据我所知,你不能像平常那样使用myScene.allowsCameraControl = YES;给出的默认控件进行缩放 - 这是我能分辨的唯一缩放方式是通过更改myCameraNode.scale = (SCNVector3*)...

有没有办法以某种方式将滚轮绑定到此缩放参数,同时保留标准相机控件以进行旋转/平移?或者以其他方式“修复”默认的相机控件?

编辑:我想我误解了相机的工作原理。双指缩放手势 仍然适用于正交投影,但似乎它只允许我缩小而不让我进一步放大。我怀疑它可能与myCameraNode.scale有关,但是如果我没有设置那个参数,我的场景中的对象很大,我只看到它的一小部分(和scale越大我的对象越小越好。

1 个答案:

答案 0 :(得分:1)

SCNView上的内置摄像头控件非常基本,可能最适合用于调试。对于制作应用程序,最好自己控制相机,尤其是在使用正交投影时。设置您自己的事件处理来控制摄像机的orthographicScale属性,然后进行设置。


跟进评论:

scale上的SCNNode属性控制节点内容相对于其父节点的大小 - 这是一个坐标空间转换,就像rotationposition一样。它不适合实现相机变焦。在透视投影中,您可以使用相机的xFov和/或yFov属性进行缩放(我认为这是内置相机控件的功能)。 API没有定义控件对正交相机所做的操作,所以你观察到的关于它的行为的任何内容都可能是未定义的,可能是一个错误......你可能无法依赖它保持这种状态。

如果还有更多内置相机控件需要处理,我建议filing an enhancement request