ios - 如何使用 ARKit 将 SCNNode 的方向更改为相机

标签 ios arkit xcode9 scnnode

下面的代码将 SCNPlane 放置在触摸点上,但该平面定向(旋转)到应用程序启动时手机所在的位置。理想情况下,我希望将节点定向到物理墙或相机的当前方向。这是如何使用 ARKit 完成的?

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let touch = touches.first else {return}
    let result = sceneView.hitTest(touch.location(in: sceneView), types: [ARHitTestResult.ResultType.featurePoint])
    guard let hitResult = result.last else {return}
    let hitTransform = SCNMatrix4.init(hitResult.worldTransform)

    let hitVector = SCNVector3Make(hitTransform.m41, hitTransform.m42, hitTransform.m43)
    createPlane(position: hitVector)
}

func createPlane(position: SCNVector3) {

    let background = SCNNode()
    background.geometry = SCNPlane.init(width: 0.12, height: 0.10) // better set its size
    background.geometry?.firstMaterial?.diffuse.contents = "odinBW2.jpeg"
    background.position = position

    sceneView.scene.rootNode.addChildNode(background)

}

最佳答案

如果你想将你的节点与相机的方向对齐,只需使用 SCNBillboardConstraint .

let yourNode = SCNNode()

let billboardConstraint = SCNBillboardConstraint()
billboardConstraint.freeAxes = [.X, .Y, .Z]
yourNode.constraints = [billboardConstraint]

关于ios - 如何使用 ARKit 将 SCNNode 的方向更改为相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46390019/

相关文章:

ios - 架构 x86_64 的 undefined symbol 测试我的 ViewController Swift

ios - 编辑模式下具有自定义单元格的 UITableView 不会将单元格推倒

swift - SCNBox 使正面旋转到 ARKit 中的相机

swift - SceneKit/ARKit 中不可见阴影平面的问题

ios - 将 ARCamera 旋转变换应用于节点 (ARKit)

ios - 如何将自定义 UICollectinViewCell 注册到 xib 文件中自定义 View 内构建的 UICollectionView

swift - 带有流氓 .o 文件的无效 Bundle 结构

ios - 弹出或关闭 ViewController

ios - 如何在 Swift 的 UIButton 中删除图像和写入文本?

ios - 是否可以编写安装 CA 的 iOS 应用程序?