尝试创建一个利用.scnassets
文件夹的cocoapod。文件夹被导入到Resources
中,而子对象没有任何问题,但是我找不到将 .dae 文件加载到SCNScene
中的方法。据我了解,XCode如何将 .dae 转换为 .scn 资产。
.podspec 包括:
s.resource_bundles = {
'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
}
可将 ARScenes.scnassets 正确加载到Resources
文件夹中。我正在尝试将场景加载到Pod内部(在Pod内部,而不是使用Pod的项目中,并且尝试了多种方法):
let arrowScene = SCNScene(named: "arrow.dae")
let arrowScene = SCNScene(named: "Resources/ARScenes.scnassets/arrow.dae")
let arrowScene = SCNScene(named: "arrow.dae", inDirectory: "Resources/ARScenes.scnassets", options: nil)
我尝试了各种文件/文件夹名称,并且能够加载图像,但是无法将 .dae 加载为SCNScene
。我需要将 .xib 文件添加到我的 resource_bundles 中,还是有其他方法来确保 .scnassets 文件夹正确编译这些 .dae 到 .scn ,以及是否可以将其加载到SCNScene
中?
答案 0 :(得分:1)
假设ZARKit
是您的框架,分布在CocoaPods中。
.podspec
包括:
s.resource_bundles = {
'ARUtilsScenes' => ['ARUtils/Assets/ARScenes.scnassets']
}
那么您应该这样做
let bundle = Bundle(for: #Your Class#.self).
let resourcePath = bundle.path(forResource: <#T##String?#>, ofType: <#T##String?#>)
let resourceBundle = Bundle(path: resourcePath)
let url = resourceBundle.url(forResource: "ARScenes.scnassets/<#YourResourceName-arrow#>", withExtension: "<#scn#>")
let arrowScene = SCNScene(url: url)
编辑:Z。Bagley
// find bundle based on existing class in pod
let frameworkBundle = Bundle(for: ARUtilsClass.self) //ARUtilsClass is an empty class, Pod is only extensions for existing classes
// append the scenes bundle, scnassets, and scn/dae
let arrowURL = frameworkBundle.resourceURL?.appendingPathComponent("ARUtilsScenes.bundle/ARScenes.scnassets/newArrow.scn")
// create a node in parent
var arrow = SCNNode()
do {
// get arrow scene from bundle
let bundleArrowScene = try SCNScene(url: (arrowURL)!, options: nil)
// add arrow node from scene
arrow = bundleArrowScene.rootNode.childNode(withName: "arrow", recursively: true)!
} catch {
print("failed to find arrow resource")
}
答案 1 :(得分:0)
从.scnassets文件夹访问.dae资产时,无需在路径中包含“ Resources /”
例如:let arrowScene = SCNScene(named: "ARScenes.scnassets/arrow.dae")
假设您的.scnassets文件夹称为该文件夹。
答案 2 :(得分:0)
Apple在更新的构建系统中引入了一个已知的错误,该错误会导致资产目录的异步编译,使资产目录在最终构建中不可访问。有关参考,请参见Cocoapods GitHub上的this thread。列出了几种解决方法,但是没有一种方法可以保证结果,所以现在我们似乎不得不接受它。