Unity VRAR Unity播放全景视频及优化极点变形twist问题
2016年是VR元年,这一年度多少少做了点东西,都是关于VR&AR的,虽然现在是冷冬期,个人认为前景还是有的,只不过会曲折前进,工业革命还分好几次呢,对吧!
好了,最近比较空闲,会整理一些VR&AR的一些经验。
这一篇会讲一下如何在Unity中播放全景视频,以及对全景视频的优化。
楼主写这篇教程一用ouclus 为例。
一、Unity播放视频
新建一个工程,写放进去一个全景视频,如果放不进去就安装个quicktime,这个具体的网上有很多前辈已经写了教程,这里我就不多说了,导入视频后显示成这样:
如果显示成白的,就是没有导入成功。
播放视频我们这里用的Unity自带的MovieTexture,条件好的话可以使用Untiy的插件AV Pro.
我们新建一个场景,场景中新建一个Sphere,命名为UntiySphere,
然后新建一个材质,这个材质的shader设置成Particles/Alpha Blended,把这个材质给到UnitySphere,然后把全景视频拖到Particle Texture上
然后新建一个脚本,叫做PlayMovie,加入下面两行代码:
MovieTexture mov = (MovieTexture)GetComponent<MeshRenderer>().material.mainTexture;mov.Play();
将此脚本挂到UnitySphere上,然后将相机的Transform Reset,这个操作是把相机放到原点,坐标旋转置为0,大小设为1,
同样我们把UntiySphere的Transform也Reset,然后将大小改到3,就是把相机包含到球里面。
我们连接好Ouclus,将Untiy的PlayerSettings设置为VR Supported,ouclus,如下图所示:
然后我们运行,就可以看到播放的全景视频
戴上oculus头显可以360度自由旋转。
当然到这里你可能疑问,为啥没有声音,这里很简单,在UnitySphere上添加组件AudioSource,
然后把全景视频下的音频文件拖进去,让它自动播放:
好了播放去全景视频就是这么简单,代码只需要两行就好了。
二、全景视频的优化
但是这里我们往头顶上看的时候会发现一个问题,头顶的图片看的不是连接自然的,能看到明显的缝隙,如图:
那下面我们就来优化这个问题,有三种思路:
1.从Untiy这边解决
从Untiy这边解决就是,我们不用Untiy自带的Sphere,因为它自带的贴图uv分部不均匀,极点会产生Twist效果,我们自己使用Mesh建立一个自己的Octahedron球,就是正八面体拆分的球,然后贴图吻合,材质我们使用跟上面一致的,具体这个球的怎么建立的详见我之前写的关于球的两篇博客:
Mesh画球 Mesh给球贴图
然后我们播放全景视频的代码做稍稍改动:
// Use this for initializationIEnumerator Start(){//此处等待是为了保证Mesh创建球的时间,实际根据电脑性能或调整脚本执行顺序即可忽略yield return new WaitForSeconds(1f);MovieTexture mov = (MovieTexture)GetComponent<MeshRenderer>().material.mainTexture;mov.Play();}
这样运行后的效果如图:
2.从模型发面解决
上面这种方法是基于Untiy原生的改变解决问题,如果你觉得太麻烦的话就不需要如此做,找模型制作的同事帮忙制作了一个比较规则的球,它的uv贴图展开的特别均匀,如图所示:
直接把场景中的UntiySphere替换成模型的ball,其它的一样,这样运行的结果如图:
这样也能达到一样的效果,性能上还省了我们Untiy创建球的时间,空间上这个模型也不大才69kb
与第一种比起来第二种更好,但是mesh的底层研究知道肯定比不知道好。
3.替换MeshFilter
Unity VRAR Unity播放全景视频及优化极点变形twist问题相关推荐
- Unity中使用AVproVideo播放全景视频(HTCVIVE)
Unity中使用HTCVIVE播放全景视频(AVProVideo插件) 1.前言 刚入职第一周做了一项目小demo,接下来给大家分享一下我的感悟吧! 1.1.Unity中播放全景视频有很多种方法,但都 ...
- Unity硬解播放8k视频
Unity硬解播放8k视频 1,不用涉及什么代码实现的硬解8k,(自己动手操作过了的,文采是短板看个大概就行,等有空了再去优化语句),解决了的请点个赞,遇到我写错了的麻烦提醒我一下,大佬请自动忽略: ...
- Unity使用AVProVideo播放透明视频
目录 一.目的 1.想知道:Unity使用AVProVideo播放透明视频 二.参考 1.[Unity3d]在Unity3d中播放视频:AVPro Video的使用 三.注意: 1.最终发现:还是使用 ...
- openGL ES进阶教程(五)制作一个简单的VR播放器,播放全景视频
之前写过全景(VR)图片,和用openGL ES+MediaPlayer 渲染播放视频+滤镜效果 这一篇就在之前的基础上实现一个最简单的VR播放器,播放全景视频. 概述: 全景视频是一种用3D摄像机进 ...
- UE4中如何播放全景视频/全景视频如何在VR设备中播放
UE4中如何播放全景视频/全景视频如何在VR头显中播放 1.全景视频的播放与普通视频在UE4中播放的前序流程基本一致 2.在项目的Content下新建一个Movies文件夹,把装备好的全景视频放进去 ...
- Unity 渲染 Android播放的视频画面
码字不易,转载请注明出处喔 https://blog.csdn.net/newchenxf/article/details/119565585 1. 前言 Unity本身可以直接播放本地视频或网络视频 ...
- 流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频
一.直播与点播 直播:在我的理解中是实时录制的内容,类似各个晚会的实时直播过程,在现场采集图像的同时传输影像到网络上. 点播:是提前录制完成的内容,类似某些直播平台上根据观众的需求播放某些电影或经典电 ...
- GLSurfaceView+openGL播放VR视频/全景视频(VR解码器)
OpenGL ES/SDL渲染,FFmpeg :VR分屏之OpenGL-OpenGL ES来播放视频.MediaPlayer+GLSurfaceView+openGL (推荐 )MD360 VR- ...
- 如何使用Autopano Video Pro进行全景视频拼接?
from:http://news.expoon.com/c/20160816/15281.html 如何使用Autopano Video Pro进行全景视频拼接? 全景摄影一直很受欢迎,但是很少有摄影 ...
最新文章
- java消息推送怎么实现_调用钉钉接口实现机器人推送消息
- 五十七、教用Python中的turtle海龟画图(下篇)
- Boost:自定义静态向量
- 徐州事业单位计算机软件类,徐州计算机办公应用软件
- 括号的匹配(表达式的合法性检查)
- Keras-数据准备
- gearman初探(一、编译和安装)
- 实现verilog设计控制交通灯
- labview报表生成工具包_后台开发java 常见工具包 netty、mq 、分布式锁等,干货
- Django之modelform
- iOS could not set nil as the value for the key
- id门禁卡复制到手机_手机NFC也可以刷ID卡门禁?无聊测试居然成功了!
- 如何解决windows资源管理器已停止工作?两种方法教会你
- vue-cli 项目打包后 代理接口报404错误 解决办法!
- 最近看到需要去学习的点(持续记录)
- Overload resolution ambiguity. All these functions match. kotlin 开发问题日常记录
- python决策树算法代码_决策树算法的Python实例
- Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6 Show in File Show i
- Matplotlib 多子图绘制
- Django实现简单网页弹出警告
热门文章
- 短视频拍摄5大景别及11种运镜手法,新手必备拍摄干货丨国仁网络资讯
- 微波雷达传感器感应模块,智能安防过滤雨水树叶干扰技术应用
- PageHelper处理分页问题,total总数不对
- 港大火星实验室最新工作:用于精确实时3D SLAM的高效概率自适应体素地图
- 大于2TB的卷的知识.主要关于windows, EFI,GPT
- 社交网络分析方法以及基本图例
- RGBD相机的标定和图像配准
- JAVA基于局域网的聊天室系统(源代码+论文)
- elementUI的input使用扫描枪,回显值后重新刷新页面
- 思科计算机网络第五章考试,思科第一学期第五章试题和答案