Unity3D制作极简版VR全景视频播放器
自从Unity5.6.4还是2017的版本开始,官方提供了兼容移动端和Windows端的视频播放器控件——Video Player,下面介绍如何使用这个控件,制作VR播放器。
1、新建空白场景,新建球体Sphere,Camera放置球心位置;
2、给Sphere添加Video Player视频播放控件、Audio Source 音频播放控件,并参照下图设置参数;
选择视频路径后,点击Unity的播放按钮即可播放视频,视频会贴在球体外表面播放。
问题来了,摄像机看不到视频内容,因为视频仅在球体外表面播放,而我们的摄像机放置在球里面,只能看到球内表面。懂得全景视频原理的应该知道,我们需要让视频在球体内表面播放,而不是外表面,所以接下来,需要把视频投影在球内部。
3、新建材质球命名为“InSideSphere”,添加到Sphere上,材质球的Shader选择”Custom/Unlit_SphereInside”(文件可参考Demo工程)
shader的作用就是把视频渲染到球内表面
Shader "Custom/Unlit_SphereInside" {Properties {_MainTex ("Base (RGB)", 2D) = "black" {}}SubShader {Tags { "RenderType"="Opaque" }LOD 100// Non-lightmappedPass {Lighting OffCull Front // 剔除球外表面的渲染SetTexture [_MainTex] { combine texture } }}
}
在渲染的时候,默认情况下是只有朝向摄像机的面才会被渲染,可以告诉Unity,我想渲染哪一个朝向的面,使用Cull命令在计算体积阴影的时候会用到对Cull的操作来计算和物体相交的投影
Cull 有三种
Cull Off 不剔除
Cull Back 剔除背面(物体背向摄像机的面)
Cull Front 剔除前面 (物体朝向摄像机的面)
问题又来了,视频渲染到球体内表面,图像反过来了?接着看下一步
4、给Sphere添加 “SphereMirror.cs” 脚本(文件可参考Demo工程);
脚本作用是通过修改UV,把视频水平翻转过来
void Start () {Vector2 [] vec2UVs= transform.GetComponent<MeshFilter>().mesh.uv;for(int i = 0; i < vec2UVs.Length; i++){vec2UVs[i] = new Vector2(1.0f -vec2UVs[i].x, vec2UVs[i].y);}transform.GetComponent<MeshFilter>().mesh.uv = vec2UVs;
}
5、最后给Camer添加MouseMove脚本,实现通过鼠标拖动控制camera朝向,模拟转头观看(脚本请查看demo);
6、完毕!
Demo地址:https://download.csdn.net/download/killfunst/10336832
经长时间测试,使用官方videoplayer在surface pro上播放4k全景视频,非常卡顿。后来改用AVPro Video作为windows版本的播放器。
AVPro Video 1.8.2 体验版下载地址:https://download.csdn.net/download/killfunst/10303494
如需要正式版本,请联系QQ:464550934
Unity3D制作极简版VR全景视频播放器相关推荐
- Android 全景视频播放器(VR视频播放器探索二)
上次随便写着玩的 http://blog.csdn.net/ai_yong_jie/article/details/51159367 Android 全景视频播放器(VR视频播放器探索一 ...
- Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频
Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频 (本篇博客参考<Android第一行代码(第二版)>中关于RecyclerView的部分) 列表的实 ...
- Atlas 200 DK开发者套件环境部署(1.0.9.alpha)极简版
Atlas 200 DK开发者套件环境部署(1.0.9.alpha)极简版 前言 Atlas 200 DK开发者套件介绍 环境部署介绍 资源要求 开发环境部署 安装Docker 获取镜像(两种方法任选 ...
- 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 什么,7 ...
- 10分钟手撸极简版ORM框架!
最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...
- 美团推出极简版 为用户提供“米面粮油”等生活用品采购服务
近日,有用户反馈,安卓应用商店显示,美团更新推出了极简版,对主应用的功能进行了删减,保留了美团主应用中涉及生活用品采购的相关业务.用户在打开极简版后,首页会呈现出采购蔬果.米面水油等生活用品的购买入口 ...
- python3web库_基于 Python3 写的极简版 webserver
基于 Python3 写的极简版 webserver.用于学习 HTTP协议,及 WEB服务器 工作原理.笔者对 WEB服务器 的工作原理理解的比较粗浅,仅是基于个人的理解来写的,存在很多不足和漏洞, ...
- openGauss 极简版安装
openGauss 官网 openGauss 下载地址 支持的操作系统 ● ARM: ● openEuler 20.03LTS(推荐采用此操作系统) ● 麒麟V10 ● Asianux ...
- Underscore源码阅读极简版入门
看了网上的一些资料,发现大家都写得太复杂,让新手难以入门.于是写了这个极简版的Underscore源码阅读. 源码: github.com/hanzichi/un- 一.架构的实现 1.1:架构 (f ...
最新文章
- 零起点学习WPF之《WPF揭秘》读书笔记(7)——第三章 变更通知
- c嵌入python类获取返回值
- SitemapBaiduspider
- 网络营销过程中如何避免网站的过度优化情况的发生?
- 2021蓝桥直播课-软件类-本科组
- RxSwift之深入解析dispose源码的实现原理
- C语言typedef与#define的区别
- Golang 的 “omitempty” 关键字略解
- 泽元网站内容管理系统 (简称ZCMS)
- 闭环控制 matlab仿真,反馈闭环控制系统Simulink仿真(带电流补偿的电压内环,直流调速)...
- MongoDB find查询语句详解
- 声呐直线阵正交混频实验(HEU信息与信号处理创新实践项目一)
- 电风扇 DIY闪字发光小风扇 休闲懒人鞋 无叶塔扇 空调扇
- 软件测试技术之APP专项测试方法汇总
- 想要做好自媒体?大周给你分享几点心得
- 如春日细雨般的缠绵,浸润心扉
- python的环境配置
- 常见的几个非关系型数据库(NoSQL)、非关系型和关系型的区别
- 第四章 数据库安全性
- C语言编程齿轮轮廓线坐标,【100分高分】如何用C语言画齿轮?