如何在SceneKit中实现“动作效果”?动作效果是在拍摄(使用相机)快速移动的物体时会产生的模糊效果。我正在节点上运行一个动作,并希望在节点移动时移动方向有点模糊,以强调节点正在快速移动。可以在SceneKit中完成吗?
此图像具有运动效果 - 应用于整个场景的模糊。你可以看出相机是通过模糊线的方向向内移动。我只想将运动模糊应用于单个对象而不是场景。
答案 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