【Unity3D-01】 记录Unity3D调用外接摄像头

这篇具有很好参考价值的文章主要介绍了【Unity3D-01】 记录Unity3D调用外接摄像头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity3D-01】记录Unity3D调用外接摄像头

最近想在Unity3D上调用一个摄像头,通过查找资料发现仙魁XAN和八哥快走开的博客符合我的想法,实现起来也不难就尝试了一下

01 新建一个Unity3D的工程

02 开干!

2.1 在这个工程里新建Canvas

如下图所示
unity 调用摄像机,Unity3D,unity
然后下设RawImage为载体

2.2 在Assets里面新建一个脚本命名为PlaneManager.cs

代码内容如下(参考八哥快走开的博客)

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

public class PlaneManager : MonoBehaviour
{
    public string DeviceName;
    //public Vector2 CameraSize;
    public float CameraFPS;

    //接收返回的图片数据  
    WebCamTexture _webCamera;
    //public GameObject Plane;//作为显示摄像头的面板
    public RawImage rawImage;


    void OnGUI()
    {
        if (GUI.Button(new Rect(100, 100, 100, 100), "Initialize Camera"))
        {
            StartCoroutine("InitCameraCor");
        }

        //添加一个按钮来控制摄像机的开和关
        if (GUI.Button(new Rect(100, 250, 100, 100), "ON/OFF"))
        {
            if (_webCamera != null && rawImage != null)
            {

                if (_webCamera.isPlaying)
                    StopCamera();
                else
                    PlayCamera();
            }
        }
        if (GUI.Button(new Rect(100, 450, 100, 100), "Quit"))
        {

            Application.Quit();
        }

    }

    public void PlayCamera()
    {
        //Plane.GetComponent<MeshRenderer>().enabled = true;
        rawImage.enabled = true;
        _webCamera.Play();
    }


    public void StopCamera()
    {
        // Plane.GetComponent<MeshRenderer>().enabled = false;
        rawImage.enabled = false;
        _webCamera.Stop();
    }

    /// <summary>  
    /// 初始化摄像头
    /// </summary>  
    public IEnumerator InitCameraCor()
    {
        yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
        if (Application.HasUserAuthorization(UserAuthorization.WebCam))
        {
            WebCamDevice[] devices = WebCamTexture.devices;
            DeviceName = devices[0].name;
            _webCamera = new WebCamTexture(DeviceName, 1920, 1080, 30);

            rawImage.texture = _webCamera;
            //Plane.GetComponent<Renderer>().material.mainTexture = _webCamera;
            //Plane.transform.localScale = new Vector3(1, 1, 1);

            _webCamera.Play();
            //前置后置摄像头需要旋转一定角度,否则画面是不正确的,必须置于Play()函数后
            rawImage.rectTransform.localEulerAngles = new Vector3(0, 0,_webCamera.videoRotationAngle+360);
        }
    }
}


2.3 把这个CS脚本挂到RawImage这个载体上(左键拖动.cs文件到RawImage)

2.4 记得把"Plane Manager"这个面板里的"Raw Image"选择RawImage(RawImage),否则会报错,无法出现摄像头的画面

如下图所示
unity 调用摄像机,Unity3D,unity

2.5 效果呈现

unity 调用摄像机,Unity3D,unity文章来源地址https://www.toymoban.com/news/detail-767664.html

到了这里,关于【Unity3D-01】 记录Unity3D调用外接摄像头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3D 记录到日志

    记录日志是一个好习惯,方便我们在日常开发中出现问题快速排查。 把它放到Unity Project视图下,最好是建一个“Plugins”文件夹用来存放,在脚本中引用该类库。 下载链接:https://download.csdn.net/download/WenHuiJun_/87658498 原文: https://www.ngui.cc/el/1788499.html?action=onClick 注: 对于 “

    2024年01月21日
    浏览(41)
  • Unity3D学习-Day01-环境搭建及学习资源导入

    版本选择可以最新,但是不能太老。因为很多资源都只兼容后续版本。 总体步骤可以概括为: 一:安装 1.下载 Unity Hub 2.下载最新的 Unity Personal 正式版 3.登录 Unity ID 4.安装编辑器时,保持默认安装选项。(尽量选择LTS的,我选择的是2020.3.4) 二:导入 1.下载项目 2.使用 Unit

    2024年02月07日
    浏览(54)
  • Unity3D学习记录02——PloyBrush场景搭建

    首先在Window-Package Manager里面搜索Poly Brush,下载后将URP的Shader样例导入  导入后Asset文件夹下会有Sample的文件夹,在菜单栏 Tools-PolyBrush-PolyBrush Window 打开窗口 这个窗口最上面的五个,第一个是用来调整地形高低的,第二个是进行柔化场景的,第三个是调整颜色的, 第四个可以

    2024年02月08日
    浏览(30)
  • Unity3D学习记录03——Navigation智能导航地图烘焙

    首先还是在Package Manager中安装AI Navigation 接着选择我们场景的地面,右键,找到AI的NavMesh Surface,它会为我们的Ground添加一个叫NavMesh Surface的子物体 在Inspector窗口中可以看到它的详细的参数: 图中的R,H为你人物的参数,45°为你的人物可以爬行的最大角度 Agent Type里面可以改

    2024年02月08日
    浏览(33)
  • 【Unity3D自学记录】开发PicoVR之获取手柄的方法

    获取手柄有两种方法,一种是XR的方法,一种是PicoSDK中的方法。 第一种,XR方法 第二种是PicoSDK中的方法

    2024年02月17日
    浏览(29)
  • Unity3D学习记录04——利用射线实现角色类似LOL的移动

    首先新建一个空白的GameObject,挂在一个MouseManager的脚本 实现思路: 通过获取鼠标点击的位置,获得该位置的信息,然后使角色移动到该位置 MouseManager脚本的代码如下:   代码解释: 先创建了一个Action类型的事件OnMouseClicked 这个是C#中事件的内容,我们可以在满足条件的时

    2024年02月08日
    浏览(33)
  • [Unity3D] 记录一下ScrollView中粒子无法被Mask遮挡的问题解决过程

    项目解决问题1所使用的Shader链接:https://www.codenong.com/cs107033982/ 解决思路: 1、粒子特效使用的Mobile/Particles/Additive(Shader)材质球不包含模板测试,添加模板测试后可以与普通Image一样被Mask遮挡,所以我们给粒子的材质球加上模板测试。 2、普通Image使用默认的材质球,该材质球

    2024年02月07日
    浏览(32)
  • Unity3d 开发Pico4应用打开工程卡在Importing(iteration xxx) busy for xx:xx)...问题记录

    大致问题如题: 步骤是参照了PICO官方给出的快速开始的步骤进行的,而这个我问题的出现是在导入 PICO Unity Integration SDK 前往 SDK 下载中心,下载最新版本的 SDK。 1.解压所下载的 SDK 压缩包。 2.你将会得到一个包含 package.json 文件的文件夹。 3.返回 Unity 编辑器页面。 4.在上方

    2024年02月15日
    浏览(33)
  • 【Unity3D日常开发】Unity3D中协程的使用

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 最近有小伙伴问协程怎么用、怎么写,我也是会用会写,但是原理不是很明白。 学习了一下,总结出

    2024年02月12日
    浏览(41)
  • 【Unity3D小功能】Unity3D中实现Text显示版本功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在项目开发中,会遇到要控制版本的情况,比如说对比版本号,版本不对再更新版本的功能,这些就是

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包