基本上,我的要求是导入usdz,例如汽车。然后为每个身体部位应用不同的材料。例如:材料 A 到车身,材料 B 到后视镜,材料 C 到车轮等。
我可以遍历 ModelEntity 的 ModelComponent 中的材料并按如下方式分配材料。
func updateUIView(_ uiView: ARView, context: Context) {
let entity = try! Entity.loadModel(named: "CarScene")
var material = PhysicallyBasedMaterial()
material.baseColor = PhysicallyBasedMaterial.BaseColor(tint:.red)
material.roughness = PhysicallyBasedMaterial.Roughness(floatLiteral: 0.0)
material.metallic = PhysicallyBasedMaterial.Metallic(floatLiteral: 1.0)
for i in 0...(entity.model?.materials.count ?? 1) - 1 {
entity.model?.materials[i] = material
}
let anchor = AnchorEntity(plane: .horizontal)
anchor.addChild(entity)
uiView.scene.addAnchor(carAnchor)
}
但是,我不知道哪种材料是哪种。如果我有多个 usdz 文件,我希望能够准确地为每个身体部位分配材料。那可行吗?在导入到我的 xcode 项目之前,我是否需要打破 usdz 模型并分配标识符?任何帮助将不胜感激。