1. 程式人生 > >Vuforia 攝像頭自動對焦問題測試

Vuforia 攝像頭自動對焦問題測試

           在利用Unity3D以及Vuforia開發AR專案

問題:

攝像頭無法聚焦

前提知識:

在Vuforia焦點模式下的行為(1.5版以上),描述如下:

FOCUS_MODE_NORMAL -通過裝置提供的預設的對焦模式
FOCUS_MODE_TRIGGERAUTO -設定此對焦模式將觸發一個自動對焦操作。
FOCUS_MODE_CONTINUOUSAUTO -首發的Android 2.3和iOS裝置這一對焦模式下可切換式驅動級的連續自動對焦的攝像頭。這是AR的應用程式的最佳對焦模式,因為它保證了相機聚焦在目標上,從而產生最佳的跟蹤結果。
FOCUS_MODE_INFINITY -設定相機為“無窮大”,通過攝像頭驅動程式的實現提供。(不支援IOS)。
FOCUS_MODE_MACRO -設定相機“微距”模式,由相機驅動程式的實現提供。這提供了特寫(APPX。15釐米),在AR調校很少使用的距離急劇攝像機影象。(不支援IOS)。
我們鼓勵使用FOCUS_MODE_CONTINUOUSAUTO在你的應用程式時,它可以在裝置上。當設定該模式時,如果返回值setFocusMode()為TRUE時應用程式將提供鋒利的照相機影象的兩個上級渲染,以及超棒跟蹤效能。

如果FOCUS_MODE_CONTINUOUSAUTO不可用,接下來最好的選擇是實現“觸控聚焦”在你的應用程式的行為。要做到這一點,引發setFocusMode()與FOCUS_MODE_TRIGGERAUTO值每個使用者觸控式螢幕幕的時間。這種行為的缺點是,大多數攝像頭的驅動程式隨機選擇一個方向集中(或近或遠),所以你有50%的機率使影象散焦,然後集中在目標上。由於在此焦點的邏輯一定條件下的跟蹤可能會丟失了一會兒,直到清晰的影象是由相機再次提供。

FOCUS_MODE_INFINITY和FOCUS_MODE_MACRO是在某些應用場合可使用的,如上所述。

FOCUS_MODE_NORMAL設定相機在預設模式下的攝像頭驅動程式定義。Setting Focus Mode with the Vuforia Unity Extension C# API


bool focusModeSet = CameraDevice.Instance.SetFocusMode(  
    CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
 
if (!focusModeSet) {
    Debug.Log("Failed to set focus mode (unsupported mode).");
}

來自http://blog.csdn.net/liang_704959721/article/details/39227101


解決方式:

1.新建C#繫結ARCamera

unity C#

bool focusModeSet = CameraDevice.Instance.SetFocusMode(     CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);if (!focusModeSet) {    Debug.Log("Failed to set focus mode (unsupported mode).");

using Vuforia;