簡體   English   中英

在 SceneKit/modelIO 中測量 3D-Obj 文件上兩點之間的距離並顯示它們

[英]Measuring the distance between two points on a 3D-Obj file in SceneKit/modelIO and displaying them

我對 IOS 開發和 Swift 完全陌生。 目前,我正在開發一個 IOS 應用程序,該應用程序涉及使用 IPad 的 LiDAR 傳感器掃描房間,稍后當我加載 3D Obj 文件並觸摸兩個任意點之間的長度時,應該顯示兩個任意點之間的長度。 類似於 3D 掃描儀應用程序、Canvas 應用程序的東西。

到目前為止,我能夠將網格數據導出到 Obj 文件中並將其保存到設備中。 我已經嘗試了一段時間,但我認為在這一點上有點卡住,因為我不知道如何進一步進行測量部分。

最終結果應該是這樣的。

距離為 label 的導出 obj 文件

尋找任何指導/建議。

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))
     }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM