当前位置: 首页 > 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。
这一期文章的内容就到这里,下期见,拜拜。

请添加图片描述

相关文章:

  • 项目五 OpenStack镜像管理与制作
  • 钓鱼网站开发原理(社会工程学)
  • KEIL5软件仿真观察PIN脚电平(软件仿真逻辑分析仪的使用)
  • centos查找文件 及 操作写入的进程
  • 概率论与数理统计(期末自用总结版)
  • 力扣-2663
  • 快速生成基于vue-element的后台管理框架,实现短时间二次开发
  • 关于飞浆文字识别技术的运用
  • [手机Linux PostmarketOS]一,1加6T真正的手机Linux系统
  • MacOS安装redis
  • 获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?
  • 基于 Java 实现的智能客服聊天工具模拟场景
  • React 使用 Zustand 详细教程
  • Java项目:基于SSM框架实现的人事管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】
  • 将WIN10的wifi上网分享给以太网接口
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • classpath对获取配置文件的影响
  • Codepen 每日精选(2018-3-25)
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Electron入门介绍
  • HashMap剖析之内部结构
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript 一些 DOM 的知识点
  • JavaScript函数式编程(一)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 判断客户端类型,Android,iOS,PC
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端_面试
  • 收藏好这篇,别再只说“数据劫持”了
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​如何防止网络攻击?
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (0)Nginx 功能特性
  • (14)Hive调优——合并小文件
  • (42)STM32——LCD显示屏实验笔记
  • (补)B+树一些思想
  • (过滤器)Filter和(监听器)listener
  • (十)T检验-第一部分
  • (十五)使用Nexus创建Maven私服
  • (数据结构)顺序表的定义
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET 药厂业务系统 CPU爆高分析
  • :not(:first-child)和:not(:last-child)的用法
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [.NET]桃源网络硬盘 v7.4
  • [AIGC] Spring Interceptor 拦截器详解