首页 文章

如何使用Google Cardboard SDK for Unity创建VR视频播放器

提问于
浏览
7

我刚刚下载了Google Cardboard SDK以实现统一 . 我很好,能够创建VR项目 . 安装很好,一切正常 .

我是VR Apps的诺布 . 刚刚介入VR应用程序 .

我正计划为Android创建我自己的VR Enabled Video Player,就像默认的Google Cardboard Youtube播放器一样 .

任何人都可以建议我链接或指导我开发此应用程序 .

5 回答

  • 11

    Scott Driscoll的回答完全有效 . 我有一些初步的问题让Easy Movie Texture Unity插件为我工作,但最终想通了,它完美无缺 . 我现在在iPhone 6上的球体内部运行360视频作为纹理 . 我不得不说,我不认为它会发生 .

    在Mac上工作,这就是我所做的:

    • 从Unity资源商店下载Easy Movie Texture插件

    • 从Assets / EasyMovieTexture / Scene打开Demo Sphere演示场景

    • 为项目创建一个新的(空)预制件,并将Sphere GameObject从Demo Sphere场景拖动到预制件上 .

    • 重新打开Cardboard场景并将新的videosphere预制件拖动到层次结构中 .

    • 在Quicktime中打开源360视频

    • 文件 - >导出 - > 720p

    • 将文件扩展名从'.mov'更改为'.mp4'

    • 将新的mp4文件拖到项目的Assets / Streaming Assets目录中 . 注意:不要通过菜单系统导入,因为这会强制Unity转换为OGG .

    • 在您的videosphere GameObject的"Media Player Ctrl"脚本组件上,找到"Str_File_Name"字段并提供FULL文件名 . 确保将扩展名包含在字符串"mymovie.mp4"中 .

    很确定这就是一切 . 希望它可以帮助其他人坚持这个问题 . 谢谢Scott Driscoll!

    最后一点,您只能在手机上观看视频,而不能在编辑器中预览 . 如果它不能以这种方式工作会更好,但实际上一旦分辨率和放置的初始问题得到解决,我不需要每次在编辑器中运行场景时都能看到视频 .

  • 8

    以下是我们如何执行此操作的主要步骤:

    • 在相机周围添加一个带有equirectangular UV贴图和向内法线的球体 .

    • 购买插件以在该球体的纹理上播放电影 . 我推荐Easy Movie Texture .

    • 使用与平台兼容的mp4s或ogg vorbis文件 . 这取决于手机和操作系统 .

    详细信息:http://immersivetechblog.foundry45.com/2015/07/31/implementing-360-video-in-unity-for-gear-vr-and-cardboard/

  • 1

    我看到了上面的答案,但所有这些都需要Easy Movie Texture Unity插件或编码你的方式..还有另一个简单的解决方案,这也不需要你购买该资产或代码你的方式.. Oculus提供了一个已经构建的免费样本框架,您可以毫不费力地使用它 . 下面的解决方案显示了如何创建照片查看器以及Unity的视频查看器 .

    构建您的360度PhotoViewer:

    • 转到Blender并删除所有prexisitng对象(如果有的话)并创建一个icosphere并将细分增加到一个看起来更像6之类的球并点击Generate UVs(这两个选项都可以在create选项卡下面的设置中找到)添加到球体)并转到编辑并选择翻转法线,以便您可以看到内部而不是外部并保存它 .

    • 将该icosphere保存的文件放入Unity中的assets文件夹中 .

    • 下载GoogleVR SDK并将GoogleVR插件带入您的资源文件夹..(您可以在此处下载:https://developers.google.com/vr/unity/

    • 删除默认存在的主摄像头和方向灯 .

    • 将您的icosphere资产带入您的项目 .

    • 将您的资产文件夹中的GVR Main带入您的项目:GoogleVR插件 - > Legacy - > Prefab - > GVR Main

    • 拍摄任何panaroma或360照片并将其放入资源文件夹中 .

    • 将此照片放在资源文件夹中,并将其放在场景中的icosphere上方,然后点击播放 . 你应该可以看到你的360度照片 .

    Build 你的360度MoviePlayer:

    • 步骤1相同 .

    • 现在转到Oculus开发人员控制台并下载此文件并将其带到您的资源文件夹 . https://developer3.oculus.com/downloads/game-engines/1.5.0/Oculus_Sample_Framework_for_Unity_5_Project/

    • 将您上面下载的此文件带到资源文件夹 .

    • 在assetsFolder中查找MoviePlayer,将其带入项目中 .

    • 将您下载的icosphere添加到您的资源文件夹中并稍微缩放以便您可以正确查看 .

    • 复制MoviePlayer示例脚本和Audio Source在MovieSurface的组件中从项目中添加到场景中的球体组件中,也摆脱了球体组件中的动画师 .

    • 将MovieSurface中Mesh Renderer下的Materials中的Movie Player材质添加到球体顶部 .

    • 现在这个球体形成了你的360度电影播放器,所以将它作为资产存储在资产文件夹中 .

    • 创建一个新场景,删除定向灯并将保存的icosphere资源带入此场景,并将主摄像机移动到中心位置 .

    • 删除非必需资产以清除项目中除MoviePlayer,插件和流媒体资产之外的一些空间 .

    • 您必须将所需的mp4转换为ogv文件以及插件才能在VR中播放,并将mp4和ogv文件带入您的流媒体资源文件夹并更改MovieName并单击“播放” . 你应该可以看到你的360度视频播放 .

    *要在您的设备中播放它,只需转到构建设置并选择所需的平台并删除所有场景,然后只需添加打开场景并单击播放器设置下其他设置中支持的虚拟现实 . 要在Android手机中播放它,您需要像上面一样下载GoogleVR SDK并将其放入您的资源文件夹并在资源文件夹中找到GVRViewerMain并将其带入场景并取消选中您在上面支持的虚拟现实并且只需构建并在你的设备中运行整个事情(当你在Unity中玩游戏时,你应该可以在游戏模式中看到视图) . 您应该可以在各自的档位中看到视频 .

    • 只有's also a video tutorial available but I' m只能与我的新StackOverFlow配置文件共享2个链接 .
  • 3

    我无法帮助你使用Unity,但在java中,你可以用OpenGL-ES创建一个纹理:

    private static int GL_TEXTURE_EXTERNAL_OES = 0x8D65;
    ....
    GLES20.glGenTextures(1, textureHandle, 0);
    GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, textureHandle[0]);
    

    用它来创建表面纹理和表面:

    SurfaceTexture surfaceTexture = new SurfaceTexture(textureHandle[0]);
    Surface surface = new Surface(surfaceTexture);
    

    然后将该表面传递给android.media.MediaPlayer:

    MediaPlayer mediaPlayer = new MediaPlayer(getContext(), uriToMyMediaFile, surface);
    

    将该纹理绑定到场景中的正方形并在每帧中调用它:

    surfaceTexture.updateTexImage()
    

    当您调用mediaPlayer.start()时,视频将播放;

    如果Unity允许您编写自己的java代码以在后台运行,那么如果将该纹理绑定到Unity的表面,这应该可行 .

    如果您有一个无法使用mediaPlayer播放的视频流(如实时视频聊天等),您也可以使用android.media.MediaCodec的表面,但还有更多的设置工作 .

  • 1

    对于Unity 5.6及更高版本,这已变得非常简单 .

    • 你只需要一个倒置法线的球体,你可以在网上找到它,或者只是进入搅拌机并制作一个IcoSphere并翻转法线,或者你可以使用着色器在普通球体上做同样的事情 . 在任何一种情况下,都为着色器使用Unlit纹理 .

    • 在默认使用Unity的组件中添加一个视频播放器到此球体 .

    • 将任何360度视频添加到此视频播放器 . 您也可以添加在线链接 . 并且它在从GoogleVR到SteamVR的各种平台上都能很好地发挥作用 .

    唯一的缺点是,它默认只播放单视场图像/视频,需要进行一些调整才能运行立体图像/视频 .

相关问题