1

我一直在嘗試整合ARToolkit標記對象跟蹤到探戈應用添加ARToolkit標記跟蹤到探戈

到目前爲止,我已經創建了一個構建,以便探戈應用程序可以訪問和使用ARToolkit本地庫或ARToolkit Unity包裝器。 但是,它們似乎都需要以默認配置獨佔訪問相機。

你怎麼能給這兩個庫提供相同的Android視頻源?

  • 你可以創建一個虛擬攝像頭設備,使飼料翻倍嗎?
  • 請你把探戈飼料正常,然後將其與重發到的ARToolKit特殊VideoConf

[編輯]
的ARToolKit使用較舊的攝像機1 API,需要一個onPreviewFrame()回調將該byte []數據傳遞給它自己的本地庫調用,它將完成實際的工作。

沿着第二個要點,Tango可以使用諸如iTangoVideoOverlay之類的東西來提供每個幀原始相機數據的副本。
(ARToolkits NDK的功能似乎期待NV21,但還可以接受other formats

如果數據是從探戈提取的,我相信NDK的ARToolKit可以的功能,而無需實際擁有的相機使用。

+0

設法使用ITangoVideoOverlay從Tango獲取圖像數據,並通過將它傳遞給Activity,然後通過JNI調用(C#中沒有直接的庫調用)將其發送到ARToolkit。我需要研究如何在tango提供的格式和ARToolkit接受的格式之間進行切換。 – Jethro

回答

0

這個blog顯示了一個整合這兩者的例子。

它也鏈接到示例源代碼,但測試後我根本沒有整理它 - 謹慎行事!

不能供給相同的攝像機源到兩個庫(第一點),但可以轉發來自探戈(ITangoVideoOverlay)照相機進料引入的ARToolKit([AcceptVideoImage] [2])(第二個項目符號點)。
這並不理想,因爲從C#發送數據到Java是相當低效的。 Phab 2 Pro必須對視頻X4進行縮減採樣以實現合適的幀率。
更好的答案是用管道/套接字替換AndroidJavaClass調用。 也有很多小問題 - 這是一個非常hacky的解決方法。

1

恐怕你提到的方法都不行。 Tango擁有相機的獨家使用權,我相信ARToolkit也僅通過camera2 API佔用相機。對於目前的TangoSDK,我認爲漫遊將使用ARToolkit進行相機渲染,Tango進行姿態跟蹤。

但是,這可能會暴露時間戳的問題,這是探戈和ARToolkit有不同的時間戳。解決方法是在應用程序啓動時從一開始就採用時間戳偏移量,並在基於時間戳查詢來自Tango的姿勢時不斷應用該偏移量。

+0

謝謝!我會研究更多,看看分裂姿勢/跟蹤和渲染的建議。 我已經更新了一個想法,將圖像數據提交到ARToolkit的NDK庫,如果您可以告訴我是否聽起來可行或者如果我浪費了我的時間,我會非常感激! – Jethro