Swift iOS:USDZ文件中的lightning问题
我正在尝试使用Swift iOS:USDZ文件中的lightning问题,swift,augmented-reality,arkit,qlpreviewcontroller,arquicklook,Swift,Augmented Reality,Arkit,Qlpreviewcontroller,Arquicklook,我正在尝试使用qlviewcontroller显示AR内容。除了灯光外,一切都很好。如果我使用Xcode或macOS的quick look预览文件,灯光是自然的,但是当我使用QLPreviewController预览文件时,对象太暗了!。 是否有任何可能的方法来调整照明、比例和其他设置?请确保在创建模型时3D网格具有UV布局。如果没有UV,3D对象在iOS设备和QLPreviewController中会显示为黑色,但在MacOS上使用3D或ARQuickLook时可能会显示为良好 有关更多信息,
qlviewcontroller
显示AR内容。除了灯光外,一切都很好。如果我使用Xcode或macOS的quick look预览文件,灯光是自然的,但是当我使用QLPreviewController
预览文件时,对象太暗了!。
是否有任何可能的方法来调整照明、比例和其他设置?请确保在创建模型时3D网格具有UV布局。如果没有UV,3D对象在iOS设备和QLPreviewController中会显示为黑色,但在MacOS上使用3D或ARQuickLook时可能会显示为良好 有关更多信息,请参阅以下链接: 例如:如果您使用Blender创建模型,这可能会有帮助: 如果在XCode中打开usdz对象,请检查材质检查器,您将发现照明颜色设置为黑色。这就是为什么它在AR世界中看起来很暗,但在ARQuickLook中看起来很好 设置UV贴图将解决您的问题 我尝试过的其他黑客方法有(不推荐使用): 1) 创建USDZ模型时更改emissiveColor。 使用基于Python的工具(USDPython)生成usdz文件 2) 将照明颜色设置为白色 首先将.usdz转换为.scn->更改照明->将.scn转换为.usdz
let scnScene = SCNScene(named: "sceneName", inDirectory: "art.scnassets", options: nil)
scnScene!.write(to: fileUrl.appendingPathComponent("Model.usdz"), delegate: nil)
您可以从本次WWDC讲座中获得帮助(从Scenekit导出USDZ):
在Xcode 12中没有此类问题
AR QuickLook
框架基于RealityKit渲染引擎AR QuickLook
具有仅控制模型负载的最小参数。AR场景中没有用于控制照明的参数。AR QuickLook从RealityKit继承了自动光照估计。在Xcode 12.1中,我没有看到呈现未亮(黑色)模型的bug。您可以使用以下代码快速测试它:
import QuickLook
class ViewController: UIViewController,
QLPreviewControllerDelegate,
QLPreviewControllerDataSource {
override func viewDidAppear(_ animated: Bool) {
let previewController = QLPreviewController()
previewController.dataSource = self
previewController.delegate = self
present(previewController, animated: true, completion: nil)
}
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController,
previewItemAt index: Int) -> QLPreviewItem {
guard let path = Bundle.main.path(forResource: "path/to/gramophone",
ofType: "usdz")
else {
fatalError("Couldn't find a file.")
}
let url = URL(fileURLWithPath: path)
return url as QLPreviewItem
}
}
p.S.
如果您仍在使用未点亮的PBR型号时遇到问题–这不是
AR QuickLook
的问题,而是您的USDZ型号的问题。我可以知道您是如何创建该型号的吗?请共享代码以获得更多信息吗?
import QuickLook
class ViewController: UIViewController,
QLPreviewControllerDelegate,
QLPreviewControllerDataSource {
override func viewDidAppear(_ animated: Bool) {
let previewController = QLPreviewController()
previewController.dataSource = self
previewController.delegate = self
present(previewController, animated: true, completion: nil)
}
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController,
previewItemAt index: Int) -> QLPreviewItem {
guard let path = Bundle.main.path(forResource: "path/to/gramophone",
ofType: "usdz")
else {
fatalError("Couldn't find a file.")
}
let url = URL(fileURLWithPath: path)
return url as QLPreviewItem
}
}