Unity将摄像头画面显示在cube或者plane上面

目录

一、目的:

1、将手机相机画面显示出来

二、参考:

1、Unity Android 之 移动端打开相机拍照并保存

三.操作:一:完成:打开相机+再RawImage中显示

1.注意

1.代码

三.操作:二:打开相机+显示再UI中+保存在项目中

1.运行效果:

1.代码

1.Unity设置

三、操作:三:打开相机:完成

1、注意

 1、材质:新建材质,托给plane

1、代码:

四、注意:

1、测试了一下,罗技720会很卡,低配的摄像头以及华为m6不会卡

2、太阳光的阴影需要去除掉,否则有阴影 


一、目的:

1、将手机相机画面显示出来

 

二、参考:

1、Unity Android 之 移动端打开相机拍照并保存

https://jingyan.baidu.com/article/03b2f78cd9fd125ea337ae48.html

①总结:good:电脑端确实能够rawImage显示摄像头画面+手机端无法显示摄像头画面+保存图片不了:最终我对其进行修改了,变成Plane来显示相机画面,手机相机画面可以在Plane上显示,下面是我修改后的

 

三.操作:一:完成:打开相机+再RawImage中显示

1.注意

  1. Texture何Material需要空的,否则相机打开了,但是画面是黑色的,
  2. webCamTexture = new WebCamTexture(webCamName, 1024, 768);   里面的分辨率不能太高,否则会很卡

 

1.代码

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

/// <summary>
/// 功能:canvas_takePicture 所有函数都在此
/// </summary>
public class MyCanvas_takePicture : MonoBehaviour
{    
    /// <summary>RawImage:显示摄像头画面</summary>
    [Tooltip("RawImage:显示摄像头画面")]
    [Header("RawImage:显示摄像头画面")]
    public RawImage RawImage_showWebCamTexture;

    /// <summary>WebCamTexture:摄像机图片参数</summary>
    private WebCamTexture webCamTexture;

    // Use this for initialization
    void Start()
    {
        StartCoroutine("CoroutineOpenCamera");
    }  

   
   /// <summary>
    /// 使用协程打开相机函数
    /// </summary>
    /// <returns></returns>
    IEnumerator CoroutineOpenCamera()
    {
        // 申请相机权限
        yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);

        // 判断是否有相机权限
        if (Application.HasUserAuthorization(UserAuthorization.WebCam))
        {
            // 获取相机设备
            WebCamDevice[] webCamDevices = WebCamTexture.devices;

            // 判断是否有相机设别
            if (webCamDevices != null && webCamDevices.Length > 0)
            {
                // 把 0 号设备(移动端后置摄像头)名称赋值
                string webCamName = webCamDevices[0].name;

               //不判断的话,下一次打开后texture一直会空白的
                if (webCamTexture==null)
                {
                    // 设置相机渲染宽高,并运行相机
                    webCamTexture = new WebCamTexture(webCamName, 1024, 768);
                    if (!webCamTexture.isPlaying)
                    {                  
                        webCamTexture.Play();
                        rawImage_showWebCamTexture.GetComponent<RawImage>().texture = webCam
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值