Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lack of blooming effect in iOS 13.0

I want to make blooming effect in arkit by camera settings:

self.sceneView.pointOfView.camera.bloomIntensity = 2.0;
self.sceneView.pointOfView.camera.bloomBlurRadius = 30;
self.sceneView.pointOfView.camera.bloomThreshold = 0.6;

It works great below iOS 13.0, something like this:

enter image description here

But when the same code run on the system iOS 13 or newer, it works like this:

enter image description here

The blooming settings of camera does not work.

like image 659
J.Blank Avatar asked Oct 19 '25 04:10

J.Blank


2 Answers

I was able to add bloom to a node with this approach.

func addBloom() -> [CIFilter]? {
  let bloomFilter = CIFilter(name:"CIBloom")!
  bloomFilter.setValue(10.0, forKey: "inputIntensity")
  bloomFilter.setValue(30.0, forKey: "inputRadius")
  return [bloomFilter]
}

Then you can add it to your node like this:

myNode.filters = addBloom()
like image 180
modium Avatar answered Oct 21 '25 19:10

modium


According to official documentation, in order to use bloom effect in iOS 13 you need, at first, to enable wantsHDR instance property for camera (to apply post-processing effects to a scene).

So your code might look like this:

@IBOutlet var sceneView: ARSCNView!

override func viewDidLoad() {
    super.viewDidLoad()

    let scene = SCNScene(named: "art.scnassets/myScene.scn")!

    sceneView.pointOfView!.camera!.wantsHDR = true                 // ENABLED
    sceneView.pointOfView!.camera!.bloomIterationSpread = 10
    sceneView.pointOfView!.camera!.bloomIterationCount = 3
    sceneView.pointOfView!.camera!.bloomIntensity = 20
    sceneView.pointOfView!.camera!.bloomBlurRadius = 3
    sceneView.pointOfView!.camera!.bloomThreshold = 0.5

    sceneView.scene = scene
}
like image 34
Andy Jazz Avatar answered Oct 21 '25 17:10

Andy Jazz