Unity中使用AVproVideo播放全景视频(HTCVIVE)
Unity中使用HTCVIVE播放全景视频(AVProVideo插件)
1、前言
刚入职第一周做了一项目小demo,接下来给大家分享一下我的感悟吧!
1.1、Unity中播放全景视频有很多种方法,但都是大同小异,播放视频都需要有一个载体,我们看电视时,是屏幕,看电影时,是影院的画布,SO,Unity中播放视频可以是UI 也可以是Cube等,全景视频的每一帧就是一张全景图片,所以我们用一个球来当做载体。
1.2、你可以使用MoveTexture,或者PlayerVideo来做,原理都是一样的,获取球的材质球,把视频作为纹理贴上去,然后把摄像机放到球的中心,然后有API控制播放。但是要注意球的内部是看不到的所以要自己写一个Shader来让球的内部可以看到
Shader代码如下:
Shader "Unlit/UnlitShader"
{Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{Tags { "RenderType"="Opaque" }LOD 100Cull Front //剔除正面,用于看到球体的内Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag (v2f i) : SV_Target{float u_x=1-i.uv.x; //因为球的内部是像镜子一样反着的float u_y=i.uv.y; //所以要改变其uv坐标i.uv=float2(u_x,u_y); //只改变x,就行了,fixed4 col = tex2D(_MainTex, i.uv);UNITY_APPLY_FOG(i.fogCoord, col);return col;}ENDCG}}
}
这种方法网上都有,我就不详细介绍了(经测试此方法可能存在问题!)。
1.3、我一开始使用以上两种方法,但是后来都因为各种原因报错,很无奈,于是就是找到了这个AV插件。哈哈哈,插件AVProVideo可以从Github上下载,地址如下:AVProVideo下载地址,这里面有很多例子,多参考一下。
2、功能制作
2.1首先新建工程将下载的工程导入到工程中,我们可以看到它自带有很多的案例,案例中的视频都是读取的StreamingAssets下的,如果我们想要读取网络上的视频时,我们需要打开Media Player组件将连接复制到上面就行:
在案例8中就是一个全景视频的小Demo可以参考,将视频导入到StreamAssets文件夹下,将球的预制体拖入到场景中,这是插件封装好的,只需要将视频拖上就可以了。
2.2将Htc的位置放到球的中间,运行就行了,此外你也可以加入按钮,或者进度条等下面会具体介绍进度条。
2.3主要还是研究一下Media Player组件的每项功能,我还没研究完就不说了,说一下进度条吧,新建Slider ,Text等
话不多说,直接上代码。
public class VCR : MonoBehaviour {public MediaPlayer _mediaPlayer;public Slider _videoSeekSlider;private float _setVideoSeekSliderValue;private bool _wasPlayingOnScrub;public void OnVideoSeekSlider(){if (PlayingPlayer && _videoSeekSlider && _videoSeekSlider.value != _setVideoSeekSliderValue){PlayingPlayer.Control.Seek(_videoSeekSlider.value * PlayingPlayer.Info.GetDurationMs());}}public void OnVideoSliderDown(){if(PlayingPlayer){_wasPlayingOnScrub = PlayingPlayer.Control.IsPlaying();if( _wasPlayingOnScrub ){PlayingPlayer.Control.Pause();
// SetButtonEnabled( "PauseButton", false );
// SetButtonEnabled( "PlayButton", true );}OnVideoSeekSlider();}}public void OnVideoSliderUp(){if(PlayingPlayer && _wasPlayingOnScrub ){PlayingPlayer.Control.Play();_wasPlayingOnScrub = false;// SetButtonEnabled( "PlayButton", false );
// SetButtonEnabled( "PauseButton", true );} }
}
j脚本挂的如下:
3、结语
播放视频很简单,主要还是看使用HTC交互的功能,在以后的文章中,我将逐渐描述HTCVIVI的各种用法,由于刚开始写博客,可能描述不是很清楚,大家可以加QQ群一块商讨:QQ群319506028;拒绝闲聊,学技术请进。
Unity中使用AVproVideo播放全景视频(HTCVIVE)相关推荐
- 多媒体制作中Unity中使用AVProVideo播放视频播放完成后自动收回
之前使用Unity自带的VideoPlayer组件,发现win10支持很好,win7播放不流畅,现在使用AVProVideo插件. 1.在UI上播放,首先在Canvas里面Creat一个AVPro V ...
- Unity VRAR Unity播放全景视频及优化极点变形twist问题
2016年是VR元年,这一年度多少少做了点东西,都是关于VR&AR的,虽然现在是冷冬期,个人认为前景还是有的,只不过会曲折前进,工业革命还分好几次呢,对吧! 好了,最近比较空闲,会整理一些VR ...
- Unity使用AVProVideo播放透明视频
目录 一.目的 1.想知道:Unity使用AVProVideo播放透明视频 二.参考 1.[Unity3d]在Unity3d中播放视频:AVPro Video的使用 三.注意: 1.最终发现:还是使用 ...
- UE4中如何播放全景视频/全景视频如何在VR设备中播放
UE4中如何播放全景视频/全景视频如何在VR头显中播放 1.全景视频的播放与普通视频在UE4中播放的前序流程基本一致 2.在项目的Content下新建一个Movies文件夹,把装备好的全景视频放进去 ...
- openGL ES进阶教程(五)制作一个简单的VR播放器,播放全景视频
之前写过全景(VR)图片,和用openGL ES+MediaPlayer 渲染播放视频+滤镜效果 这一篇就在之前的基础上实现一个最简单的VR播放器,播放全景视频. 概述: 全景视频是一种用3D摄像机进 ...
- Unity中自制Animation+播放完毕相应事件
一.目的 1.想知道:Unity中自制Animation+播放完毕相应事件 二.参考 1.Unity动画播放结束事件 https://blog.csdn.net/qq_34244317/article ...
- 流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频
一.直播与点播 直播:在我的理解中是实时录制的内容,类似各个晚会的实时直播过程,在现场采集图像的同时传输影像到网络上. 点播:是提前录制完成的内容,类似某些直播平台上根据观众的需求播放某些电影或经典电 ...
- 关于Android中使用WebView播放网络视频不能全屏的问题
之前公司要求的一个项目需要播放网络视频,给的是HTML的地址,所以只能用webView播放,但是,播放的时候点击自带的全屏按钮根本没反应,准确说是只有图标变化了,但是根本没有全屏.在网上找了好多资料, ...
- Unity3D总结记录(四) Unity中控制AudioSourse播放多条不同的声音文件
Unity中,如果需要让播放声音,只需要给游戏对象添加AudioSourse组件即可,但,默认的组件中,仅支持一条音源的播放,如要实现多条音源的播放,可在代码中实现,具体方法如下: 首先在类中申请多个 ...
最新文章
- 独家 | 115个A/B测试的分析结果︰平均提升为4%,大部分缺乏统计检定力
- Android开发--BroadcastReceiver介绍1
- joc杂志影响因子2019_边缘计算 | SCI期刊JoCCASA诚邀专刊稿件
- Json转换值类型字段为空字符串时报错问题
- 工作流实战_14_flowable_已办任务列表查询
- HTML+CSS+JS实现 ❤️ 团队人物图片蜂巢布局❤️
- python网络爬虫的学习
- 性能测试诊断分析与优化培训资料打包下载
- ArcGIS 城市生活区用地适宜性评价(一)
- 图书条形码跟ISBN号互相转换的类
- python中keys是什么意思_python中的key是什么意思
- 【Beta】 第六次Daily Scrum Meeting
- sat考试用计算机,SAT考试怎么选择计算器
- icc校色文件使用教程_Windows7色彩管理显示器ICC设置方法
- Docker Secret加密
- Linux上类似vbs脚本,VBS脚本常用经典代码收集
- 主动降噪相消干涉原理
- 51单片机(8051系列)最小系统图--内部时钟
- 变频泵 计算机控制技术,变频泵站节约能耗的计算机控制技术浅析
- 常见表单反爬虫安全措施解密