Je veux créer un effet de floraison dans Arkit par les paramètres de la caméra:
self.sceneView.pointOfView.camera.bloomIntensity = 2.0; self.sceneView.pointOfView.camera.bloomBlurRadius = 30; self.sceneView.pointOfView.camera.bloomThreshold = 0.6;
Cela fonctionne très bien sous iOS 13.0, quelque chose comme ceci:
Mais lorsque le même code s'exécute sur le système iOS 13 ou plus récent, cela fonctionne comme ceci:
Les paramètres de floraison de la caméra ne fonctionnent pas.
3 Réponses :
Selon la documentation officielle, pour utiliser l'effet de floraison dans iOS 13, vous devez d'abord activer la propriété d'instance wantHDR pour la caméra (pour appliquer des effets de post-traitement à une scène).
Donc, votre code pourrait ressembler à ceci:
@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 }
merci monsieur, mais je suis déjà réglé "wantHDR = true" et aucun effet ....
J'ai pu ajouter une fleur à un nœud avec cette approche.
myNode.filters = addBloom()
Ensuite, vous pouvez l'ajouter à votre nœud comme ceci:
func addBloom() -> [CIFilter]? { let bloomFilter = CIFilter(name:"CIBloom")! bloomFilter.setValue(10.0, forKey: "inputIntensity") bloomFilter.setValue(30.0, forKey: "inputRadius") return [bloomFilter] }
Réponse assez tardive, mais je pense que vous devez désactiver rendersCameraGrain sur la SceneView, car l'activation de cette option perturbe malheureusement les techniques SCNTechniques appliquées (qui sont utilisées sous le capot pour appliquer des effets comme Bloom, Saturation, etc.)