swift RealityKit -导入USD网格并获取材质名称

ovfsdjhp  于 2022-12-26  发布在  Swift
关注(0)|答案(1)|浏览(136)

如何获得指定给USD网格的材质名称?

for mat in importedModel.model!.materials {
    print(mat)
    print(mat as? SimpleMaterial)
}

当我试着重铸它的时候,我得到的几乎是零。我想在导入时重新配置我所有的材料。但是我不能在不知道什么材料是什么的情况下做到这一点。

djp7away

djp7away1#

问题似乎出在你的加载方法上。使用Entity.load(named:)代替Entity.loadModel(named:)。要找出每个模型的部件使用的着色器,请使用以下代码:

import UIKit
import RealityKit

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let usdz = try! Entity.load(named: "car.usdz")
        let anchor = AnchorEntity()
        anchor.addChild(usdz)
        arView.scene.anchors.append(anchor)
        
        print(usdz)          // full scene hierarchy

        let firstAnchor = arView.scene.anchors.first
        let entity = firstAnchor?.findEntity(named: "wheel") as? ModelEntity
        guard let materials = entity?.model?.materials else { return }
        
        for material in materials {
            print(material)
        }
    }
}

结果:

相关问题