gpt4 book ai didi

swift - 如何平滑地更改不会设置动画的 SCNCamera 的 FoV?

转载 作者:行者123 更新时间:2023-11-28 07:21:36 34 4
gpt4 key购买 nike

我有一个 SCNCamera 在 iOS 上的 3D SceneKit View 中工作。

当我改变屏幕的方向时,为了保持世界对象相同的大小和相对位置,我需要改变 SCNCamera 的 FoV。

但是,我无法制作此更改的动画,因此当 FoV 从一种设置更改为另一种设置时,世界会“闪烁”或“脉冲”。

有没有一种方法可以顺利地做到这一点,以便 FoV 的变化不会突然导致世界中的物体“脉动”?

当设备改变方向时,执行这段代码:

if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight
{
self.cameraNode?.camera?.fieldOfView = 38
}
else
{
self.cameraNode?.camera?.fieldOfView = 50
}

我试过将 FoV 更改包装在 UIView 动画 block 中,但这没有用。

我曾尝试在它的线程上延迟运行它,但随着 FoV 的变化,这仍然会导致视觉“脉冲”。

有什么方法可以使这种过渡顺利进行吗?

最佳答案

你需要像下面这样用 SCNTransaction 添加你的代码来做动画。

The SCNTransaction class defines SceneKit's architecture for scene content changes, including implicit animations: A transaction is a single atomic operation that combines multiple changes to nodes, geometries, materials, or other scene content.

    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()
}

关于swift - 如何平滑地更改不会设置动画的 SCNCamera 的 FoV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57842389/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com