Unity3D制作极简版VR全景视频播放器

article/2025/8/22 3:28:18

自从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


http://chatgpt.dhexx.cn/article/Kfl7OOQL.shtml

相关文章

基于threejs,完成一个简单的全景图播放器

直接上代码 CameraControls.js相机控制器 import * as THREE from three;function CameraControls(object, domElement, cb, update) {this.object object;this.domElement domElement ! undefined ? domElement : document;this.enabled true;this.lookSpeed 0.1;this.…

使用SceneKit编写VR全景播放器

最近用SceneKit做了全景看房的功能&#xff0c;现总结下如何实现的。 先看下最终的效果&#xff1a; gif1.gif VR图片全景播放器有以下功能: 360度手势滑动&#xff0c;缩放陀螺仪分屏&#xff08;VR眼镜&#xff09;热点hotpot头控/eyepick 手势滑动&#xff0c;缩放&#…

AVProVideo☀️五、播放全景视频

🎊 商务合作:https://skode.cn/file/businesscard/wechat.jpg 🎥 本文由 星河造梦坊公司官方 原创! 🏅 如果你有技术问题或项目开发,都可以加上方的联系方式,和我聊一聊你的故事🧡 文章目录 🟥 360球形全景视频🟧 360立方体全景视频🟨 360天空盒全景视频🟩…

[OpenGL]从零开始写一个Android平台下的全景视频播放器——3.1 全景视频是如何实现的

Github项目地址 为了方便没有准备好梯子的同学&#xff0c;我把项目在CSDN上打包下载&#xff0c;不过更新会慢一些 回到目录 恭喜Martin同学获得由CSDN颁发的“更新慢慢慢”荣誉称号 全景视频有很多种类&#xff0c;例如Sphere全景&#xff0c;Skybox&#xff08;Cubemap&…

VR全景播放器 AvPro Video

最近项目需要&#xff0c;使用Unity开发VR全景播放器&#xff0c;包括PC端和VR一体机端&#xff08;Android&#xff09;。Unity5.6开始支持VideoPlayer&#xff0c;使用自带的VideoPlayer&#xff0c;很顺利把播放器完成了&#xff0c;使用了很长时间&#xff0c;一直没什么性…

FFmpeg 开发(07):FFmpeg + OpenGLES 实现 3D 全景播放器

该文章首发于微信公众号:字节流动 FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放 FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放 FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放 FFm…

html全景直播播放器,Insta360 Player(全景视频播放器) V2.3.6 官方版

Insta360 Player是一款性能强劲且专业的全景视频播放器&#xff0c;它支持播放Insta360全景相机拍摄的全景视频和图片&#xff0c;并且支持本地视频的播放&#xff0c;操作非常的简单&#xff0c;有需要的用户可以下载来使用&#xff0c;此软件支持播放 Insta360全景相机产生的…

全景播放器,免安装支持全景视频

全景图片播放器&#xff0c;同时支持全景视频&#xff0c;可直接拖入页面查看。免安装全景播放器,文件不要大于20M Hpano 3D全景播放器是一款免安装可以720度互动浏览的全景图片查看器&#xff0c;通过拖球形全景图片或视频文件进行预览&#xff0c;720度的全方位图片查看器让你…

android 简单的exoplayer全景播放器

全景播放器网上一搜也是一堆一堆的&#xff0c;还有google推出的vrsdk&#xff0c;所以也没啥好说的&#xff0c;就简单记录一下 实现全景主要用到的还是opengles&#xff0c;只要用的开源播放器有setSurface(Surface surface)这个函数&#xff0c;就可以不改播放器源码实现 …

全景播放器

在github上发现的&#xff0c;绿色免安装&#xff0c;完全免费&#xff0c;只有一个界面三个按键&#xff0c;超级简单。里面带来几个全景视频和图片的demo&#xff0c;想体验全景的可以直接打开看看。想换片的时候按键盘的空格键既可以返回主界面。视角查看用鼠标左键点击拖动…

OpenGL ES_手把手教你打造VR全景播放器

OpenGL ES _ 入门_01OpenGL ES _ 入门_02OpenGL ES _ 入门_03OpenGL ES _ 入门_04OpenGL ES _ 入门_05OpenGL ES _ 入门练习_01OpenGL ES _ 入门练习_02OpenGL ES _ 入门练习_03OpenGL ES _ 入门练习_04OpenGL ES _ 入门练习_05OpenGL ES _ 入门练习_06OpenGL ES _ 着色器 _ 介…

播放全景视频【一】:用unity Video Player视频播放器来播放360全景视频

先上图为敬 本文测试环境&#xff1a; Win10 Unity 2020.3.40 Pico G2 4k VR一体机 一、使用Video Player心理负担比较小 使用Unity自带的【视频播放器&#xff08;Video Player&#xff09;】来播放360全景视频的【好处】&#xff1a; 1、控制逻辑与2D视频相同&#xff0c…

利用FFmpeg和OpenGL ES 实现 3D 全景播放器

前言 我们已经利用 FFmpeg OpenGLES OpenSLES 实现了一个多媒体播放器&#xff0c;本文将基于此播放器实现一个酷炫的 3D 全景播放器。 全景播放器原理 全景视频是由多台摄像机在一个位置同时向四面八方拍摄&#xff0c;最后经过后期拼接处理生成的。 用普通的多媒体播放器播…

航空客运订票系统(C语言,软件用的DEV)

这两天整理之前的作业代码&#xff0c;把自己一点一点敲出来的系统又看了一下&#xff0c;挑几个发出来供大家参考。想要源码、报告可以找我啦&#xff0c;代码的注释之前写的都是非常详细的&#xff01; 但是不是无偿的啦&#xff08;不坑&#xff0c;一杯奶茶喽&#xff0c;不…

数据结构_航空客运订票系统(C实现)

文章目录 总述代码粗糙版修理版 还可以修正的点:余票不足时仍然提示还剩下几张(而不是直接拒绝该用户的订票操作)对于购票者的id 不单单是说约定一个可以不重复的主键(命名规则),而且还要辅以必要的检查违约功能 总述 在这里插入代码片 1&#xff0e; 问题描述&#xff1a;(题…

航空机票订票系统

项目介绍 主要功能是使订票系统可以录入航班情况&#xff0c;查询某个航线的情况、办理订票、办理退票、修改航班信息、查询订票信息等。完成此系统&#xff0c;需要综合运用数据结构课程中学到的几种典型数据结构&#xff0c;以及程序设计语言&#xff08;C语言&#xff09;&…

【数据结构应用】航空客运订票系统

目录 前言 一、作业要求介绍 二、各个函数的实现 1.头文件总结需要的功能 &#xff08;1&#xff09;结构体的定义 &#xff08;2&#xff09;各个功能的函数 2.各个函数的具体实现 &#xff08;1&#xff09;初始化 &#xff08;2&#xff09;打印航班信息表 &#xff08;4&…

Java实现航空机票订票系统

1、要求&#xff1a; &#xff08;1&#xff09;设计每条航线所涉及的信息&#xff0c;如终点站名、航班号、飞机号、飞机周日&#xff08;星期几&#xff09;、乘员定额、余票量、订定票的客户名单&#xff08;包括姓名、订票量、舱位等级1&#xff0c;2或3&#xff09;等&…

c语言航空订票系统程序设计,C语言航空订票系统

C语言航空订票系统 这 是 一 篇 用 C 语 言 编 写 的 航 空 订 票 系 统 的 论 文 。 该 系 统 使 用 的 是十 字 链 表 结 构 &#xff0c; 包 含 有 订 票 &#xff0c; 退 票 &#xff0c; 录 入 航 班 信 息 &#xff0c; 查 询 航 班 余 票 &#xff0c; 查询 个 人 订 票…

航空订票系统C++课程设计

航空订票系统 项目实践完整源码 前言一、功能演示二、代码总结 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 编写程序模拟航空订票系统&#xff0c;要求实现以下功能&#xff1a; ① 允许增、删、改航班信息&#…