当前位置: 首页 > news >正文

摄像头画面显示于unity场景

请添加图片描述

🐾 个人主页 🐾

🪧阿松爱睡觉,横竖醒不来
🏅你可以不屠龙,但不能不磨剑🗡

目录

  • 一、前言
  • 二、UI画面
  • 三、显示于场景
  • 四、结语

一、前言

由于标题限制,这篇文章主要是讲在unity中调用摄像头,然后将摄像头捕捉到的画面显示到场景中,无论是UI画面还是场景中的某个物体上;至于应用的场景可以用于AR增强现实。

那么话不多说,直接开始今天的内容吧!

请添加图片描述

二、UI画面

  1. 首先创建一个RawImage,用于在UI中显示画面
    在这里插入图片描述
  2. 调整RawImage尺寸,不调整也行,这里调整主要便于演示。
    选中RawImage,然后点击Rect Transform中的方标,然后按住Alt键的同时点击最右下角的位置,直至RawImage铺满屏幕。
    在这里插入图片描述
  3. 创建一个脚本文件,并键入以下的代码
    在这里插入图片描述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class WebCamToUI : MonoBehaviour
{// 显示视频画面的RawImagepublic RawImage rawImage; // Start is called before the first frame updatevoid Start(){// 创建一个WebCamTexture实例WebCamTexture webcamTexture = new WebCamTexture();// 将WebCamTexture应用到RawImage上rawImage.texture = webcamTexture;// 开始播放摄像头的纹理webcamTexture.Play();}// Update is called once per framevoid Update(){}
}
  1. 将脚本挂载到RawImage中,然后将开始创建的RawImage赋值给变量rawImage
    在这里插入图片描述
  2. 运行看效果
    请添加图片描述
    不好意思,搞错了,重来。
    请添加图片描述

三、显示于场景

在场景中显示和在UI中显示的逻辑其实大差不差,还是比较相似的,这里以Cube为例,也可以用QuadPlane

  1. 创建一个Cube
    在这里插入图片描述
  2. 创建一个脚本文件,键入以下代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class WebCamToScene : MonoBehaviour
{// 需要显示摄像头内容的物体的MeshRenderer组件public MeshRenderer meshRenderer; // Start is called before the first frame updatevoid Start(){// 创建WebCamTexture实例WebCamTexture webcamTexture = new WebCamTexture();// 创建一个材质并应用摄像头纹理Material material = new Material(Shader.Find("Unlit/Texture"));material.mainTexture = webcamTexture;// 将材质应用到MeshRenderer上meshRenderer.material = material;// 开始播放摄像头纹理webcamTexture.Play();}// Update is called once per framevoid Update(){}
}
  1. 挂载脚本,赋值变量。
    这里直接拖物体只由于创建的物体中自带有Mesh Renderer组件
    在这里插入图片描述
  2. 运行看效果
    请添加图片描述
    其他的物体也可以,比如前面提到的QuadPlane
    请添加图片描述

四、结语

文章看完后别忘了自己不看步骤再做一遍,巩固一下,记住脚本中的API。
这一期文章的内容就到这里,下期见,拜拜。

请添加图片描述

http://www.lryc.cn/news/385920.html

相关文章:

  • Double 4 VR智能仿真教学系统在国际邮轮乘务管理专业课堂上的应用
  • QSPI四线SPI:D0、D1、D2、D3
  • vue3通过vue-video-player实现视频倍速、默认全屏、拖拽进度条等功能
  • 微信小程序 点击左上角返回弹窗提示
  • openEuler 22.03 (LTS-SP1)服务器用ntpd同步GPS时间服务器的案例
  • Git的安装以及使用
  • 双路视频同屏显示(拼接)-基于野火Zynq7020开发板
  • ForkJoinPool浅析
  • 【AI-小米机器狗】Dockerfile包含SSH和SFTP
  • 仿真CAN报文发送的CRC校验算法(附CAPL代码)
  • 如何在Android应用中最佳实现“Edge to Edge“特性?
  • 多租户与低代码开发的应用:解锁企业数字化转型的无限可能
  • 出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家
  • 老师把卷子拍成图片如何打印
  • MySQL数据库(三):读取数据库数据
  • 分销裂变实战:PLG模式如何助力企业突破增长瓶颈
  • 定积分定义求极限专题
  • LLaMA:挑战大模型Scaling Law的性能突破
  • vue3 +elementPlus上传照片墙
  • Charles网络抓包工具安装和web抓包(一)
  • mysql workbench使用schema视图导出表和列结构到excel
  • Linux操作系统--软件包管理(保姆级教程)
  • 【uniapp】HBuilderx中uniapp项目运行到微信小程序报错Error: Fail to open IDE
  • Rust详解日志
  • 某麦网自动刷新抢票脚本——手机端(高级版)
  • 【MySQL】(基础篇十八) —— 触发器
  • [19] Opencv_CUDA应用之 基于形状的对象检测与跟踪
  • 【Echarts】散点图 制作 气泡 类型图表
  • 深入理解Spring Boot的启动过程
  • 【深度学习】卷积神经网络CNN