如何在 SceneKit 中实现“动作效果”?动作效果是在拍摄(使用相机)快速移动的物体时会产生的模糊效果。我正在节点上运行一个动作,并希望在节点移动时移动方向有点模糊,以强调节点正在快速移动。可以在 SceneKit 中完成吗?
此图像具有运动效果 - 应用于整个场景的模糊。你可以看出相机是通过模糊线的方向向内移动。我只想将运动模糊应用于单个对象而不是场景。
在 SceneKit 的最新版本中,内置了运动模糊 - 您只需在场景的相机上设置motionBlurIntensity即可。
在 iOS 10 中,运动模糊仅适用于相机运动 - 移动物体不会模糊。 (当摄像机移动时,您必须为想要不模糊的节点设置movabilityHint fast.)
movabilityHint
在 iOS 11 及更高版本中,移动对象也可能会模糊,因此您只需在相机上设置motionBlurIntensity即可“正常工作”。
motionBlurIntensity
这个答案的其余部分早于 iOS 10,如果你(出于某种原因)支持 iOS 9.x 或更早版本,它仍然是相关的。
要获得非常好的运动模糊效果,您必须编写自己的着色器,甚至可以替换一些 SceneKit CPU-side 管道 - 不适合胆小的人。
为了更容易近似,可能仍然会让您感到沮丧,请查看node.filters 属性和 Core Image 过滤器。通过有选择地将线性或缩放模糊滤镜应用于某些节点,并仔细设置(甚至设置动画)滤镜参数,您可能会获得令人信服的伪动作模糊效果。
您将要研究使用 GLSL 或 Metal Shading Language 编写运动模糊片段着色器。
iOS 10 为 SCNCamera 引入了camera.motionBlurIntensity。值介于 0.0 和 1.0 之间,默认值为 0.0.
camera.motionBlurIntensity
https://developer.apple.com/documentation/scenekit/scncamera/1644099-motionblurintensity
3 回答
在 SceneKit 的最新版本中,内置了运动模糊 - 您只需在场景的相机上设置motionBlurIntensity即可。
在 iOS 10 中,运动模糊仅适用于相机运动 - 移动物体不会模糊。 (当摄像机移动时,您必须为想要不模糊的节点设置
movabilityHint
fast.)在 iOS 11 及更高版本中,移动对象也可能会模糊,因此您只需在相机上设置
motionBlurIntensity
即可“正常工作”。这个答案的其余部分早于 iOS 10,如果你(出于某种原因)支持 iOS 9.x 或更早版本,它仍然是相关的。
要获得非常好的运动模糊效果,您必须编写自己的着色器,甚至可以替换一些 SceneKit CPU-side 管道 - 不适合胆小的人。
为了更容易近似,可能仍然会让您感到沮丧,请查看node.filters 属性和 Core Image 过滤器。通过有选择地将线性或缩放模糊滤镜应用于某些节点,并仔细设置(甚至设置动画)滤镜参数,您可能会获得令人信服的伪动作模糊效果。
您将要研究使用 GLSL 或 Metal Shading Language 编写运动模糊片段着色器。
iOS 10 为 SCNCamera 引入了
camera.motionBlurIntensity
。值介于 0.0 和 1.0 之间,默认值为 0.0.https://developer.apple.com/documentation/scenekit/scncamera/1644099-motionblurintensity