Vuforiaでカメラのフォーカスがきかない場合

Filed under Unity
Tagged as , , ,

Vuforiaでカメラを作って、実機で動作させてみたら、カメラのフォーカスが合わない問題が発生しました。
自分の場合では、iPhone用に同じコードをビルドしても問題ないのに、Android用に書き出したら問題が出てきました。
調べてみたところ、下記ページに解決策が載っていました。
https://developer.vuforia.com/forum/unity-extension-technical-discussion/camera-focus-mode-android-unity
ARCameraの設定時にフォーカスモードを設定させる、というものなのですが、具体的にスクリプトまで配布されていて、これをARCameraにアタッチすれば解決する、というものです。
CameraFocusController.zip

using UnityEngine;
using System.Collections;
using Vuforia;
 
public class CameraFocusController : MonoBehaviour {
 
    private bool mVuforiaStarted = false;
 
    void Start () 
    {
        VuforiaARController vuforia = VuforiaARController.Instance;
 
        if (vuforia != null)
            vuforia.RegisterVuforiaStartedCallback(StartAfterVuforia);
    }
 
    private void StartAfterVuforia()
    {
        mVuforiaStarted = true;
        SetAutofocus();
    }
 
    void OnApplicationPause(bool pause)
    {
        if (!pause)
        {
            // App resumed
            if (mVuforiaStarted)
            {
                // App resumed and vuforia already started
                // but lets start it again...
                SetAutofocus(); // This is done because some android devices lose the auto focus after resume
                // this was a bug in vuforia 4 and 5. I haven't checked 6, but the code is harmless anyway
            }
        }
    }
 
    private void SetAutofocus()
    {
        if (CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO))
        {
            Debug.Log("Autofocus set");
        }
        else
        {
            // never actually seen a device that doesn't support this, but just in case
            Debug.Log("this device doesn't support auto focus");
        }
    }
}

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)