网站公告 | 泰斗网校全新上线了,可以和论坛用户登录同步,如果遇到登录问题联系管理员解决
查看: 2598|回复: 0
收起左侧

[已翻译] 如何利用Unity在10分钟内制作一个360°VR应用

[复制链接]

[已翻译] 如何利用Unity在10分钟内制作一个360°VR应用[复制链接]

韩太斗 发表于 2018-4-24 17:22:45 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式 回复:  0 浏览:  2598
翻译:艾涛(mad world)   审校:黄威(横写丶意气风发)
DSC0000.jpg
虚拟现实(VR)激动人心,它也是应用开发的新前沿。
VR有望催生新形式的讲故事方式并引起强烈的情感体验。然而制作VR却令人望而生畏:它花费巨大,而且需要特定的硬件和技巧。
但是情况在改善,因为直观的工具和可负担得起的硬件正使得VR的开发变得可行。本教程将向您展示如何在短短几分钟内利用安卓系统和GoogleCardboard开发一个360°视频应用。另外,这几乎不需要任何代码;)
VR开发不应该是你将灵感融入生活的阻碍。让我们开始吧:


必需物品
以下是我们的购物清单:
一部配置了陀螺仪以便于感知头部移动的安卓手机,操作系统基于KitKat(安卓4.4)及以上。
一个Cardboard头戴式显示器。如果你没有,在亚马逊你能找到很多10美元以下价格的。这个是我最喜欢的。
Unity3D,一个你需要安装在电脑上的跨平台游戏引擎,版本号5.6及以上。我们将利用这个软件去开发我们整个项目。
适用于Unity的GoogleVR SDK,你需要预先下载好。
一个360°录像机。选择一个有360°摄像头的(此处有一个能够装上你手机的)或上网挑一个。
如何构建此应用?
不同于拥有矩形框架的常规视频,360视频是球形的。因此,我们首先需要创建一个球形屏幕来投影我们的360°视频。播放器(或观看者)将位于该球体内,并能够从任何方向观看视频。
下面的步骤将讲解它在罩下工作的原理,以使你感受到你有能力做出自己的更改。详细步骤说明,请参阅视频。

第一步,创建球体
DSC0001.jpg
首先,如果你是从头开始的话,我们先新建一个Unity项目(或者,如果你想把360视频播放器集成到已有项目上就新建一个场景)。把一个场景想象成视频游戏的这一个级别,而一个项目则是一个完整的游戏。
之后,在场景中添加一个球形物体,放置于场景的中心(坐标=0,0,0),半径为50(范围=50,50,50)。摄像机坐标应设置为0,0,0。摄像机就是播放器/观看者的眼睛,因此我们想要它位于球体的中心。摄像机放置于其他位置将会使得视频失真。
一旦摄像机放置到了球体的内部,后者在场景中就不再可见了。别担心,对此有相关解释!事实上,大多数的引擎默认情况下并不渲染3D对象的默认内侧。这是因为我们很少需要看见它们,渲染它们会是一种资源的浪费。下一步我们将解决此问题。
第二步:反转球体的法线
DSC0002.png
我们这种情况,的确需要从内部看到我们的球体。这是这个应用的整个关键所在,因此我们将要把内部转化成外部。
在Unity中,球体并不是真正意义上的球体(什么?我们一直都被骗了!),它们是由成千上万个极小的面组成的多边形。面的外侧是可见的,而内侧则不是。基于这个原理,我们将要编一个程序像翻薄煎饼一样来翻转这些微小的面。
在3D几何学中,我们把这种转换称为《倒转法线》或者《反转法线》。
我们将要用到一个叫着色器的程序,它将应用于球体的材料特性中。在Unity中材料特性控制了对象的外观。着色器是一些小的脚本,基于从材料特性中采集的照明和信息来计算每个像素渲染的色彩。
因此要为球体创建一个新的材料特性,那么我们就需要给这个材料应用新的着色器。我们需要为这个着色器写自定义代码……但是不用担忧,你只需复制粘贴以下的代码:
[size=1em]

[size=1em][size=1em]
[C++] 纯文本查看 复制代码
Shader "Flipping Normals" {
    Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader {
 
        Tags { "RenderType" = "Opaque" }
 
        Cull Off
 
        CGPROGRAM
 
        #pragma surface surf Lambert vertex:vert
        sampler2D _MainTex;
 
        struct Input {
            float2 uv_MainTex;
            float4 color : COLOR;
        };
 
        void vert(inout appdata_full v) {
            v.normal.xyz = v.normal * -1;
        }
 
        void surf (Input IN, inout SurfaceOutput o) {
             fixed3 result = tex2D(_MainTex, IN.uv_MainTex);
             o.Albedo = result.rgb;
             o.Alpha = 1;
        }
 
        ENDCG
 
    }
 
      Fallback "Diffuse"
}




这个小着色器将把球体的每个像素的内侧转变成外侧。现在,在我们的场景内,从内侧看起来我们的球体就像一个巨大的白球。下一步就是将这个白球变成一个视频播放器。

第三步:把你的360°视频放在球体中
这一步你手头上需要有一个360°mp4视频。将其导入项目中,然后将它拖入球体上,之后就是见证奇迹的时刻:一个“视频播放器”组件诞生了;另外,啊哈,视频可以准备播放了。
你可以玩玩像循环和音频之类的设置,另外它也支持视频流!

第四步:设置Google Cardboard
DSC0003.png
在这一步,我们将会让你真正体验到身临其境的感觉。那就是我们想要用VR头戴式显示器进行观看的原因,这就需要一个Google Cardboard。
我们想要利用GoogleVR SDK创造一种“立体”视图(屏幕将分成两部分,两侧都有一些鱼眼效果—每侧对应一只眼睛)。作用在每只眼睛上的鱼眼效果,加上纸板的塑料镜片的扭曲变形效果,给予了你有深度和沉浸感的幻觉:
为了把GoogleVR SDK添加到我们的项目中,请下载和导入这个插件,然后我们将调整一系列安卓设置:
l  转到顶部状态栏menu > File > Build Settings。如果你的新场景还未添加那么请添加,然后在支持平台列表选择安卓。
l  点击SwitchPlatform。当你第一次进行转换时这会花费一段时间。
l  点击PlayerSettings。组件出现在Instructor面板上
在播放器设置的指导者面板上,“其他设置”节下:
l  检查VirtualReality Supported。在Virtual Reality SDKs栏下,选择+图标,然后选择Cardboard将其加入列表。
l  在BundleIdentifier字段中输入包名称(例如,com.yourdomain.demo360)。名称必须是独一无二的,用于将我们的应用与Google Play商店中的其他应用区分开来。
l  将MinimumAPI Level下拉菜单设置为“Android 4.4 Kit Kat’(API level19)”。
之后,从项目浏览器内的GoogleVR\Prefabs文件夹中获取“GvrViewerMain”元素,并拖入到场景中。在检查器中,给出与球体中心相同的位置--(0,0,0)。
GvrViewerMain预设控制着所有VR模式设置,例如调整屏幕适应Cardboard的镜头。它还与你的手机的陀螺仪通信以追踪你的头部运动。当你转过头,相机和360°视频播放器内你看到的画面也会随之转动。
现在当视频播放时你就能够从所有方向去观看,屏幕分成两部分,以容纳Cardboard的两个镜头。

第五步:在安卓上运行此应用
DSC0004.png
最后一步,我们将在安卓手机上运行此应用并分享给朋友们!
有两种方式可以做到:
l  回到File> Build Settings。你可以使用USB数据线将一部安卓手机连接到你的电脑,点击Build & Run。这会直接将此应用安装到你的手机上。
l  另外一个选择是点击Build only。这不会在手机上安装此应用,而是生成一个APK文件。你可以通过email向任何想要尝试这个你刚创建的杰作的人分享这个APK。他们必须双击这个APK附件来将其安装到他们的手机上。

更上一层楼
恭喜,你已经制作了一个360°视频应用,离创建一个VR视频应用仅一步之遥!虽然这两个术语经常使用相似,但是360°和VR代表了两种不同的体验:
360°视频是用专用摄像机或多个摄像机组合从各个角度录制的。用户可以从任何想要的方向观看,但是没有交互式体验。
VR通常指的是一个用户可获得沉浸式体验的由计算机生成的环境。这是一种交互式体验:玩家除了可以从各个方向观看外,还可以进行移动和控制对象。
你的新应用可以作为创造一个更加丰富的VR体验的起点。Unity具有很多你可以利用的功能,比如添加3D元素或酷炫粒子效果✨来叠加和增强视频效果,或者投入某些互动元素。
你也可以在360°视频播放器内部设置一个全3D环境并把播放器作为一个天空盒。用户可以使用这个精巧的自动步行脚本在舞台布景仿真系统中导航。
放飞你的想象力并向我展示你的创造力:给我发推特@AdrianaVecc或留下评论。
制作一个精彩的VR故事很难,而开发VR应用不应该如此。
DSC0005.png

【版权声明】
原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。

+1
2590°C
沙发哦 ^ ^ 马上
因分享而快乐,学习以自强!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ