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-lightmapped
        Pass {

            Lighting Off
            Cull 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

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DvLee1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值