从 Blender 到 RealityKit 的对象转换

问题描述 投票:0回答:1

我对 Blender 很陌生(使用 4.2.1),我正在创建一些我想在 RealityKit 场景中使用的模型。在一种情况下,我正在使用 PBR 材质创建一根杆,我想使用 Reality Converter 将其转换为 .usdz 格式。然而,RC 中的预览与 Blender 中模型的视觉效果不匹配。

Blender viewport

Reality Converter preview

如果您注意到,杆的顶面在 RC 中未正确渲染,并且内表面显示在前面,而背面没有被内表面覆盖。

对于此输出,我已在 Blender 中烘焙纹理,并将对象导出为 .obj,然后将纹理文件链接回 RC 中。我还尝试过从 Blender 直接导出为 .usd(相同的结果)和 .gltf 或 .glb(后者无法在 RC 中加载,并出现“未知错误”)。

Blender 中的模型已正确进行 UV 映射,并有接缝来划分内表面、外表面、顶面和底面。

在我去学习 Maya 之前,您对哪个工作流程可以解决这个问题有什么建议吗?

blender realitykit reality-converter
1个回答
0
投票

这个问题称为

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)
    }
}

enter image description here

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.