我已经为visionOS创建了一个应用程序,并在Reality Composer Pro中打开了Packages/RealityKitContent/package
个文件.
我点击右上角的+
按钮,将Material Library/Generic/Metal/ScratchedMetallicPaint
种material 添加到默认球体中.
我可以看到右下角的金属纹理.
然后,每当用户在选取器Picker
中 Select 新的material 时,我在我的代码中使用如下material .挑库后的物料newValue
的值为ScratchedMetallicPaint
var dynamicMateriala = try await ShaderGraphMaterial(named: "/Root/\(newValue)",
from: "Scene.usda",
in: realityKitContentBundle)
// setting UV scale parameter did not help
try! dynamicMateriala.setParameter(name: "UV_Scale", value: .simd2Float(SIMD2<Float>(repeating: 20)))
viewModel.dynamicMaterial = dynamicMateriala
在RealityView更新关闭中:
let font = UIFont(name: "Arial", size: 0.07)
let resource: MeshResource = .generateText(message, extrusionDepth: 0.01, font: font)
if viewModel.dynamicMaterial != nil {
let fontEntity = ModelEntity(mesh: resource, materials: [viewModel.dynamicMaterial!])
}
Problem:个 ViewModel是ObservableObject并正确传递material .问题是,从Reality Compose Pro传递的material 只有color个基础,纹理是not个.
我找到了类似问题的答案:similar,但不确定如何解决.
基于这个答案,我try 了以下方法,即我们需要首先将material 分配给RealityComposerPro中的实体,但甚至第一次打印都没有记录下来.
if let scene = try? await Entity(named: "Root", in: realityKitContentBundle){
print("In Root")
if let box = scene.findEntity(named: "Cube") as? ModelEntity {
print("In Cube")
let materials = box.model?.materials
print("In Materials \(materials)")
}
}
Does anybody know what might be the problem?
Thanks!