Post

Replies

Boosts

Views

Activity

Detecting images with unspecified size
I used automaticImageScaleEstimationEnabled, but ModelEntity is not displayed correctly. The tested device is iPhone7 plus.       @IBOutlet var arView: ARView!   fileprivate var configuration: ARWorldTrackingConfiguration!   fileprivate var rootAnchor: AnchorEntity!       // MARK: === viewWillAppear   override func viewWillAppear(_ animated: Bool)   {     super.viewWillAppear(animated)           configuration = ARWorldTrackingConfiguration()     configuration.automaticImageScaleEstimationEnabled = true     configuration.detectionImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil)     arView.session.run(configuration)   }   // MARK: === viewDidLoad   override func viewDidLoad() {     super.viewDidLoad()           arView.session.delegate = self   } } // MARK: === ARSessionDelegate extension ViewController: ARSessionDelegate {   func session(_ session: ARSession, didAdd anchors: [ARAnchor])   {     anchors.compactMap { $0 as? ARImageAnchor }.forEach {               rootAnchor = AnchorEntity()       rootAnchor.transform.matrix = $0.transform       arView.scene.addAnchor(rootAnchor)               add()     }   }   func session(_ session: ARSession, didUpdate anchors: [ARAnchor])   {     anchors.compactMap { $0 as? ARImageAnchor }.forEach {               rootAnchor.transform.matrix = $0.transform     }   }   // MARK: === add   fileprivate func add()   {     let audioPlane = MeshResource.generatePlane(width: 0.2, height: 0.2, cornerRadius: 0)     var audioMtl = SimpleMaterial()     do {       audioMtl.baseColor = try MaterialColorParameter.texture(TextureResource.load(named: "audio_play.png"))     } catch {     }     let audioEy = ModelEntity(mesh: audioPlane, materials: [audioMtl])     audioEy.position = [0, 0.1, 0]     rootAnchor.addChild(audioEy)   } }
1
0
630
Oct ’20
The camera stuck for a moment
The first time you install the APP, the camera will get stuck a moment during loading ModelEntity. Thank you in advance for your help!       @IBOutlet var arView: ARView!   fileprivate var configuration: ARWorldTrackingConfiguration!   fileprivate var rootAnchor: AnchorEntity!           // MARK: === viewWillAppear   override func viewWillAppear(_ animated: Bool)   {     super.viewWillAppear(animated)           configuration = ARWorldTrackingConfiguration()     configuration.planeDetection = [.horizontal]     arView.session.run(configuration)   }   // MARK: === viewDidLoad   override func viewDidLoad() {     super.viewDidLoad()           arView.session.delegate = self   } } // MARK: === ARSessionDelegate extension ViewController: ARSessionDelegate {   func session(_ session: ARSession, didAdd anchors: [ARAnchor])   {     anchors.compactMap { $0 as? ARPlaneAnchor }.forEach {       rootAnchor = AnchorEntity()       rootAnchor.transform.matrix = $0.transform       arView.scene.addAnchor(rootAnchor)       add()     }   }   // MARK: === add   fileprivate func add()   {     guard let path = Bundle.main.path(forResource: "cupandsaucer", ofType: "usdz") else { return }     var cancellable: AnyCancellable? = nil     cancellable = ModelEntity.loadModelAsync(contentsOf: URL(fileURLWithPath: path)).sink(receiveCompletion: { error in               cancellable?.cancel()     }, receiveValue: { [self] modelEy in               rootAnchor.addChild(modelEy)       cancellable?.cancel()     })   } }
1
0
713
Oct ’20
Different display effects in AR
Xcode:12.5 iOS:14.5 I updated the latest version. In the previous version. I blocked the anchor image with my hand, audioEntity has been kept in the AR scene. But now, I blocked the anchor image with my hand, audioEntity will disappear. Why? How do I achieve the previous effect? func session(_ session: ARSession, didAdd anchors: [ARAnchor])   {     anchors.compactMap { $0 as? ARImageAnchor }.forEach {               rootAnchor = AnchorEntity(anchor: $0)       arView.scene.addAnchor(rootAnchor)               add()     }   }   fileprivate func add()   {     let audioPlane = MeshResource.generatePlane(width: 0.2, height: 0.2, cornerRadius: 0)     var audioMtl = SimpleMaterial()     do {       audioMtl.baseColor = try MaterialColorParameter.texture(TextureResource.load(named: "audio_play.png"))     } catch {     }     let audioEntity = ModelEntity(mesh: audioPlane, materials: [audioMtl])     audioEntity.position = [0, 0.1, 0]     rootAnchor.addChild(audioEntity)   }
2
0
1.2k
Apr ’21
USDZ Animations with RealityKit 2
init(_ path: String)   {     super.init()           self.name = "modelEy"           var cancellable: AnyCancellable? = nil     cancellable = Entity.loadAsync(contentsOf: URL(fileURLWithPath: path))       .sink(receiveCompletion: { error in                   DispatchQueue.main.async {           cancellable?.cancel()           cancellable = nil         }       }, receiveValue: { [weak self] ey in         guard let `self` = self else { return }                   ey.name = "animationEy"         self.addChild(ey)                   let entityBounds = ey.visualBounds(relativeTo: ey.parent)         let extents: SIMD3<Float> = [entityBounds.extents.x, entityBounds.extents.y, entityBounds.extents.z]         self.collision = CollisionComponent(shapes: [ShapeResource.generateBox(size: extents).offsetBy(translation: entityBounds.center)])                   DispatchQueue.main.async {           cancellable?.cancel()           cancellable = nil         }       })   } ey.availableAnimations.forEach {     if #available(iOS 15.0, *)     {       ey.playAnimation($0.repeat())     }   } The animation does not play. Skeletal animation!
2
0
894
Sep ’21
Animation cannot be played in AR scene
Xcode:13.1 iOS:15.1 USDZ:https://sketchfab.com/3d-models/spartan-armour-mkv-halo-reach-57070b2fd9ff472c8988e76d8c5cbe66 The animation can be played in iOS14, but after I update to iOS15, the animation cannot be played. Thanks import UIKit import ARKit import RealityKit import Combine class ViewController: UIViewController {       @IBOutlet var arView: ARView!       var rootAnchor: AnchorEntity!           override func viewDidLoad() {     super.viewDidLoad()           rootAnchor = AnchorEntity(plane: .horizontal)     arView.scene.addAnchor(rootAnchor)           var cancellable: AnyCancellable? = nil     cancellable = Entity.loadAsync(contentsOf: Bundle.main.url(forResource: "Spartan_Armour_MKV_-_Halo_Reach", withExtension: "usdz")!)       .sink(receiveCompletion: { error in         DispatchQueue.main.async {          cancellable?.cancel()          cancellable = nil         }       }, receiveValue: { [weak self] ey in         guard let self = self else { return }         self.rootAnchor.addChild(ey)         ey.availableAnimations.forEach {           ey.playAnimation($0.repeat())         }         DispatchQueue.main.async {           cancellable?.cancel()           cancellable = nil         }     })   } }
2
0
1.5k
Nov ’21
How to delete Entity memory in RealityKit
Although the model disappeared, the memory did not decrease. How to delete memory occupied by the model? // MARK: === viewDidLoad   override func viewDidLoad() {     super.viewDidLoad()           arView.renderOptions = [.disableMotionBlur, .disableDepthOfField, .disableCameraGrain, .disableHDR]     arView.environment.sceneUnderstanding.options.insert(.occlusion)           rootAnchor = AnchorEntity(plane: .horizontal)     arView.scene.addAnchor(rootAnchor)           var cancellable: AnyCancellable? = nil     cancellable = Entity.loadAsync(contentsOf: Bundle.main.url(forResource: "vyygabbj_afr", withExtension: "usdz")!)       .sink(receiveCompletion: { error in         DispatchQueue.main.async {          cancellable?.cancel()          cancellable = nil         }       }, receiveValue: { [weak self] ey in         guard let self = self else { return }         self.modelEy = ModelEntity()         self.modelEy.addChild(ey)                   self.rootAnchor.addChild(self.modelEy)         ey.availableAnimations.forEach {           ey.playAnimation($0.repeat())         }                   DispatchQueue.main.async {           cancellable?.cancel()           cancellable = nil         }     })   }   override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)   {     modelEy.removeFromParent()   }
2
1
1.7k
May ’22
The camera is stuck for a moment when loading the model
I use Entity.loadAsync to load the USDZ. The camera is stuck for a moment when loading the model. var cancellable: AnyCancellable? = nil     cancellable = Entity.loadAsync(contentsOf: Bundle.main.url(forResource: "vyygabbj_afr", withExtension: "usdz")!)       .sink(receiveCompletion: { error in         DispatchQueue.main.async {          cancellable?.cancel()          cancellable = nil         }       }, receiveValue: { [weak self] ey in         guard let self = self else { return }         self.modelEy = ModelEntity()         self.modelEy.addChild(ey)         self.rootAnchor.addChild(self.modelEy)         ey.availableAnimations.forEach {           ey.playAnimation($0.repeat())         }         DispatchQueue.main.async {           cancellable?.cancel()           cancellable = nil         }     })
0
0
618
May ’22
ARImageTrackingConfiguration Entity shaking
I use ARImageTrackingConfiguration to load the entity. In the scene the entity keeps shaking. Tracking images have been correcting the rootAnchor transform,which should be the cause of this problem. Is there any optimization plan? override func viewDidLoad() {     super.viewDidLoad()           arView.session.delegate = self           guard let anchorCGImage = UIImage(named: "anchor.png")?.cgImage else { return }     let arReferenceImage = ARReferenceImage(anchorCGImage, orientation: .up, physicalWidth: CGFloat(0.1))     let arImages: Set<ARReferenceImage> = [arReferenceImage]     imageConfiguration.trackingImages = arImages     imageConfiguration.maximumNumberOfTrackedImages = 1     arView.session.run(imageConfiguration)   } func session(_ session: ARSession, didAdd anchors: [ARAnchor])   {     anchors.compactMap { $0 as? ARImageAnchor }.forEach {       do {         let ey = try Entity.load(named: "c5nj3ibu_l1a", in: .main)         ey.scale = [0.4, 0.4, 0.4]         rootAnchor = AnchorEntity(anchor: $0)         rootAnchor.addChild(ey)         arView.scene.addAnchor(rootAnchor)       } catch {       }     }   }
0
0
487
Mar ’23
When using ARImageTrackingConfiguration, the entity in the scene keeps shaking
When isAutoFocusEnabled is set to true, the entity in the scene keeps shaking. No focus when isAutoFocusEnabled is set to false. How to set up to solve this problem. override func viewDidLoad() { super.viewDidLoad() arView.session.delegate = self guard let arCGImage = UIImage(named: "111", in: .main, with: .none)?.cgImage else { return } let arReferenceImage = ARReferenceImage(arCGImage, orientation: .up, physicalWidth: CGFloat(0.1)) let arImages: Set<ARReferenceImage> = [arReferenceImage] let configuration = ARImageTrackingConfiguration() configuration.trackingImages = arImages configuration.maximumNumberOfTrackedImages = 1 configuration.isAutoFocusEnabled = false arView.session.run(configuration) } func session(_ session: ARSession, didAdd anchors: [ARAnchor]) { anchors.compactMap { $0 as? ARImageAnchor }.forEach { let anchor = AnchorEntity(anchor: $0) let mesh = MeshResource.generateBox(size: 0.1, cornerRadius: 0.005) let material = SimpleMaterial(color: .gray, roughness: 0.15, isMetallic: true) let model = ModelEntity(mesh: mesh, materials: [material]) model.transform.translation.y = 0.05 anchor.children.append(model) arView.scene.addAnchor(anchor) } }
0
0
428
Apr ’24