gpt4 book ai didi

ios - 从 SceneKit 导出 USDZ 会导致模型变暗

转载 作者:行者123 更新时间:2023-12-01 16:05:39 24 4
gpt4 key购买 nike

我正在尝试使用新的 iOS13 功能从 SCNScene 导出 usdz 文件 func write(to url: URL, options: [String : Any]? = nil, delegate: SCNSceneExportDelegate?, progressHandler: SCNSceneExportProgressHandler? = nil) -> bool SCNScene的功能。

如果我使用未修改的烘焙 .scn 文件,效果很好,但当我尝试插入我自己的纹理时遇到各种问题。

let scene = SCNScene(named: "scene.scnassets/original.scn")!
let node = scene.rootNode.childNode(withName: "Plane", recursively: true)
let plane = SCNPlane(width: 1, height: 1)
node?.geometry = plane
node?.geometry?.firstMaterial?.diffuse.contents = UIColor.black
node?.geometry?.firstMaterial?.roughness.contents = NSNumber(value: 0.0) //or UIColor.black doesn't work either

let documentsUrl = self.fileManager.urls(for: .documentDirectory, in: .userDomainMask)
guard !documentsUrl.isEmpty,
let url = documentsUrl.first else {
completion(nil)
return
}
let finalUrl = url.appendingPathComponent("result.usdz")
_ = scene.write(to: finalUrl, delegate: nil)

original.scn 只有一个光滑的平面,当我更改 Material 时,我尝试再次将粗糙度设置为 0。尽管如此,生成的 usdz 始终将粗糙度设置为 0.9。有没有其他人遇到过这种情况并找到解决方法?

最佳答案

默认光照模型是 SCNLightingModelBlinn,这意味着用于 plane 几何体的 Material 不是基于物理的。 USDZ 仅支持基于物理的 Material ,在导出时,SceneKit 将尝试从 Blinn Material 构建 PBR Material ,并将代表您推断出粗糙度

修复方法是将 lightingModelName 设置为 SCNLightingModelPhysicallyBased

关于ios - 从 SceneKit 导出 USDZ 会导致模型变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61452732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com