2017-01-12 79 views
2

我正在使用Vuforia 6.2 AR SDK for Unity。但是,當我在Android手機上測試應用程序時,相機看起來像模糊。我在Vuforia的開發者網站上搜索了一下,發現了一些相機對焦模式,但我無法實現,因爲該指南是針對較早的Vuforia SDK的,我無法在他們的網站上找到他們提到的腳本。這是他們的代碼示例,但它不起作用。我創建了不同的腳本,並在Start()函數上運行這一行,但仍然不起作用。如何更改Vuforia AR相機對焦模式?

CameraDevice.Instance.SetFocusMode(
     CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO); 
+0

該軟件包附帶了一些示例,其中包含一個可以切換自動對焦的菜單(雙擊手機上的顯示)。如果它不以這種方式工作,那麼問題可能是您的設備。 – Vancete

+0

確保你在腳本的頂部包含這個: 使用Vuforia; –

回答

2

試試這個

void Start() 
{ 
    VuforiaBehaviour.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted); 
    VuforiaBehaviour.Instance.RegisterOnPauseCallback(OnPaused); 
} 

private void OnVuforiaStarted() 
{ 
    CameraDevice.Instance.SetFocusMode(
     CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO); 
} 

private void OnPaused(bool paused) 
{ 
    if (!paused) // resumed 
    { 
     // Set again autofocus mode when app is resumed 
     CameraDevice.Instance.SetFocusMode(
      CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO); 
    } 
} 
+1

嗨Shubham,你是對的!但是你需要用'VuforiaARController'取代'VuforiaBehaviour'。 例如: VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted); \t \t VuforiaARController.Instance.RegisterOnPauseCallback(OnPaused); – XpressGeek

+0

他們更新了SDK但未更新文檔,這非常令人沮喪! 我修改了前兩行,現在它適用於我! 不要編輯你的代碼,我會把它作爲答案。謝謝 – XpressGeek

+0

@Turzo謝謝我會改變它 –

0

此代碼是正確的代碼。

bool cameramode = false; 
public void OnCameraChangeMode() 
{ 
    Vuforia.CameraDevice.CameraDirection currentDir = Vuforia.CameraDevice.Instance.GetCameraDirection(); 
    if (!cameramode) { 
     RestartCamera(Vuforia.CameraDevice.CameraDirection.CAMERA_FRONT); 
     camBtnTxt.text = "Back Camera"; 
    } else { 
     RestartCamera(Vuforia.CameraDevice.CameraDirection.CAMERA_BACK); 
     camBtnTxt.text = "Front Camera"; 
    } 
} 

private void RestartCamera(Vuforia.CameraDevice.CameraDirection newDir) 
{ 
    Vuforia.CameraDevice.Instance.Stop(); 
    Vuforia.CameraDevice.Instance.Deinit(); 
    Vuforia.CameraDevice.Instance.Init(newDir); 
    Vuforia.CameraDevice.Instance.Start(); 
} 
+0

嗨,@Subham提供的第一個答案是我正在尋找的正確的東西。感謝您的回答! :) – XpressGeek