IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity如何调用摄像头并显示在窗口内 -> 正文阅读

[游戏开发]Unity如何调用摄像头并显示在窗口内

Unity如何调用摄像头并显示在窗口内

序言

在学习Unity开发AR过程中,发现无论是Vuforia还是Unity中的ARkit或者ARcore,均是建立一个ARcamera,而这个camera是受他们AR内核支配的,并不是最原始的可控摄像头,所以萌生了想要做一个受自己控制的摄像头。实现这个愿望的第一步就是将摄像头的视频内容接入到Unity中,这篇文章就是讲的这个内容。

目标

  1. Unity可以打开摄像头并在窗口中显示
  2. 如果有多个摄像头,则可以通过按钮进行切换

unity中的实现

  1. 首先创建一个3D项目

  2. 在Hierarchy中创建一个Canvas(画布),在Game窗口中可以设定Canvas大小,目标设定为(1280*820)。

  3. 画布中创建以下子项目
    RawImage(Raw Image)->用于显示摄像头的内容,大小为1280*720,并将RawImage与Canvas上边缘对齐。
    CameraOnButton (button)->用于开启和关闭摄像头,点击第一次时是打开,点击第二次时为关闭。
    CameraSwitchButton (button)->用于切换摄像头。
    BG_Im(Image)->用于放在Canvas底部作为UI的背景使用,颜色调成深灰色。
    创建好后如下所示:
    在这里插入图片描述
    在这里插入图片描述

  4. 创建一个空对象(Empty Object),取名为CameraController, 在CameraController下创建新脚本取名“CameraContrller”,脚本内容如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CameraContrller : MonoBehaviour
{
    

    int currentCamIndex = 0;

    WebCamTexture tex;

    public RawImage display;

    public Text startStopText;

    public void SwapCam_Clicked()
    {
        if (WebCamTexture.devices.Length > 0 )//WebCamTexture.devices.Length表示接入电脑的摄像机数量,当摄像机数量大于0时,运行下面切换操作。
        {
            currentCamIndex += 1;
            currentCamIndex %= WebCamTexture.devices.Length;//这行代码很有学习价值,它的意思是说设定一个数,计数器未达到这个数时,可以增加,当计数器达到这个数时会被重置为0
        }
    }


    public void StartStopCam_Clicked()
    {
        if(tex != null)//stop camera
        {
            StopWebCam();
            startStopText.text = "Start Camera";

        }
        else//start camera
        {
            WebCamDevice device = WebCamTexture.devices[currentCamIndex];
            tex = new WebCamTexture(device.name);//根据设备名称创建一个新的WebCamTexture的类,并赋值给tex,此时tex已经包含了摄像头的视频信号。
            display.texture = tex;//将摄像头的视频信号传递给RawImage中进行画面显示。

            tex.Play();//播放
            startStopText.text = "Stop Camera";
        }

    }

    private void StopWebCam()
    {
        display.texture = null;
        tex.Stop();
        tex = null;
    }
}

接下来,需要将RawImage和CameraOnButton中的Text赋值给CameraController中,并将CameraController赋值给CameraOnButton和CameaSwitchButton中,分别引用各自的函数,如下图:
CameraOnButton:
在这里插入图片描述
CameraSwitchButton:
在这里插入图片描述
以上内容建立好后,运行即可。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 11:09:07  更:2021-09-07 11:09:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/21 20:30:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码