swift - 如何将 3D 模型添加到场景中,使其具有特定的 XYZ 位置?

标签 swift scenekit arkit scnscene

我曾经编写过一个函数,在其中将几何锥体添加到场景中。它看起来像这样:

func addZombies(i:Int, x: Float, y: Float, z: Float)
{
    let node = SCNNode()
    node.geometry = SCNCone(topRadius: 0.0, bottomRadius: 1, height: 2)
    node.position = SCNVector3(x, y, z)
    sceneView.scene.rootNode.addChildNode(node)

    nodes.append(node)
}

其中节点是存储 SCNNode 的数组。一切都很好。如果我移动了,锥体就会保持原来的位置,这是真正的“现实”。

但是,我购买了一个漂亮的 3D 僵尸模型,并尝试将锥体更改为模型。我找到了某种解决方案并尝试自己实现。这就是我想到的:

func addZombies(i:Int, x: Float, y: Float, z: Float)
{
    guard let zombieScene = SCNScene(named: "art.scnassets/StrongZombie.DAE") else { return }
    let zombieNode = SCNNode()
    let zombieSceneChildNodes = zombieScene.rootNode.childNodes

    for childNode in zombieSceneChildNodes
    {
        zombieNode.addChildNode(childNode)
    }

    zombieNode.position = SCNVector3(x, y, z)
    zombieNode.scale = SCNVector3(0.5, 0.5, 0.5)
    //zombieNode.look(at: (sceneView.pointOfView?.position)!)
    sceneView.scene.rootNode.addChildNode(zombieNode)

    nodes.append(zombieNode)
} 

不幸的是,尽管它在特定位置创建了僵尸,但如果我移动,僵尸也会跟着我“移动”。它们是相对于移动摄像机显示的,这对我来说是不合需要的。谁能帮我吗?我想要它们就像锥体一样。提前谢谢

最佳答案

只看到有限的代码片段......

我认为这可能与原始 DAE 文件近似的默认 PhysicShape 有关。形状有时可能过于复杂并导致跟踪问题。

尝试将zombieNode physicalBody设置为标准盒子形状

let box = SCNBox(width:0.01, height: 0.01, length: 0.05, chamferRadius: 0.001)

zombieNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: SCNPhysicsShape(geometry:box))

如果您还没有这样做,还可以设置 debugOptions 以显示物理形状。这也将有助于调试发生冲突的情况。

sceneView.debugOptions = .showPhysicsShapes

关于swift - 如何将 3D 模型添加到场景中,使其具有特定的 XYZ 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915887/

相关文章:

sql - 如何解析数据库中每个单元格的特定值?

swift - 声明一个具有属性返回值 CollectionType<Int> 的 Swift 协议(protocol)?

safari - 如何将 ARReferenceObject 文件转换成 USDZ 文件?

ios - 在 SceneKit 中,SCNLightTypeAmbient 类型的 SCNLight 是否会忽略 categoryBitMask 参数?

ios - ARKit 世界地图——如何使用自定义 UTI 文件类型保存/访问?

json - ARKit 4.0 – 是否可以将 ARWorldMap 数据转换为 JSON 文件?

ios - 核心数据 我将如何使用核心数据来保持用户登录?

html - Swift:带有 HTML 内容的 UIActivityViewController

ios - ARKIT - 它可以跟踪多少个跟踪图像?

ios - IESLight 可以在 SceneKit 中转换阴影吗?