![](/img/trans.png)
[英]How to rotate a 3D model in a USDZ file programmatically in Swift?
[英]Import and display .usdz file in swift
我嘗試將 some.usdz 文件導入應用程序並使用 SceneView 顯示 3D model。 當我顯示一些已經在我的 Xcode 文件夾中的 model 時,它可以工作。 但是當在我的手機上運行應用程序並嘗試從我的手機導入文件時,print(fileName) 仍然可以獲得正確的文件名,但 SceneView 中沒有顯示任何內容......任何人都可以幫忙嗎?
@State var fileName = ""
@State var openFile = false
@State var model = Model(id: 0, modelName: "")
var body: some View {
VStack{
VStack {
Text(fileName)
.fontWeight(.bold)
Button {
openFile.toggle()
} label: {
Text("Come On")
}
}
.fileImporter(isPresented: $openFile, allowedContentTypes: [.usdz]) { result in
switch result {
case .success(let url):
_ = url.startAccessingSecurityScopedResource()
print(url)
self.fileName = url.lastPathComponent
print(fileName)
model.modelName = fileName
case.failure(let error):
print(error)
}
}
SceneView(scene: SCNScene(named: model.modelName) , options: [.autoenablesDefaultLighting,.allowsCameraControl])
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height / 2)
更改SCNScene(named: model.modelName)
let scene = try? SCNScene(url: url!)
let scene = try? SCNScene(url: url!)
例子
struct Viewer3D: View {
@State var urlLocalModel: URL?
@State var openFile = false
var body: some View {
VStack{
VStack {
Button {
openFile.toggle()
} label: {
Text("Open File Local USDZ")
}
}
.fileImporter(isPresented: $openFile, allowedContentTypes: [.usdz]) { result in
switch result {
case .success(let url):
_ = url.startAccessingSecurityScopedResource()
self.urlLocalModel = url
print(url)
case.failure(let error):
print(error)
}
}
if (urlLocalModel != nil) {
let scene = try? SCNScene(url: urlLocalModel!)
SceneView(scene: scene, options: [.autoenablesDefaultLighting,.allowsCameraControl])
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.width)
}
}
}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.