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

san*_*han 2 ios scenekit

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

该图像具有运动效果 - 应用于整个场景的模糊。您可以通过模糊线的方向判断相机正在向内移动。我只想将运动模糊应用于单个对象,而不是在场景中。

在此处输入图片说明

ric*_*ter 6

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

在 iOS 10 中,运动模糊仅适用于相机运动——移动的物体不会模糊。(您必须设置movabilityHint为节点要没有相机抖动时快速模糊。)

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

此答案的其余部分早于 iOS 10,如果您(出于某种原因)支持 iOS 9.x 或更早版本,则仍然适用。


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

为了更方便的近似,可能还是给你一些邦为您的降压,看一看node.filters属性和核心图像过滤器。通过有选择地将线性或缩放模糊过滤器应用于某些节点,并仔细设置(甚至动画化)过滤器参数,您可能会得到令人信服的假运动模糊。