Unity开启摄像头并铺满屏幕
可能比较常用,但是每次都需要重新写,这次直接把这个贴在这里,下次直接复制粘贴。
主要功能:打开WebCamera,在空间中创建Panel,用于显示相机画面。Panel做了比例适配,可以正确显示图像并铺满屏幕。Panel放在相机最远处,避免与其他模型穿插
using UnityEngine;
/*
create by keefor On 20200106
*/
[RequireComponent(typeof(MeshRenderer), typeof(MeshFilter))]
public class CameraPlay : MonoBehaviour
{[HideInInspector]public WebCamTexture camtex;private Material mat;private Camera cam;private static CameraPlay inst;public static CameraPlay Inst{get{if (inst == null){var pp = GameObject.CreatePrimitive(PrimitiveType.Quad);pp.name = "WebCamera";Destroy(pp.GetComponent<Collider>());inst = pp.AddComponent<CameraPlay>();}return inst;}}void Awake(){inst = this;UnityEngine.Android.Permission.RequestUserPermission(UnityEngine.Android.Permission.Camera);WebCamDevice[] cd = WebCamTexture.devices;camtex = new WebCamTexture(cd[0].name, 480,320,15);//考虑到性能问题这里选择了小尺寸var render = this.GetComponent<Renderer>();render.material = mat = new Material(Shader.Find("Unlit/Texture"));cam = Camera.main;if (cam == null) cam = Camera.allCameras[0];transform.SetParent(cam.transform);transform.localPosition = new Vector3(0, 0, cam.farClipPlane);}void OnEnable(){camtex.Play();mat.mainTexture = camtex;var lt = cam.ScreenToWorldPoint(new Vector3(0, 0, cam.farClipPlane));var rb = cam.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, cam.farClipPlane));Debug.Log(lt + ":" + rb);var sc = new Vector3(Mathf.Abs(rb.x - lt.x), Mathf.Abs(lt.y - rb.y), 1);var ratio = sc.x / sc.y;var scratio = (float)camtex.width / camtex.height;if (ratio > scratio){sc.y = sc.x / scratio;}else{sc.x = sc.y * scratio;}transform.localScale = sc;}void OnDisable(){camtex.Stop();}}
Unity开启摄像头并铺满屏幕相关推荐
- img 在video上面_HTML,img,video无法铺满屏幕解决方法,同视频做网页背景无法全屏的解决方法...
我在这里用视频做为网页背景,给视频设了100%宽高,在firebug也显示video的宽高和页面是一样的,但是效果却没出来,视频没有铺满屏幕.下面是我的代码(原代码,错误的) *{margin: 0; ...
- 计算机显示器图片怎么铺满全屏,win10电脑显示器屏幕不能铺满怎么办_win10电脑显示不能铺满屏幕处理方法-win7之家...
我们在win10电脑中设置的桌面壁纸通常都是将其铺满整个屏幕,这样让用户看起来也相当的舒适,可是最近总有用户的win10电脑显示器出现背景壁纸不能够铺满整个屏幕的现象,那么win10电脑显示器屏幕不能 ...
- tableView在iPad上不能铺满屏幕
tableView在iPad上不能铺满屏幕在手机上是好的 需要给tableview 加上一句判断 if #available(iOS 9.0, *) { tableView!.cellLayoutMa ...
- 微信小程序之图片处理(居中、铺满屏幕)附源程序
图片显示是小程序设计必须要经过的步骤,本人看到网上教学有限,现整理出自己设计过程中出现的问题,应该可以解决你遇到的问题. 用最后给的完整代码,按照我的步骤一定能调试出来,不行再联系我. 先给用到的代码 ...
- 背景图铺满屏幕的方法
背景图铺满屏幕的方法 1. 第一种:先获得bitmap,然后再利用这个bitmap,使用createscaledbitmap进行缩放,其中的参数是希望得到的位图的尺寸 代码如下所示: //获得位图的 ...
- vue项目登录页背景图百分百铺满屏幕宽高自适应
vue项目背景图百分百铺满屏幕宽高自适应 .login{background: url(../../../static/img/login/beijing@2x.png);background-siz ...
- uni-微信小程序 图片铺满屏幕
uni-微信小程序 图片铺满屏幕 在img标签里添加mode="widthFix" <image src="" mode="widthFix&q ...
- 微信小程序中如何将图片铺满屏幕,作为背景图片
背景图片的制作 我相信有很多人和我一样,在制作背景图片是遇到了困难,比如图片为何显示扭曲,不是按给与图片大小显示的,又比如为何图片无法置顶显示,而是有一定的空间隔开等,在此我会演示如何制作一个背景图片 ...
- android videoview视频铺满屏幕
打开源码,VideoView本质是封装了SurfaceView+MediaPlayer.... 铺满屏幕的方法网上也有很多,个人看了源码,也找到一个方法,分享之: 首先当然是videoview布局,m ...
最新文章
- 程序员吐槽:在阿里工作带来光环,在京东却带来负面影响!
- ELK的What files do you want me to watch? Exiting: no modules or inputs enabled and configuration
- 文献学习(part34)
- 【C++】C++中头文件的使用
- TensorBoard:嵌入可视化
- rpg制作大师2003_RPG制作大师MV 我们一起做游戏(十四)
- Git:撤销回滚操作
- [教程]centos卸载、安装mysql(源码编译安装方式)
- 光伏发电最大功率点(MPPT)跟踪技术
- CIDetector 边缘识别
- 什么是软件测试中的探索性测试(完整指南)(三)
- APP测试面试题总结
- golang 腾讯通用OCR 文字识别 Api 调用
- linux终端无法输入大写字母,linux不能打大写字母
- 专利代理人的真实工作状况
- App如何生成下载二维码?扫码即可下载App
- FTP:vsftpd中的local_umask和anon_umask
- elementUI textarea 禁止拉伸
- 微信小程序 文字下标_微信小程序开发中,怎么给导航栏图标下面加上文本?...
- 搭建Ethereum以太坊测试网络Rinkeby节点
热门文章
- BIV+CSS网页的标准化布局
- 高中国际班ap计算机课程内容,关于国际高中课程AP课程,你想知道的都在这里了...
- 一文读懂云计算:发展历程、概念技术与现状分析
- Android invalidate、requestLayout
- 【牛客网java练习错题笔记】 --Java基础打卡day002
- php jmail实例,ASP_asp jmail发邮件 详细解析,发个个比较详细的asp与jmail 实 - phpStudy...
- kaggle竞赛入门:titanic数据预测学习(翻译)
- 绿色小巧——WebPlayer2009网络播放器发布
- 程序人生【2】 论嵌入式架构的重要性
- 新做的网站怎么做seo优化推广,让搜索引擎快速收录的方法