2024-10-03|閱讀時間 ‧ 約 0 分鐘

WWDC22 Create parametric 3D room scans with RoomPlan


    New Zealand - Te Anau

    New Zealand - Te Anau


    觀看 Create parametric 3D room scans with RoomPlan 筆記

    Recap


    21 年推出 Object Capture,拍攝真實世界的物體照片,透過 RealityKit 的 Photogrammetry API,合成 App 用的 3D 模型


    那在 Object Capture 之前,還有 Scence Reconstruction API ,可以幫助我們粗略理解,所在空間的幾何結構,並支持在 App 中的 AR 應用


    今年推出新的 framework RoomPlan

    它可以支持 LiDAR 的 iPhone, iPad 掃描房間,生成房間參數化的 3D 模型,也可以在 App 中使用房間內的物品

    RoomPlan 使用由 ARKit 提供支持的複雜機器學習算法,用於檢測牆壁、窗戶、門及房間內的物品,例如壁爐、沙發、桌子和櫥櫃

    而 RoomCaptureView API 使用 RealityKit 實時呈現掃瞄進度


    Applications

    這是 Apple 首次剔除了複雜的實施過程(機器學習和計算機視覺算法),我們可以以全新的方式與房間交互

    幾個層面敘述 RoomPlan 的應用:

    Interior design: 可以預覽牆壁顏色變化,還可以準確計算重新粉刷房間所需的油漆量

    Architecture: 輕鬆預覽並實時編輯對其房間佈局的更改

    Real estate: 無縫獲得房源的平面圖和 3D 模型

    E-commerce: 可以展示實際空間中的物品,而吸引客戶


    要使用 RoomPlan 主要有兩種方式

    • Scanning experience API:開箱即用掃描體驗
    • Data API: 支持我們 app 中,用最合適的案例方式,使用實時參數數據

    Scanning experience API


    RoomCaptureView

    它是 UIView 的 subclass

    World space feedback 處理世界空間掃描反饋的呈現

    Realtime model generation 實時房間模型生成

    Coaching and user guidance 輔導和用戶指導

    掃描期間會用動線線條呈現檢測到的牆壁、窗戶、開口、門和房間物品



    而且還會實時生成交互式 3D 模型,讓我們一目瞭然了解掃描進度


    RoomPlan API 使用

    最後可以輸出 USDZ 格式的結果檔案


    Data API


    這部分是提供在掃描期間,訪問底層數據結構的權限,可以從頭到尾建立自訂義的可視化掃描體驗

    Basic workflow

    Scan → Process → Export

    Scan

    var previewVisualizer: Visualizer! 可以自定義類型來顯示結果

    arView.session = captureSession.arSession 這樣 arView 就繪製平面和邊界框


    • func captureSession(_ session: RoomCaptureSession, didUpdate room: CapturedRoom)

    這是為了得到實時的 CaptureRoom 數據結構,接著就可以使用 previewVisualizer 來更新 3D 模型的 AR View,這樣就會即時更新並回饋給操作者。

    • func captureSession(_ session: RoomCaptureSession, didProvide instruction: Instruction)

    提供指令結構 (Instruction ),其中還有實時回饋,透過 prviewVisualizer 在掃描過程中就可以引導操作者


    Instructions

    Move closer to wall 物品的距離

    Move away from wall 物品的距離

    Slow down 掃描速度

    Turn on light 房間照明調節

    Low texture 專注房間中的有更多紋理的特定區域

    透過 Instruction 的上述特性,可以在掃描時可以實時回饋指導操作者


    Process

    此部分使用 RoomBuilder 來處理掃描到的數據,並生成最終的 3D 模型

    先生成 RoomBuilder instance


    再透過 captureSession(_ session: didEndWith data: error:) 最終處理

    它會在呼叫 session.stop() 或者錯誤發生而停止時觸發此 delegate

    最後再透過 roomBuilder.captureRoom(from:) 異步處理掃描數據,並建構最終的 3D 模型


    Export


    以下這些都是在 RoomPlan 中支持的物品類型



    最後再透過 export(to:) 輸出成 USD 和 USDZ 格式的檔案

    Cinema 4D 的範例圖


    Best practices


    Recommended conditions 優質掃描的理想環境

    • Single residential rooms 適合單個房間
    • Room size: 30 ft by 30 ft 適合的房間大小為 30 * 30 英尺 = 9 * 9 公尺 = 約 26 坪
    • Lighting: minimum 50 lux 建議亮度要達到 50 勒克斯或更高,一般客廳在夜間的亮度通常就是 50 勒克斯,或者像是安全梯、車庫的亮度
    • Lidar-enabled iPhone and iPad Pro models 硬體方面支持所有有 LiDAR 的裝置

    Room selection 選擇房間時要注意的

    • Challenging conditions 有些情境會有高難度的挑戰
      • Full-height mirrors or glass 例如全高鏡子和玻璃會讓 LiDAR 傳感器難以產生預期的輸出
      • High ceilings 較高的天花板也可能超出 LiDAR 傳感器的掃描範圍
      • Dark surfaces 難以掃描非常昏暗的表面

    Scanning considerations 掃描方面的注意事項

    • Preparing your room 對於精准度要求高的 App 可以事前準備
      • Opening the curtains 拉開窗簾,增加更多自然光
      • Closing doors 關門可以避免意外掃描到房間外的區域
    • Instruction delegate 在掃描期間給操作者提供關於紋理、距離及速度的各種回饋
      • Texture
      • Distance
      • Speed
      • Lighting

    Thermal considerations 散熱方面的注意事項

    • Challenging conditions 注意設備的電池和散熱狀況,不要一次掃描超過5分鐘
      • Repeated scans
      • Long scans over 5 minutes

    Wrap-up


    Intuitive scanning experience

    Powerful data API for scene understanding

    Fully parametric USD representations

    其他討論

    參考


    Resources


    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.