首页 文章

如何在 SceneKit 中实现运动模糊效果?

提问于
浏览
1

如何在 SceneKit 中实现“动作效果”?动作效果是在拍摄(使用相机)快速移动的物体时会产生的模糊效果。我正在节点上运行一个动作,并希望在节点移动时移动方向有点模糊,以强调节点正在快速移动。可以在 SceneKit 中完成吗?

此图像具有运动效果 - 应用于整个场景的模糊。你可以看出相机是通过模糊线的方向向内移动。我只想将运动模糊应用于单个对象而不是场景。

在此输入图像描述

3 回答

  • 4

    在 SceneKit 的最新版本中,内置了运动模糊 - 您只需在场景的相机上设置motionBlurIntensity即可。

    在 iOS 10 中,运动模糊仅适用于相机运动 - 移动物体不会模糊。 (当摄像机移动时,您必须为想要不模糊的节点设置movabilityHint fast.)

    在 iOS 11 及更高版本中,移动对象也可能会模糊,因此您只需在相机上设置motionBlurIntensity即可“正常工作”。

    这个答案的其余部分早于 iOS 10,如果你(出于某种原因)支持 iOS 9.x 或更早版本,它仍然是相关的。


    要获得非常好的运动模糊效果,您必须编写自己的着色器,甚至可以替换一些 SceneKit CPU-side 管道 - 不适合胆小的人。

    为了更容易近似,可能仍然会让您感到沮丧,请查看node.filters 属性和 Core Image 过滤器。通过有选择地将线性或缩放模糊滤镜应用于某些节点,并仔细设置(甚至设置动画)滤镜参数,您可能会获得令人信服的伪动作模糊效果。

  • 1

    您将要研究使用 GLSL 或 Metal Shading Language 编写运动模糊片段着色器。

  • 0

    iOS 10 为 SCNCamera 引入了camera.motionBlurIntensity。值介于 0.0 和 1.0 之间,默认值为 0.0.

    https://developer.apple.com/documentation/scenekit/scncamera/1644099-motionblurintensity

相关问题