我试图在 ARKit 中获取相机的前向 (LookAt) 向量,但我认为我出错了。
经过一些研究后,我在下面编写了这个辅助扩展,但从我得到的数据来看,我认为它不正确。 (当我将相机指向上方时,Y 分量为负)。
有人可以让我知道在获取相机在世界空间中指向的矢量时我犯了什么错误吗?另外,如果有更好的方法来获取它(CoreLocation?)我也对此持开放态度。
extension ARCamera {
/**
The Camera forward orientation vector as vector_float3.
*/
var forward: vector_float3 {
get {
return vector_float3(-1 * self.transform.columns.3.x,
-1 * self.transform.columns.3.y,
-1 * self.transform.columns.3.z)
}
}
/**
The Camera forward orientation vector as vector_float3 normalized.
*/
var normalForward: vector_float3 {
get {
let theNormaled = simd_normalize(vector_float3(-1 * self.transform.columns.3.x,
-1 * self.transform.columns.3.y,
-1 * self.transform.columns.3.z))
return theNormaled
}
}
}
提前致谢。
斯坦
最佳答案
public extension float4x4 {
var forwardVector: simd_float3 { simd_float3(columns.2.x, columns.2.y, columns.2.z).normalized() }
}
public extension simd_float3 {
/**
* Negates the vector described by simd_float3 and returns
* the result as a new simd_float3.
*/
func negate() -> simd_float3 {
return self * -1
}
/**
* Returns the length (magnitude) of the vector described by the simd_float3
*/
func magnitude() -> Float {
return sqrtf(x*x + y*y + z*z)
}
/**
* Normalizes the vector described by the simd_float3 to length 1.0 and returns
* the result as a new simd_float3.
*/
public func normalized() -> simd_float3 {
return self / magnitude()
}
}
关于swift - 如何在 ARKit 中获取相机的前向 (LookAt) 向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63795941/