0

我对 IOS 开发和 Swift 完全陌生。目前我正在开发一个 IOS 应用程序,该应用程序涉及使用 iPad 的 LiDAR 传感器扫描房间,稍后当我加载 3D Obj 文件并触摸两个任意点时,应显示两点之间的长度。类似于 3D 扫描仪应用程序、画布应用程序的东西。

到目前为止,我能够将网格数据导出到 Obj 文件中并将其保存到设备中。我已经尝试了一段时间,但我认为在这一点上有点卡住,因为我不知道如何进一步进行测量部分。

最终结果应该是这样的。

带有距离标签的导出 obj 文件

寻找任何指导/建议。

4

1 回答 1

0

Scenekit 使用仪表,仅供参考。您可能必须尝试对此进行缩放,我有点怀疑它会开箱即用。这假设您有节点来比较距离,否则这是一个不同的交易。

您可以使用 GLKVector3Distance,或者只是滚动您自己的:

func distance3D(vector1: SCNVector3, vector2: SCNVector3) -> Float
{
    let x: Float = (vector1.x - vector2.x) * (vector1.x - vector2.x)
    let y: Float = (vector1.y - vector2.y) * (vector1.y - vector2.y)
    let z: Float = (vector1.z - vector2.z) * (vector1.z - vector2.z)
    
    let temp = x + y + z
    return Float(sqrtf(Float(temp)))
}

或者:

extension SCNVector3 {
     func distance(to vector: SCNVector3) -> Float {
         return simd_distance(simd_float3(self), simd_float3(vector))
     }
 }
于 2021-06-08T18:51:35.673 回答