[Swift] 60 visionOSアプリ製作 その8 ModelEntityのカラー変更 RealityKit

[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
                }