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

标签 objective-c macos cocoa scenekit

当使用 myCameraNode.camera.usesOrthographicProjection = YES; 的相机时,据我所知,您无法像通常使用 myScene 提供的默认控件那样进行缩放。 allowedCameraControl = YES; – 我能告诉的唯一缩放方法是更改​​ myCameraNode.scale = (SCNVector3*)...

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

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

最佳答案

SCNView 上的内置相机控件非常基本,可能最好仅用于调试。对于生产应用程序,最好自己控制相机,尤其是在使用正交投影时。设置您自己的事件处理来控制相机的 orthographicScale 属性,然后您就完成了。


评论后续:

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

如果您需要内置相机控件来处理更多内容,我建议 filing an enhancement request .

关于objective-c - SceneKit 中的正交相机和缩放控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908317/

相关文章:

ios - 从我的 iphone 画廊上传照片

objective-c - 如何在 iOS8 的 UIAlertController 中自定义 UIAlertAction?

ios - viewWithTag 不起作用

macos - Safari 中的网站加载缓慢(有时甚至不加载)并且背景图像不显示

python - CMake - 安装问题以制作包

objective-c - 使用 objective-c 将 id 转换为枚举

mysql - 为什么 mysqld 不断崩溃(无法启动 MAMP)?

cocoa - NSIndexSet 上的快速枚举

iphone - UIView 和 NSView 有什么区别

iphone - 关于cocoa框架中使用kvo时释放对象