gpt4 book ai didi

ios - 函数仅在场景 View 上放置 1 个 ARKit 对象节点(Swift 4)

转载 作者:行者123 更新时间:2023-11-29 06:02:28 25 4
gpt4 key购买 nike

下面的代码应该将用户创建的 arkit 对象放置在场景 View 中,但它不起作用。它放置了 1 个对象,并且无法放置更多其他对象。我注释掉的代码完美地放置了 scn 形状球,并且在调用函数时根据用户请求放置了尽可能多的球。但是它只放置 1 个用户创建的对象,而我想放置几个对象。

    func createBall(hitPosition : SCNVector3) {
// let newBall = SCNSphere(radius: 0.01)
// let newBallNode = SCNNode(geometry: newBall)
// newBallNode.position = hitPosition
// self.sceneView.scene.rootNode.addChildNode(newBallNode)

let scene = SCNScene(named: "art.scnassets/dontCare.scn")!

// Set the scene to the view
sceneView.scene = scene

}

最佳答案

当您使用 ARkit 时,您仅处理单个场景,因此如果您要放置的对象是从 .scn 文件加载的,则需要加载该场景,拉出您想要放置到位的节点(可能是您刚刚加载的场景的根节点),并将其放置在 .position 中,就像您在注释掉代码。

您可能会发现提前加载场景并获取该 rootNode 很有用,这样您就可以将其多次放入 HitTest 的位置到你的领域。

更新:我身上只有 iPad,没有笔记本电脑,也没有可以轻松共享的包含 .scn 文件的即时 Playground 。假设您从一个 .SCN 文件开始,该文件包含您想要放置为根节点的对象,类似于:

guard let loadedScene = SCNScene(named: "something.scn")
else { fatalError("Unable to load scene file.") }
let node = loadedScene.rootnode // type of this attribute is an SCNNode

然后从这里开始,就像您通过将节点添加到现有场景中来放置球一样,您可以获取我们刚刚从 loadedScene 中提取的节点物体并将其扔到你有球的地方。

关于ios - 函数仅在场景 View 上放置 1 个 ARKit 对象节点(Swift 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54489937/

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