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

时间:2015-11-25 19:23:59

标签: ios scenekit

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

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

enter image description here

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

为了更容易理解,可能仍然会让您感到沮丧,请查看the node.filters property和核心图像过滤器。通过有选择地将线性或缩放模糊滤镜应用于某些节点,并仔细设置(甚至设置动画)滤镜参数,您可能会获得令人信服的假运动模糊。

答案 1 :(得分:1)

您希望研究使用GLSL或金属着色语言编写运动模糊片段着色器。

答案 2 :(得分:0)

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

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