Elp*_*aba 1 animation orientation scenekit swift scncamera
我有一个 SCNCamera 在 iOS 上的 3D SceneKit 视图中工作。
当我更改屏幕方向时,为了保持世界对象的大小和相对位置相同,我需要更改 SCNCamera 的 FoV。
但是,我无法为这种变化设置动画,因此当 FoV 从一种设置更改为另一种设置时,世界会“闪烁”或“脉冲”。
有没有一种方法可以顺利地做到这一点,以便视场的变化不会太突然而导致世界上的物体“脉动”?
当设备改变方向时,将执行以下代码:
if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight
{
self.cameraNode?.camera?.fieldOfView = 38
}
else
{
self.cameraNode?.camera?.fieldOfView = 50
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 FoV 更改包装在 UIView 动画块中,但这不起作用。
我尝试在线程上运行它,但会有延迟,但这仍然会导致视场变化时的视觉“脉冲”。
有什么办法可以让这个过渡顺利吗?
SCNTransaction您需要添加如下代码来制作动画。
SCNTransaction 类定义了 SceneKit 场景内容更改的体系结构,包括隐式动画:事务是单个原子操作,它组合了对节点、几何图形、材质或其他场景内容的多个更改。
if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight {
SCNTransaction.begin()
SCNTransaction.animationDuration = 1.5
self.cameraNode?.camera?.fieldOfView = 38
SCNTransaction.commit()
} else {
SCNTransaction.begin()
SCNTransaction.animationDuration = 1.5
self.cameraNode?.camera?.fieldOfView = 50
SCNTransaction.commit()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |