如果需要将实体加载到场景中,则必须创建锚点。为了获得 ModelEntity,您需要使用下标从场景层次结构中获取它。.children[X]
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
do {
let path = Bundle.main.path(forResource: "Matrix", ofType: "usdz")!
let url = URL(fileURLWithPath: path)
// Scene
let scene = try Entity.load(contentsOf: url)
print(scene)
// Entity
let entity = scene.children[0].........children[0] as! ModelEntity
entity.model?.materials[0] = UnlitMaterial(color: .red)
let anchor = AnchorEntity(plane: .any)
anchor.addChild(scene)
arView.scene.anchors.append(anchor)
} catch {
print(error)
}
}
}
您也可以通过以下方式获取模型:
let modelEntity = try Entity.loadModel(contentsOf: url)
modelEntity.model?.materials[0] = UnlitMaterial(color: .red)
附言
我应该说你有一个明显的命名错误——“矩阵”与“矩阵”。也Matrix.rcproject
和Matrix.usdz
不一样。要加载Matrix.rcproject
(Reality Composer 项目),请使用以下方法:
// .rcproject
let scene = try! Matrix.loadCircle()
let circleEntity = scene.children[0]...........children[0] as! ModelEntity
加载 USDZ 模型使用这个:
// .usdz
let model = try! Entity.loadModel(named: "Matrix", in: nil)
但据我所知,你不需要 RC 项目,所以从 Reality Composer 导出 USDZ。
要加载.reality
文件,请使用以下方法:
// .reality
let carModel = try! Entity.loadAnchor(named: "car")
print(carModel)
arView.scene.addAnchor(carModel)
这是您在 iOS 模拟器上的 USDZ 模型: