I am creating a cylinder object using Reality Composer. My requirement is to wrap the cylinder with custom image. Image is dynamically created by the app.
I have tried following approach and so far it's not working.
- After loading the anchor from Experience.
- Fetch model entity from anchor.
- Fetch model component from model entity.
- Add or edit material.
Code:
// Load the "anchor" scene from the "Experience" Reality File
let anchor = try! Experience.loadAnchor()
// Add the anchor to the scene
arView.scene.anchors.append(anchor)
let cylinderEntity : Entity = anchor.cylinder!
let cylinderModelEntity = cylinderEntity.children[0]
var cylinderModelComponent : ModelComponent = cylinderModelEntity.components[ModelComponent.self]!
let paths : NSArray = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as NSArray
let path : NSString = paths.object(at: 0) as! NSString
let filePath : NSString = path.strings(byAppendingPaths: ["Image.png"])[0] as NSString
let url = URL.init(fileURLWithPath: filePath as String)
// Save image.
let image : UIImage = createImage()
try! image.pngData()?.write(to: url)
let data = NSData.init(contentsOf: url)
print(data!)
var material = SimpleMaterial()
material.tintColor = UIColor.yellow
material.baseColor = try! MaterialColorParameter.texture(TextureResource.load(contentsOf: url))
material.roughness = MaterialScalarParameter(floatLiteral: 0.1)
material.metallic = MaterialScalarParameter(floatLiteral: 1.0)
cylinderModelComponent.materials[0] = material
Any help is really appreciated.