0

I'm trying to Load a model from a usdz file, change the material colour of it and then display the updated model with AR QuickLook. I have got my code to the point that it loads the original model in the quick look preview. How do i use the updated ModelEntity?


        guard let path = Bundle.main.path(forResource: "atm", ofType: "usdz") else {
            fatalError("Couldn't find the supported asset file.")
        }
        
        let url = URL(fileURLWithPath: path)

        guard let modelEntity = try? Entity.loadModel(contentsOf: url) else  {
            fatalError("Entity not found")
        }
        
        var newMaterial = SimpleMaterial()
        newMaterial.color.tint = UIColor.cyan
                
        for i in 0...(modelEntity.model?.materials.count ?? 1) - 1  {
            modelEntity.model?.materials[i] = newMaterial
        }
        
        //let temporaryDirectory = FileManager.default.temporaryDirectory
        //let temporaryFileURL = temporaryDirectory.appendingPathComponent("model.usdz")

        let previewItem = ARQuickLookPreviewItem(fileAt: url) // how do i use modelEntity here? 
        previewItem.allowsContentScaling = allowsContentScaling
        previewItem.canonicalWebPageURL = nil
        return previewItem
    }

I just need to change the colour of the model at runtime and show it. TIA

Ryan Aluvihare
  • 225
  • 1
  • 2
  • 9

0 Answers0