[Mac M2 Pro 12CPU, Ventura 13.6, visionOS 1.0 (21N5300a), Xcode 15.1 beta 3]
usdzファイルを読み込んだModelEntityは後からコードでカラー変更できるようです。あくまでアプリ上で一時的に変わるだけで、元モデルの色は変わりません。
マテリアルのインデックス番号を指定して、3Dモデルの各面や面取り領域のカラーを変えることも可能でしょう。
Reality Composer Proの機能をコード化しているといったところでしょうか。
var body: some View {
ZStack {
RealityView { content in
if let entity = try? await ModelEntity(named: "hexa") {
// エンティティのモデルを取得
if var modelComponent = entity.model {
for i in 0..<modelComponent.materials.count {
if var material = modelComponent.materials[i] as? PhysicallyBasedMaterial {
// 全てのマテリアルをグリーンにする
material.baseColor = PhysicallyBasedMaterial.BaseColor(tint: .green)
// マテリアルを更新
modelComponent.materials[i] = material
}
}
// エンティティのモデルコンポーネントを更新
entity.model = modelComponent
}