我对 Blender 很陌生(使用 4.2.1),我正在创建一些我想在 RealityKit 场景中使用的模型。在一种情况下,我正在使用 PBR 材质创建一根杆,我想使用 Reality Converter 将其转换为 .usdz 格式。然而,RC 中的预览与 Blender 中模型的视觉效果不匹配。
如果您注意到,杆的顶面在 RC 中未正确渲染,并且内表面显示在前面,而背面没有被内表面覆盖。
对于此输出,我已在 Blender 中烘焙纹理,并将对象导出为 .obj,然后将纹理文件链接回 RC 中。我还尝试过从 Blender 直接导出为 .usd(相同的结果)和 .gltf 或 .glb(后者无法在 RC 中加载,并出现“未知错误”)。
Blender 中的模型已正确进行 UV 映射,并有接缝来划分内表面、外表面、顶面和底面。
在我去学习 Maya 之前,您对哪个工作流程可以解决这个问题有什么建议吗?
这个问题称为
Reversed Face Normals
。您可以使用 faceCulling 属性将法线翻转回来。
import SwiftUI
import RealityKit
struct ContentView : View {
var body: some View {
RealityView { rvc in
let tube = try! await Entity(named: "tubeB")
rvc.add(tube)
print(tube)
var pbr = PhysicallyBasedMaterial()
pbr.faceCulling = .front
let cyl = tube.findEntity(named: "cylinder") as! ModelEntity
cyl.model?.materials[0] = pbr
}
.ignoresSafeArea()
.backgroundStyle(.black)
}
}