在做AR项目时,手机摄像头不对焦的,导致摄像头在对照物体时不清晰,不易识别。先将各种变焦模式进行总结。希望大家在用到时,能够有所收获。
###### 代码如下:
using UnityEngine;
using System.Collections;
using Vuforia;
public class ChangeCameraFocus : MonoBehaviour {
/// <summary>
///
///
/// Sum
/// The different focus modes for the active camera
/// 概要:
/// 相机的不同变焦模式
///
///public enum FocusMode
///{
///
/// FOCUS_MODE_NORMAL = 0, // 寻常变焦模式
/// FOCUS_MODE_TRIGGERAUTO = 1, // 自动触发 变焦模式
/// FOCUS_MODE_CONTINUOUSAUTO = 2, // 连续自动变焦模式
/// FOCUS_MODE_INFINITY = 3, // 无穷即无限变焦模式
/// FOCUS_MODE_MACRO = 4 // 宏变焦模式
///}
///
/// </summary>
void Start () {
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
void Update () {
//判断执行 相机设备 自动连续变焦模式
CameraFocusContinuousa();
}
/// <summary>
/// 函数实现:相机变焦模式 为 连续自动变焦模式
///
/// 功能实现方式:
/// 当 判断 触屏抬起时, 再次 判断 触屏的次数大于1 且 同时满足 触屏阶段 为 刚开始时,执行 相机设备的 连续自动变焦模式 ; 否则 不执行
/// 注:
/// phase 阶段 、时期
/// Began 开始,创建
/// </summary>
private void CameraFocusContinuousa() {
if(Input.GetMouseButtonUp(0))
if (Input.touchCount >0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
}
/// <summary>
/// 函数实现:相机设备 为常规变焦模式
///
/// 函数功能实现:
/// 同上(常规 Normal)
/// </summary>
private void CameraFocusNormal() {
if (Input.GetMouseButtonUp(0))
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_NORMAL);
}
}
/// <summary>
/// 函数实现: 相机设备为触发式 变焦模式
///
/// 函数功能实现:
/// 同上(触发 Trigger)
/// </summary>
private void CameraFocusTriggerAuto() {
if (Input.GetMouseButtonUp(0))
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);
}
}
/// <summary>
/// 函数实现: 无限变焦模式
///
/// 函数功能实现:
/// 同上(无限 Infinity)
/// </summary>
private void CameraFocusInfinity() {
if (Input.GetMouseButtonUp(0))
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_INFINITY);
}
}
/// <summary>
/// 函数实现: 宏变焦模式
///
/// 函数功能实现:
/// 同上(宏 Macro)
/// </summary>
private void CameraFocusMacro()
{
if (Input.GetMouseButtonUp(0))
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_MACRO);
}
}
}