自从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全景视频播放器相关推荐

  1. Android 全景视频播放器(VR视频播放器探索二)

        上次随便写着玩的  http://blog.csdn.net/ai_yong_jie/article/details/51159367   Android 全景视频播放器(VR视频播放器探索一 ...

  2. Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频

    Android VR Player(全景视频播放器) [6]:视频列表的实现-本地视频 (本篇博客参考<Android第一行代码(第二版)>中关于RecyclerView的部分) 列表的实 ...

  3. Atlas 200 DK开发者套件环境部署(1.0.9.alpha)极简版

    Atlas 200 DK开发者套件环境部署(1.0.9.alpha)极简版 前言 Atlas 200 DK开发者套件介绍 环境部署介绍 资源要求 开发环境部署 安装Docker 获取镜像(两种方法任选 ...

  4. 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 什么,7 ...

  5. 10分钟手撸极简版ORM框架!

    最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...

  6. 美团推出极简版 为用户提供“米面粮油”等生活用品采购服务

    近日,有用户反馈,安卓应用商店显示,美团更新推出了极简版,对主应用的功能进行了删减,保留了美团主应用中涉及生活用品采购的相关业务.用户在打开极简版后,首页会呈现出采购蔬果.米面水油等生活用品的购买入口 ...

  7. python3web库_基于 Python3 写的极简版 webserver

    基于 Python3 写的极简版 webserver.用于学习 HTTP协议,及 WEB服务器 工作原理.笔者对 WEB服务器 的工作原理理解的比较粗浅,仅是基于个人的理解来写的,存在很多不足和漏洞, ...

  8. openGauss 极简版安装

    openGauss 官网   openGauss 下载地址 支持的操作系统 ● ARM:   ● openEuler 20.03LTS(推荐采用此操作系统)   ● 麒麟V10   ● Asianux ...

  9. Underscore源码阅读极简版入门

    看了网上的一些资料,发现大家都写得太复杂,让新手难以入门.于是写了这个极简版的Underscore源码阅读. 源码: github.com/hanzichi/un- 一.架构的实现 1.1:架构 (f ...

最新文章

  1. 零起点学习WPF之《WPF揭秘》读书笔记(7)——第三章 变更通知
  2. c嵌入python类获取返回值
  3. SitemapBaiduspider
  4. 网络营销过程中如何避免网站的过度优化情况的发生?
  5. 2021蓝桥直播课-软件类-本科组
  6. RxSwift之深入解析dispose源码的实现原理
  7. C语言typedef与#define的区别
  8. Golang 的 “omitempty” 关键字略解
  9. 泽元网站内容管理系统 (简称ZCMS)
  10. 闭环控制 matlab仿真,反馈闭环控制系统Simulink仿真(带电流补偿的电压内环,直流调速)...
  11. MongoDB find查询语句详解
  12. 声呐直线阵正交混频实验(HEU信息与信号处理创新实践项目一)
  13. 电风扇 DIY闪字发光小风扇 休闲懒人鞋 无叶塔扇 空调扇
  14. 软件测试技术之APP专项测试方法汇总
  15. 想要做好自媒体?大周给你分享几点心得
  16. 如春日细雨般的缠绵,浸润心扉
  17. python的环境配置
  18. 常见的几个非关系型数据库(NoSQL)、非关系型和关系型的区别
  19. 第四章 数据库安全性
  20. C语言编程齿轮轮廓线坐标,【100分高分】如何用C语言画齿轮?

热门文章

  1. iOS 测试利器:idb
  2. 【技术篇】日常网站App的用户登录,你懂了吗
  3. libmodbus官方手册中文翻译
  4. 读Intel Optane DC持久内存模块的基本性能测量有感
  5. 我的武功太争气,居然能自己修炼(二)
  6. 电压(主要介绍和计算方法)
  7. LHL算法入门经典 例题3-3最长回文子串
  8. 7-8 打死我也不说!
  9. InnoDB双写缓冲
  10. 华为云重大变革:CloudAI 升至华为第四大 BG ,火力全开