SceneKit如何实现运动模糊效果?
How to achieve motion blur effect in SceneKit?
如何在SceneKit中实现"motion effect"?运动效果是指(用相机)拍摄快速移动的物体时产生的模糊。我是运行节点上的一个动作,想在节点移动的时候稍微模糊一下移动的方向,强调节点移动的很快。这可以在 SceneKit 中完成吗?
此图片具有运动效果 - 对整个场景应用了模糊处理。您可以通过模糊线的方向判断相机正在向内移动。我只想将运动模糊应用于单个对象,而不是场景。
您需要考虑使用 GLSL 或金属着色语言编写运动模糊片段着色器。
在 SceneKit 的最新版本中,内置了运动模糊——您只需在场景的相机上设置 motionBlurIntensity
。
在iOS10中,运动模糊仅针对相机运动——运动物体不会模糊。 (您必须为您希望 不 在相机快速移动时模糊的节点设置 movabilityHint
。)
在 iOS 11 及更高版本中,移动物体也可以模糊,因此您只需在相机上设置 motionBlurIntensity
一切“正常工作”。
此答案的其余部分早于 iOS 10,如果您(出于某种原因)支持 iOS 9.x 或更早的版本,则它仍然相关。
要获得非常好的运动模糊效果,您必须编写自己的着色器,甚至可能替换一些 SceneKit CPU 端管道——胆小者不宜。
要获得更简单的近似值,但可能仍会让您物有所值,请查看 the node.filters
property 和 Core Image 过滤器。通过有选择地对某些节点应用线性或缩放模糊滤镜,并仔细设置(甚至设置动画)滤镜参数,您可能会得到令人信服的假运动模糊。
iOS 10 为 SCNCamera 引入 camera.motionBlurIntensity
。值介于 0.0 和 1.0 之间,默认值为 0.0。
https://developer.apple.com/documentation/scenekit/scncamera/1644099-motionblurintensity
如何在SceneKit中实现"motion effect"?运动效果是指(用相机)拍摄快速移动的物体时产生的模糊。我是运行节点上的一个动作,想在节点移动的时候稍微模糊一下移动的方向,强调节点移动的很快。这可以在 SceneKit 中完成吗?
此图片具有运动效果 - 对整个场景应用了模糊处理。您可以通过模糊线的方向判断相机正在向内移动。我只想将运动模糊应用于单个对象,而不是场景。
您需要考虑使用 GLSL 或金属着色语言编写运动模糊片段着色器。
在 SceneKit 的最新版本中,内置了运动模糊——您只需在场景的相机上设置 motionBlurIntensity
。
在iOS10中,运动模糊仅针对相机运动——运动物体不会模糊。 (您必须为您希望 不 在相机快速移动时模糊的节点设置 movabilityHint
。)
在 iOS 11 及更高版本中,移动物体也可以模糊,因此您只需在相机上设置 motionBlurIntensity
一切“正常工作”。
此答案的其余部分早于 iOS 10,如果您(出于某种原因)支持 iOS 9.x 或更早的版本,则它仍然相关。
要获得非常好的运动模糊效果,您必须编写自己的着色器,甚至可能替换一些 SceneKit CPU 端管道——胆小者不宜。
要获得更简单的近似值,但可能仍会让您物有所值,请查看 the node.filters
property 和 Core Image 过滤器。通过有选择地对某些节点应用线性或缩放模糊滤镜,并仔细设置(甚至设置动画)滤镜参数,您可能会得到令人信服的假运动模糊。
iOS 10 为 SCNCamera 引入 camera.motionBlurIntensity
。值介于 0.0 和 1.0 之间,默认值为 0.0。
https://developer.apple.com/documentation/scenekit/scncamera/1644099-motionblurintensity