gpt4 book ai didi

ios - 如何下载 ARImage (.SCN) 文件以在 ARSCNView 中显示图像?

转载 作者:行者123 更新时间:2023-11-28 07:39:19 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中下载 ARImage(.scn 文件)。并显示在ARSCNView

下面我的代码工作正常,它能够显示图像。下面还有一张图片

func addARObject(x: Float = 0, y: Float = 0, z: Float = -0.5) {

let aRUrl : URL = URL(string :arImageUrl2)!
do {
let arScene = try SCNScene(url: aRUrl , options: nil)
let arNode = arScene.rootNode.childNode(withName: "chair", recursively: false)
print("x,y,z",x,y,z)
arNode?.position = SCNVector3(x,y,z)

zAxis = z
if isNodeAvailable {
currentNode.position = SCNVector3(x,y,z)
}else{
isNodeAvailable = true
currentNode = arNode
sceneView.scene.rootNode.addChildNode(arNode!)
}
}
catch {
print("errrrrororororor")
}

}

输出是👇🏻 enter image description here

但是chair的颜色是Red,显示面是白色。但实际上,没有表面。

如果我在我的项目文件夹中使用相同的图像而无需下载,则椅子颜色为红色。那么任何人都可以向我解释我的代码或图像问题有什么问题吗?

下图是我在项目中使用本地文件时的情况。

enter image description here

最佳答案

您创建一个父节点,然后您可以将所有节点添加为子节点。

var nodes: [SCNNode] = getMyNodes()

var parentNode = SCNNode()
parentNode.name = "chair"

for node in nodes {
parentNode.addChildNodes(node)
}

您可以使用以下方式访问特定的 child :

 parentNode.childNode(withName: nameOfChildNode, recursively: true)

如果您从场景文件导入:

 let scene = SCNScene(named: "myScene.scn")

func getMyNodes() -> [SCNNode] {
var nodes: [SCNNode] = [SCNNode]()
for node in scene.rootNode.childNodes {
nodes.append(node)
}
return nodes
}

从父节点获取到子节点后,就可以给子节点添加纹理了。

  let childOne = parentNode.childNode(withName: nameOfChildNode, recursively: true)

childOne.?.firstMaterial?.diffuse.contents = UIColor.red

关于ios - 如何下载 ARImage (.SCN) 文件以在 ARSCNView 中显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52703210/

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