放大和缩小场景?
Zoom in and out of a scene?
在 SceneKit 中放大和缩小场景的正确方法是什么?
因此,当我在场景中启用标准相机控制并捏合和捏合时,场景会变大变小。那个夹子到底在做什么?
是否改变了整个场景的比例?是不是把相机移近了?
我想以编程方式实现相同的效果。
我应该怎么做才能达到同样的效果?
当您捏合时,相机的视野(xFox
和 yFov
属性)发生了变化。改变视野并不是最好的缩放方式,因为它会显着改变视角。
将相机移近您的对象是一个很好的解决方案。
另请注意,"free camera" 行为适用于 3D 查看器(例如 Preview.app),但在任何其他应用中会很快变得令人沮丧。此时您可能想要实现自己的相机控制器。
在任何给定点,相机在 space 中有一个位置,它的每个轴相对于每个世界轴都有一个旋转,要放大和缩小,你有在 +z/-z 轴方向移动相机。
沿着相机自己的 Z/-Z 轴。
对于 OSX 上的那些人,我在我的 SCNView 子类中使用了这个:
override func scrollWheel(theEvent: NSEvent) {
let cam = pointOfView!.camera
cam!.xFov = cam!.xFov - Double(theEvent.deltaY)
cam!.yFov = cam!.yFov - Double(theEvent.deltaY)
}
有两个(小)问题可以通过一些额外的代码来解决。一个是值可以变为负值,此时图像由内而外翻转。另一个是,如果您真的旋转滚轮,鼠标加速会导致缩放级别过快。对这两者进行限制是个好主意,但在我的应用程序中,行为很好,就像上面那样。
在 SceneKit 中放大和缩小场景的正确方法是什么?
因此,当我在场景中启用标准相机控制并捏合和捏合时,场景会变大变小。那个夹子到底在做什么?
是否改变了整个场景的比例?是不是把相机移近了?
我想以编程方式实现相同的效果。
我应该怎么做才能达到同样的效果?
当您捏合时,相机的视野(xFox
和 yFov
属性)发生了变化。改变视野并不是最好的缩放方式,因为它会显着改变视角。
将相机移近您的对象是一个很好的解决方案。
另请注意,"free camera" 行为适用于 3D 查看器(例如 Preview.app),但在任何其他应用中会很快变得令人沮丧。此时您可能想要实现自己的相机控制器。
在任何给定点,相机在 space 中有一个位置,它的每个轴相对于每个世界轴都有一个旋转,要放大和缩小,你有在 +z/-z 轴方向移动相机。
沿着相机自己的 Z/-Z 轴。
对于 OSX 上的那些人,我在我的 SCNView 子类中使用了这个:
override func scrollWheel(theEvent: NSEvent) {
let cam = pointOfView!.camera
cam!.xFov = cam!.xFov - Double(theEvent.deltaY)
cam!.yFov = cam!.yFov - Double(theEvent.deltaY)
}
有两个(小)问题可以通过一些额外的代码来解决。一个是值可以变为负值,此时图像由内而外翻转。另一个是,如果您真的旋转滚轮,鼠标加速会导致缩放级别过快。对这两者进行限制是个好主意,但在我的应用程序中,行为很好,就像上面那样。