我使用USDZ文件创建了一个带有SceneKit的视图,如何在SwiftUI代码中将特定材料的颜色从灰色直接更改为其他颜色?

var scene = SCNScene(named: "2020_BMW_M5.usdz")
var body: some View {
VStack {
SceneView(scene: scene,
options: [.autoenablesDefaultLighting, .allowsCameraControl])
}
}发布于 2022-06-06 13:48:31
使用下标方法(.childNodes[n].childNodes[n].childNodes[n])在所需的层次结构中建模,然后按照通常的方式更改其颜色:
import SwiftUI
import SceneKit
struct ContentView : View {
var body: some View {
return SceneKitViewContainer().ignoresSafeArea()
}
}
struct SceneKitViewContainer: UIViewRepresentable {
func makeUIView(context: Context) -> SCNView {
let scnView = SCNView(frame: .zero)
scnView.allowsCameraControl = true
scnView.autoenablesDefaultLighting = true
scnView.scene = SCNScene(named: "Model.usdz")
let model = scnView.scene?.rootNode.childNode(withName: "SomeModel",
recursively: true)
model?.childNodes[1].geometry?.firstMaterial?.diffuse.contents =
UIColor.red
print(model?.childNodes[1])
return scnView
}
func updateUIView(_ uiView: SCNView, context: Context) { }
}https://stackoverflow.com/questions/72506419
复制相似问题