gpt4 book ai didi

ios - ARKit - 最初将对象以相机的特定航向/角度放置在 ARSKView 中

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

我正在 ARSKView 中创建 anchor 和 2d 节点,如下所示:

func displayToken(distance: Float) {
print("token dropped at: \(distance)")
guard let sceneView = self.view as? ARSKView else {
return
}

// Create anchor using the camera's current position
if let currentFrame = sceneView.session.currentFrame {
removeToken()

// Create a transform with a translation of x meters in front of the camera
var translation = matrix_identity_float4x4
translation.columns.3.z = -distance
let transform = simd_mul(currentFrame.camera.transform, translation)

// Add a new anchor to the session
let anchor = ARAnchor(transform: transform)
sceneView.session.add(anchor: anchor)
}
}

func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
// Create and configure a node for the anchor added to the view's session.
if let image = tokenImage {
let texture = SKTexture(image: image)
let tokenImageNode = SKSpriteNode(texture: texture)
tokenImageNode.name = "token"
return tokenImageNode
} else {
return nil
}
}

这会将它准确地放置在相机前面的给定距离 (z) 处。我还想做的是获取对象的纬度/经度,计算角度或航向(以度为单位),并最初从相机以这个角度放下 anchor /节点。我目前正在使用 GMSGeometryHeading 方法获取航向,该方法采用用户当前位置和目标位置来确定航向。所以当放下 anchor 时,我想把它放在正确的方向上朝向目标位置的纬度/经度。我如何使用 SpriteKit/ARKit 实现这一目标?

最佳答案

你能澄清一下你的问题吗?

也许以下几行可以帮助您作为示例。 cameraNode 使用基本几何公式移动,根据 x 和 y 坐标中的角度(欧拉)倾斜移动

var angleEuler = 0.1
let rotateX = Double(cameraNode.presentation.position.x) - sin(degrees(radians: Double(angleEuler)))*10
let rotateZ = Double(cameraNode.presentation.position.z) - abs(cos(degrees(radians: Double(angleEuler))))*10
cameraNode.position = SCNVector3(x:Float(rotateX), y:0, z:Float(rotateX))

如果你想让一个物体落在相机前面,并且落下的长度取决于度数,只需计算几何公式“Tan A = a/b”中“a”的值并更新节点的“展示.position.y”

希望对你有帮助

关于ios - ARKit - 最初将对象以相机的特定航向/角度放置在 ARSKView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954944/

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