unity3d 制作vr_unity 3d 制作vr - CSDN
  • 如何在Unity制作VR全景动画

    千次阅读 2017-05-06 12:18:06
    超简单的引言本教程介绍的是如何一个人制作出像模像样的VR全景动画。笔者没有去详细的研究过动画的制作方式,或者说根本就不了解啊,所以本文章只是门外汉的一次自嗨,请勿认真,作为一种参考即可。 一 总览 我们都...

    超简单的引言

    本教程介绍的是如何一个人制作出像模像样的VR全景动画。笔者没有去详细的研究过动画的制作方式,或者说根本就不了解啊,所以本文章只是门外汉的一次自嗨,请勿认真,作为一种参考即可。

    一 总览

    我们都知道,任何项目的开始都需要有策划的参与,没有完整的项目书,在项目的制作过程中你是会很痛苦的,不管是针对团队或者是个人开发,计划书都是必须的存在。
    笔者认为,一个简单的动画项目,至少需要有角色、场景和故事,才能够进行下去,所以这三者的获取对于个人开发者而言就十分重要的。
    故事即剧本,对于想单人开发VR动画的人而言,脑海里肯定是已经有了一定的想法了,那么,把他写下来,你就成功的获取了三要素中的故事了。
    场景即故事发生的地点,如果你的动画不是那么要求的话,一个Plane就可以作为场景了,稍微讲究一点就可以自己使用Terrain慢慢刷吧,那么场景也就有了。
    角色是比较难搞到的一个要素,想要一个机子逾期的模型和动画可没那么的简单,外包是不可能外包的,一辈子都不可能外包,原因自然是没钱啊,那么怎么获取符合自己故事的人物模型呢,请看下文。

    二 角色模型

    提到角色,制作VR全景动画,需要的是3D的模型,那么如何快速地获取自己想要的模型呢,答案当然是自己制作,这里笔者推荐个人开发这使用体素模型,何为体素模型,就是身体由一个个的方块、像素快组成的模型,好处自然是制作简单,快速成型,制作这种模型,几乎不要花费额外的学习成本,上手就来,下面说一下笔者自己的人物模型制作过程。
    首先,你需要去下载一个软件MagicalVoxel,打开软件是这个样子的。
    MagicalVoxel
    这款软件使用特别的交单,几乎就是秒上手,网上也有很多的使用教程,这里就不重复造轮子了,给你们看看笔者花了5分钟制作出来的一个模型,推荐使用T Pose,有没有感觉很震撼,哈哈,现在是丑了点,等下动起来会好看一点,制作完成后记得将模型导出成obj格式的。
    man

    三 角色动画

    有了角色模型,就需要让模型动起来,给模型添加动画,这里笔者使用的是一个在线的网站mixamo,可以在线为人形的模型添加骨骼和动画,使用前需要先注册帐号。
    截至到2017年5月5日,使用这个网站需要注意两点,这两点开始没注意到,浪费了笔者很多的时间:(1)注册帐号,选择的地区不能选择中国,否则你将没有权限下载绑定好骨骼的模型和动画。(2)浏览器,使用的浏览器需要支持WEBGL功能,笔者之前使用的是360安全浏览器,不支持这个功能,导致无法上传模型,后面切换到360极速浏览器,通过简单的设置后就可以了,如果你使用的是其他的浏览器,需要支持这个功能,下面的图片是360极速浏览器的简单设置。
    开启webgl
    一切都搞定后,点击上传,具体流程直接看图
    上传
    选中上传的文件
    选中上传的文件
    绑定骨骼
    绑定骨骼
    点击Next生成完之后就可以在自己的库中见到你的模型,而且是绑定骨骼的,模型已经动起来了。

    下一步是选择动画,这个网站上有很多的动画供你选择,而且全是免费的应该

    选中一个动画,点击添加到包里即可

    进入到你的库中,就可以看到你的模型和选择的动画文件了
    这里写图片描述
    接下来就是选中模型和动画,点击QUEUE DOWNLOAD,如果你的帐号选得是中国,这边的按钮是不可用的,模型和动画是分开下载的,模型下载选中FBX格式,可以直接导入Unity使用。

    四 开发制作第一步

    嗯,素材什么的都有了,接下来就是在Unity中的开发了,笔者使用的是Unity3D 5.6版本,新建一个项目,将模型导入到项目中,再将模型拉入场景中,你会发现模型是没有贴图的,下载的时候也是没有的。
    别着急,别忘了之前从MagicaVoxel导出的时候是有一张的贴图的,我们将这张贴图一起拖入项目中,再将贴图的类型改成Sprite类型,为模型的材质球附上这张贴图即可。(下面的效果是我之前制作的模型)
    这里写图片描述
    这里写图片描述
    接下来新建一个动画控制器,为模型指定上,再将需要的动画拉入控制器,点击运行,就会发现模型已经动起来了。
    这里写图片描述
    以上是很简单的方式,实际上,在动画的流程中,角色的动作和语音是很复杂的一个过程,需要使用脚本去精准的控制整个流程的进行。

    五 开发制作第二步

    第二步也是最重要的一步,即渲染VR全景视频,即下面这样的效果。
    这里写图片描述
    如果是自己写算法去渲染估计可以独立成一本书,我们自然要偷懒咯,这里推荐一款商店里的插件,如果是商业开发最好去支持一下作者,最新已经更新到了2.2.1。
    这里写图片描述
    下面介绍一下这个插件的简单使用,这款插件有几种渲染模式,笔者这边只介绍如何渲染出正常VR全景视频的方法,在使用前需要注意一点,这个插件必须放在Assets的第一层目录,这涉及到一些插件自带工具的路径问题。
    这个插件的核心就是一个预制体,VRPanoramaCamera
    这里写图片描述
    想要渲染出正常的VR全景视频,需要注意VRCapture这个脚本的一些属性
    (1)Capture Type:渲染的类型,我们需要选择最后一个EquidistantMono
    (2)视频的分辨率设置
    这里写图片描述
    (3)Fps设置
    这里写图片描述
    (4)设置渲染的时长,这边和你设置的fps有关,如果是25fps那,这边就是25帧标识渲染1S
    这里写图片描述
    (5)这个是选择渲染视频还是音频,需要分开渲染,当然你也可以为你的视频进行后期配音也是可以的。
    这里写图片描述
    设置好这个脚本的参数,点击运行就可以开始渲染你的VR视频了,最后会渲染出一大堆的图片,一帧一张,存放在项目的跟目录位置,最下面的就是你的VR视频了。
    这里写图片描述

    总结语

    这个教程其实就是多个工具插件的使用合集,虽说能够快速制作出一个VR全景视频,当真正想制作出优秀的作品,还是需要做很多的工作,如模型的细节、动画的类型、脚本控制流程的运行以及配音什么的,都是很重要的。这个教程只是抛砖引玉,希望有更多有兴趣的人可以加入到VR开发的行业中,为虚拟现实提供更多内容,同时也促进这个行业的良性发展。
    咳咳!以上都是废话,好了,教程到此为止。还有什么疑问的地方可以留言,我有看到就会回复,谢谢。
    最后放上一个我花了一天时间(建模,录音,选材,脚本什么地)做的一个demo视频的地址,因为选择的是最低画质(我电脑差点炸了,渣电脑渲染不起啊),而且最后合并视频和音频的时候没处理好,导致不同步,就将就看着吧。
    http://pan.baidu.com/s/1eR8up3c
    还有我控制流程的一个脚本,写的有点渣,纯粹为了实现而实现的,当做参考吧,制作动画的话感觉应该以时间线为事件的基准,嗯,我是这么认为的。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class DanceManController : MonoBehaviour {
    
    
        public AudioSource BgmSource;
        public Transform DanceManAim;
        public float MoveSpeed = 0.5f;
        public float RotateSpeed = 0.5f;
        public float WaitTime = 5.0f;
        //Voice
        public AudioClip Voice01;
        public AudioClip Voice02;
        public AudioClip Voice03;
        public AudioClip Voice04;
        public AudioClip Bgm01;
        public AudioClip Bgm02;
        public AudioClip Bgm03;
    
        private Animator _animator;
        private GameObject _player;
        private Transform _danceManTransform;
        private AudioSource _audioSource;
    
        private bool _isWalk = false;
        private bool _isRotate = false;
        private float _bmgVolume = 0.15f;
    
        void Awake() {
            _animator = GetComponent<Animator>();
            _audioSource = GetComponent<AudioSource>();
            _player = GameObject.FindGameObjectWithTag("Player") as GameObject;
            _danceManTransform = transform;
        }
        void Start () {
            StartCoroutine("MoveMan");
            PlayAudio(Voice01);
            PlayBGM(Bgm01, _bmgVolume);
        }
    
        void Update () {
            if (_isWalk) {
                if (Vector3.Distance(_danceManTransform.localPosition, DanceManAim.localPosition) > 0.05f)
                {
                    _animator.SetBool("Walk", true);
                    _danceManTransform.localPosition += (DanceManAim.localPosition - _danceManTransform.localPosition).normalized * MoveSpeed * Time.deltaTime;
                }
                else {
                    OnManIdle();
                }
            }
            if (_isRotate) {
                if (_danceManTransform.localEulerAngles.y < 180.0f)
                {
                    _danceManTransform.Rotate(new Vector3(0, RotateSpeed, 0));
                }
                else {
                    _isRotate = false;
                    PlayAudio(Voice02);
                    StartCoroutine("Dance01");
                }
            }
        }
    
        IEnumerator MoveMan() {
            yield return new WaitForSecondsRealtime(WaitTime);
            _isWalk = true;
            yield return 0;
        }
    
        IEnumerator Dance01() {
            yield return new WaitForSecondsRealtime(16.0f);
            PlayBGM(Bgm02, _bmgVolume);
            _animator.SetBool("Dance01", true);
            yield return 0;
        }
        IEnumerator Dance02()
        {
            yield return new WaitForSecondsRealtime(15.0f);
            PlayBGM(Bgm03, _bmgVolume);
            _animator.SetBool("Dance02", true);
            yield return 0;
        }
        IEnumerator EndVoice()
        {
            Debug.Log("结束语");
            yield return new WaitForSecondsRealtime(33.0f);
            BgmSource.volume = _bmgVolume;
            _audioSource.Stop();
            yield return 0;
        }
    
        public void OnManIdle()
        {
            _isWalk = false;
            _animator.SetBool("Walk", false);
            _isRotate = true;
        }
    
        public void PlayAudio(AudioClip clip) {
            _audioSource.volume = 1.0f;
            _audioSource.clip = clip;
            _audioSource.Play();
        }
        public void PlayBGM(AudioClip clip,float volume)
        {
            BgmSource.volume = volume;
            BgmSource.clip = clip;
            BgmSource.Play();
        }
    
        private int _dance01Size = 0;//Dance01的播放次数,三遍停止
        private bool _endVoice = false;//是否播放结束音
    
        public void OnDanceOver(int index) {
            if (index == 1) {
                if (_dance01Size == 2)
                {
                    BgmSource.Stop();
                    _animator.SetBool("Dance01", false);
                    PlayAudio(Voice03);
                    StartCoroutine("Dance02");
                }
                else {
                    _dance01Size++;
                }
            }
            if (index == 2 && !_endVoice)
            {
                //_endVoice = true;
                //_bgmSource.volume = 0.05f;
                //PlayAudio(Voice04);
                //StartCoroutine("EndVoice");
            }
        }
    }
    
    展开全文
  • 三分钟用Unity3D开发第一个HTC VIVE的VR程序  开启SteamVR并连接Vive设备   (a) 登录Steam客户端,并点击右上角的VR按钮,这时会弹出SteamVR的小窗口 (b)...

    三分钟用Unity3D开发第一个HTC VIVE的VR程序


    三分钟用Unity3D开发第一个HTC VIVE的VR程序



    1.   开启SteamVR并连接Vive设备 
       (a)  登录Steam客户端,并点击右上角的VR按钮,这时会弹出SteamVR的小窗口


    1. (b)  连接好所有VR设备,连接成功后SteamVR窗口上的图标会全部变为绿色 


    2.  新建Unity3D工程 

    3.  通过Asset Store导入SteamVR Plugin 

    4.  拖入相关prefab 
     先删除所有默认GameObject 


    然后将SteamVR/Prefabs中的所有prefab拖入Hierarchy窗口 


    5.  点击播放按钮 
     这个时候Game窗口会提示你可以戴上头盔了。戴上后四处环视一下,就能找到控制器。 


    好了,第一个程序就这么制作完成了。接下来大家就可以自行发挥啦~ 导入好看的场景和模型,编写自己的gameplay。 
    另外,大家可以参考SteamVR Plugin自带的示例场景,分别是: 
     SteamVR/Scenes/example 
     SteamVR/Extras/SteamVR_TestIK 
     SteamVR/Extras/SteamVR_TestThrow

    这次就介绍到这里,之后我们会详细地介绍SteamVR各个脚本的应用。

    Ps.Unity开发小技巧:请把 显示分辨率对话框属性设置为HiddenByDefault 
    在Unity 中Player Settings的选项里,http://docs.unity3d.com/Manual/class - PlayerSettingsStandalone.html 
            
    当用户带上HMD的时候我们没办法消除掉这个对话框,当启动游戏的时候,他们不得不摘下HMD手动消除这个对话框。但是这个对话框有时还是有用的,这就是为什么我推荐HiddenByDefault而不是Disable. Unity提供的方法是用命令行选项来控制当设置为HiddenByDefault(或者Ctrl),但是当设置为Enable的时候没有用。

    来自网络



    转载:http://www.wtoutiao.com/p/186IJMd.html   感谢博主分享

    三分钟用Unity3D开发第一个HTC VIVE的VR程序


    三分钟用Unity3D开发第一个HTC VIVE的VR程序



    1.   开启SteamVR并连接Vive设备 
       (a)  登录Steam客户端,并点击右上角的VR按钮,这时会弹出SteamVR的小窗口


    1. (b)  连接好所有VR设备,连接成功后SteamVR窗口上的图标会全部变为绿色 


    2.  新建Unity3D工程 

    3.  通过Asset Store导入SteamVR Plugin 

    4.  拖入相关prefab 
     先删除所有默认GameObject 


    然后将SteamVR/Prefabs中的所有prefab拖入Hierarchy窗口 


    5.  点击播放按钮 
     这个时候Game窗口会提示你可以戴上头盔了。戴上后四处环视一下,就能找到控制器。 


    好了,第一个程序就这么制作完成了。接下来大家就可以自行发挥啦~ 导入好看的场景和模型,编写自己的gameplay。 
    另外,大家可以参考SteamVR Plugin自带的示例场景,分别是: 
     SteamVR/Scenes/example 
     SteamVR/Extras/SteamVR_TestIK 
     SteamVR/Extras/SteamVR_TestThrow

    这次就介绍到这里,之后我们会详细地介绍SteamVR各个脚本的应用。

    Ps.Unity开发小技巧:请把 显示分辨率对话框属性设置为HiddenByDefault 
    在Unity 中Player Settings的选项里,http://docs.unity3d.com/Manual/class - PlayerSettingsStandalone.html 
            
    当用户带上HMD的时候我们没办法消除掉这个对话框,当启动游戏的时候,他们不得不摘下HMD手动消除这个对话框。但是这个对话框有时还是有用的,这就是为什么我推荐HiddenByDefault而不是Disable. Unity提供的方法是用命令行选项来控制当设置为HiddenByDefault(或者Ctrl),但是当设置为Enable的时候没有用。

    来自网络



    转载:http://www.wtoutiao.com/p/186IJMd.html   感谢博主分享
    展开全文
  • Unity3D制作VR全景视频、图片

    千次阅读 2019-05-16 17:59:37
    Unity3D制作VR全景视频、图片 搭建SteamVR的场景 如果不会可以点击链接:SteamVR环境搭建教程链接 2.首先在Sence中创建一个Sphere 注意sphere中Scale的Z一定要是负数,因为我们是在球的内部观看视频的。 3....

    在Unity3D中制作VR全景视频、图片

    1.搭建SteamVR的场景
    如果不会可以点击链接:SteamVR环境搭建教程链接

    2.首先在Sence中创建一个Sphere
    在这里插入图片描述
    注意sphere中Scale的Z一定要是负数,因为我们是在球的内部观看视频的。

    3.创建一个SurfaceShader,右键Assets–>Create–>Shader–>SandardSurfaceShader。
    在这里插入图片描述
    4.将此文件双击打开
    在这里插入图片描述
    在LOD 200下面加入cull off命令,以此可以在球的内部看到内容物。最后将此文件拖到Sphere上。
    在这里插入图片描述
    4.创建Render Texture文件,右键Assets–>Create–>Render Texture。同时更改分辨率参数也就是Size,改为:4960X2160。
    在这里插入图片描述
    5.将此文件拖到我们刚才新建材质球的Albedo中。
    在这里插入图片描述
    6.这是sphere已经设置完了,我们只需要在Sphere中添加Video Player组建,并把视频拖入到Video Clip上即可。(图片的话直接将图片拖到球上即可。)
    在这里插入图片描述
    7.那么我们如何才能用VR观看呢
    只需要在Project栏中搜索:Player,将其拖入Sphere中,即可带上VR眼睛体验全景视频了。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 浅谈UnityVR产业,用Unity开发VR应用

    千次阅读 2018-07-01 18:40:04
    VR(Virtual Reality的缩写,中文翻译—虚拟现实)概念早在80年代初就被提出来的,其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段。 中国VR产业仍在摸索阶段,亟缺复合型专业人才。据领英的全球...

    VR(Virtual Reality的缩写,中文翻译—虚拟现实)概念早在80年代初就被提出来的,其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段。


    中国VR产业仍在摸索阶段,亟缺复合型专业人才。据领英的全球人才库数据显示,正在起步期的中国VR产业,单以绝对人数来看,并不缺乏VR从业者。但高质量、专业的VR人才的储备不完善,当前很多VR人才都是为了业务发展需求而从企业其他部门抽调而来的,同时,产业生态建设和产业链部分环节的缺失,成了限制产业发展的一大重要因素。前段时期,小米CEO雷军接受《日本经济新闻》专访,雷军表示小米已经成立研发中心开发VR产品,未来5年才能成熟。3月18日下午,阿里巴巴宣布成立VR实验室,4月1日下午,淘宝推出全新购物方式Buy+,利用计算机图形系统和辅助传感器,生成可交互的三维购物环境。 
    三维购物环境 
    这样炫酷的三维视觉技术,不仅是可以让你随时随地的身临其境的购物,更是可以随意切换场景,对比买回家之后的效果。据阿里巴巴透露,该计划将于四月后上线。是不是很期待?


    VR发展的障碍仍然是如何加入其它的感知,比如嗅觉、味觉、触觉。为了达到这一目的,计算机必须能够实现和人脑的交互,这是技术上的最大的难点。中国的VR产业迅速爆发,在短期内资本大量注入,商业展示、线下体验店等多种形式的商业化进程遍地开花,但一方面又缺乏足够成熟的产业生态体系支持长期发展。众多的VR 线下体验店基本主打单一内容体验,盈利来源于消费者对于VR的好奇心。但单一化的内容体验能够持续多久,或许是商家最难预判的难题。因此,商家更需要的是内容提供商在内容差异化上做出更多创新,才能让其商业模式得到可持续发展。


    2016年,虚拟现实迎来井喷式发展,数据显示,预计到2018年,VR用户将达到675.2万,2020年将近3000万。而最近除了国美与暴风魔镜在北京国美马甸店正式揭幕号称国内最大移动VR线下体验馆——“暴风魔镜国美移动VR体验馆”。随后,苏宁控股董事长张近东在2016中国电子商务大会上表示,未来3个月将在全国建设300个VR体验馆,打造中国最大的VR体验平台。如今,不少一二线城市各种VR体验店犹如雨后春笋,成为VR线下体验的急先锋。如万达院线、IMAX,也相继宣布加入VR线下体验的阵营。据此,距离中国VR市场成熟已经不远了,很快VR将进入人们的生活中。


    还有一个大家关心的问题,就目前而言,虚拟现实技术还属于新生事物,由于使用了各种的高科技配置,因此成本较高。去年Facebook的首席执行官马克·扎克伯格展示的Oculus Rift头盔,预售价格为399美元(约合人民币3920元),这对普通用户来说是一笔不小的金额,所以,这也是阻碍VR市场成熟的阻力。 
    这里写图片描述



    浅谈Unity与VR

    对于大多数人来说,可能不知道Unity3D是什么,但是却知道VR虚拟现实是什么,更不会把VR虚拟现实和Unity3D联系在一起,外行的人根本不知道这两者之间有什么关系。那么,今天奇酷学院(www.qikuedu.com)Unity3D培训老师来给你讲解一下Unity3D与VR虚拟现实之间的区别和联系分别是什么?

      了解Unity3D与VR虚拟现实之间的区别和联系之前,我们首先要弄明白,什么是Unity3D?什么是VR虚拟现实?搞清楚这两个名词的含义,有助于帮助我们接下来对这两者之间的区别和联系的理解。

      

      什么是Unity3D?Unity3D是一软专业3D游戏引攀,其具备跨平台发布、离效能优化、高性价比,AAA级游戏画面演染效果等特点。目前Unity3D应用范围广泛,从手机游戏到联网的大型游戏,从严肃游戏到电子商务,再到VR虚拟现实均可完美呈现。

      什么是VR虚拟现实?虚拟现实(VirtualReality,简称VR),是由美国VPL公司创建人拉尼尔(JaronLanier)在20世纪80年代初提出的。具体内涵是:综合利用计算机图形系统和各种现实及控制等接口设备,在计算机上生成的、可交互的三维环境中提供沉浸感觉的技术。

      

      通过什么是Unity3D?什么是VR虚拟现实?这两个名词的解释,不难发现,VR虚拟现实是通过Unity3D开发引擎,结合其他语言基础做出来的效果,也就是说,学会Unity3D开发引擎,可以从事VR虚拟现实的相关工作。简单来说Unity3D开发引擎是工具,VR虚拟现实是结果。

      目前全球已超过九十万名开发者使用Unity3D,而且作品数量不断与日俱增,尤其目前在AppStore内有超过1500种移动平台游戏以及横跨许多国家上百个网页游戏都是以Unity3D为平台所开发的。这些开发者也包含许多国际知名厂商,例如法国育碧Ubisoft,美商艺电ElectronicArts,德国游戏巨头Bigpoint公司、迪斯尼Disney、乐高LEGO等。

      Unity3D开发引擎的产品特点

      1.支持多种格式导入:

      整合多种DCC文件格式,包含3dsMax,Maya,Lightwave,Collade等文档,可直接拖拽到Unity中,除原有内容外,还包含Mesh、多UVs,Vertex,Colors、骨骼动画等功能,提升7游戏制作的资源应用。

      2.AAA级图像渲染引擎:

      Unity渲染底层支持DirectX和OpenGL。内置的100组Shader系统,结合了简单易用,灵活,高效等特点,开发者也可以使用ShaderLab,建立自己的Shader。先进的遮挡剔除(OcclusionCulling)技术以及细节层级显示技术(LOD),可支持大型游戏所需的运行性能。

      3.高性能的灯光照明系统:

      Unity为开发者提供高性能的灯光系统,动态实时阴影、HDR技术、光羽&镜头特效等。多线程渲染管道技术将渲染速度大大提升,并提供先进的全局照明技术(GI),可自动进行场景光线计算,获得逼真细腻的图像效果。

      4.NVIDIA专业的物理引擎:

      Unity支持NVIDIAPhysX物理引擎,可模拟包含刚体&柔体、关节物理、车辆物理等。

      5.高效率的路径寻找与人群仿真系统:

      Unity可快速烘焙三维场景导航模型(NavMesh),用来标定导航空间的分界线。目前在Unity的编辑器中即可直接进行烘焙,设定完成后即可大幅提高路径找寻(Path-finding)及人群仿真(CrowdSimulation)的效率。

      6.友善的专业开发工具:

      包括GPU事件探查器、可插入的社交API应用接口,以实现社交游戏的开发;专业级音频处理API、为创建丰富通真的音效效果提供混音接口。引擎脚本编辑支持Java,C#,Boo三种脚本语言,可快速上手、并自由的创造丰宫多彩、功能强大的交互内容。

      7.逼真的粒子系统:

      Unity开发的游戏可以达到难以皿信的运行速度,在良好硬件设备下,每秒可以运算数百万面以上的多边形。高质量的粒子系统,内置的Shuriken粒子系统.可以控制粒子颜色、大小及粒子运动轨迹,可以快速创建下雨、火焰、灰尘、爆炸、烟花等效果!

      8.强大的地形编辑器:

      开发者可以在场景中快速创建数以千计的树木,百万的地表岩层,以及数十亿的青青草地。开发者只铸完成75%左右的地貌场景,引擎可自动填充优化完成其余的部分。

      9.智能界面设计,细节凸显专业:

      Unity以创新的可视化模式让用户轻松建构互动体验,提供直观的图形化程序接口,开发者可以玩游戏的形式开发游戏,当游戏运行时,可以实时修改数值、资源甚至是程序,高效率开发,拖拽即可。

      10.市场空间:

      iOSAndroid,Wii,Xbox360,PS3多平台的游戏发布。仅需购买iOSPro或AndroidPro发布模块就可以在iPhone或iPodTouch或Android系统等移动终端上创建任何酷炫的二维三维、多点触控、体感游戏,随后可将游戏免费发布到自己的移动设备上测试运行,增添修改的方便性。

      11.单机及在线游戏发布:

      Unity3D支持从单机游戏到大型联网游戏的开发,结合Legion开发包和Photon服务器的完美解决方案,轻松即可创建MMO大型多人网路游戏。而且在开发过程中,Unity3D提供本地客户《NativeClient)的发布形式,使得开发者可以直接在本地机器进行测试修改.带助开发团队编写更强大的多人连线应用。

      12.TeamLicense协同开发系统:

      TeamLicense可以安装在任何Unity里,新增的界面可以方便用来进行团队协同开发。避免不同人员重复不停的传送同样版本的资源至服务器,维持共用资源的稳定与快速反应其中的变化,过长的反应更新时间将会影响团队协同开发的正确性与效率。

      13.可视化脚本语言u:

      可视化脚本编辑语言u,具有高度的友好界面、整合性高、功能强大、修改容易等特点。开发者只祷将集成的功能模块用连线的方式,通过逻辑关系将模块连接,即可快速创建所铸脚本功能,非常适合非编程人员与项目制作使用。

      14.Substance高写真动态材质模块:

      Substance是一个功能强大的工具,通过任何的普通位图图像,直接生成高品质的次时代游戏设计专用材质(法线图,高度图,反射贴图等》,为DCC工具或游戏引擎(如Unity3D)提供高级的渲染效果。

      在Unity3D这么强大的技术支持下,VR虚拟现实的效果是可以轻而易举的实现,其中人机交互技术是密不可分的组成部分,人机交互技术主要研究方向有两个方面,分别是:人如何命令系统;系统如何向用户提供信息。众所周知,人在使用计算机方面的感受(即人机交互部分的友好度)直接影响到人对系统的接受程度,而这两个方面直接决定了人机交互部分的友好度,这是Unity3D与VR虚拟现实之间的主要关联。

      虚拟现实在各个行业和领域应用得越来越广泛,而同时也暴露出了一些不可忽视的问题,如对现实世界的隔离,与人类感知外部世界的方式有冲突等等。这些问题,都需要Unity3D开发引擎进行调整和研发,Unity3D开发引擎将计算机生成的虚拟物体或关于真实物体的非几何信息叠加到真实世界的场景之上,实现了对真实世界的增强,同时,由于用于与真实世界的联系并未被切断,交互方式也就显得更加自然,这就是两者之间亲密结合的成果,也是目前最热门的VR虚拟现实受大家喜欢的根本所在。



    用Unity开发第一款VR应用

    随着Oculus宣布1月6日开启预售,2016年很可能成为VR游戏元年,但很多的调研显示,手游设备才是市场增长的关键,SuperData发布的报告显示,2016年全球VR游戏市场规模预计在51亿美元左右,消费者设备安装量在3890万左右,凭借价格门槛的优势,以谷歌Cardboard和三星Gear VR为代表的移动VR设备很大可能成为用户量最大的设备,可能占据2016年虚拟现实设备安装量71%的份额,达到2700万。


    最近,一位从事VR游戏研发的开发者在自己的博客中展示了如何用Unity和Cardboard把一款3D游戏变成VR游戏的方法,他在文章最后还表示,你甚至可以用这种方法把游戏转化为AR游戏,或者从头开始做新的VR游戏,以下是Gamelook编译的博文:


    很多的科幻电影都展示了用人类意志控制物体的能力,但到目前为止,这仍旧是一种幻想,目前还没有技术可以实现这一点。在这份新手教学博客中,你可以学到如何用Unity做一款兼但的虚拟现实游戏,配合谷歌Cardboard创造比较简单的VR体验,本文主要讲的是:


    把Cardboard摄像头集成到你的游戏中;调整UI元素以适应VR模式;做VR模式下可以选择的按钮;在游戏运行的时候程序化地把游戏在常规和VR模式下进行切换。


    什么是谷歌Cardboard?


    理论上说,创造VR体验是非常直接的,你在屏幕上展示的并不是一个单独的图片,而是需要2个。因为它们来自位置相隔几英寸距离的两个摄像头,玩家们从左摄像头看到的是左边图像,右边看到的则是右边图像,这就创造了游戏景深。


    此外,再加上一些不错的动态传感器,你可以探测到用户面朝哪个方向。把这些和你所创造的3D世界结合起来的话,就可以获得一个沉浸感很强的游戏体验。在实际情况中,在一个高分辨率的屏幕上展示两个图像需要非常复杂的硬件,还需要可以追踪玩家的头部运动,把所有的功能集成到一个设备商,还要控制其重量,以免让用户戴起来太累。


    然而,随着谷歌Cardboard的出现,每一台智能机都有可能与Cardboard协作,可以用你手机的屏幕与传感器,把它们变成VR设备的一种,而你所需要的,只是一些Cardboard和塑料镜片。


    开始准备


    需要注意的是,你可能大量用到Unity GUI,所以如果从来没有尝试过这个工具,那么最好是看看Unity GUI教程。想要用Google Cardboard做出自己的VR游戏,你需要以下工具:


    Unity专业版,版本5以上;一部智能机,可以是iPhone 5代以后的iOS设备,也可以是4.3以上版本的Android设备。需要说的是,本文假设你是在用iPhone获得VR游戏体验。


    如果你从来没有用过Unity而且也不熟悉界面,那最好是去读Unity教程介绍

    可能会有人说,我如何获得一个Cardboard硬件呢?


    当然,如果还没有Cardboard设备的话,最好是从供应商那里选购,价格加运费大约是20-30美元,如果你觉得自己非常善于DIY,也可以动手做自己的版本。在购买Cardboard的时候,要注意提到V2或者Cardboard 2.0的字样,因为它们适配大量的手机,包括大屏幕的iPhone 6+在内,它们还支持用户通过按钮进行输入操作。


    没有Cardboard设备可以吗?


    从某种程度上说,是可以的,你仍然可以在自己的设备上运行做出来的游戏,它看起来会是这样的(下图):

    在玩游戏的时候,如果你用恰当的方式盯着屏幕看,也可以找到VR的感觉。如果你四处移动手机,就可以进行控制。虽然你也可以玩这款游戏,还能够看到游戏的实际效果,但这种体验是比较有限的。


    长话短说,如果你没有足够的耐心等待Cardboard到货,你仍然可以从本文中学到东西,只是,如果有合适的设备,你能够学的东西更多。


    样本游戏:Ninja Attack is Back!


    投入一些时间尝试这个样本游戏,下载并解压这个Unity新手项目。接下来就是运行Unity,在欢迎界面,选择打开(Open)-找到StarterNinja文件夹,打开NinjaAttack项目。


    在项目浏览器(Project Browser)中,在Assets里双击MainScene按钮,然后点击Play尝试一下这款游戏。在图片中,你是左边的忍者,随着怪兽在屏幕中出现,你可以在屏幕上点击任何地方释放一个忍者之星消灭怪兽,在击杀20个怪兽之后,你就赢了,但是,如果怪兽到达了左边的红色区域,你就输了。

    这款游戏看起来很熟悉是吗?熟悉的读者可能会发现,它其实就是我之前介绍SpriteKit以及Cocos2D教程用到的游戏,不过与之不同的是,这里的游戏是用3D渲染的。当然,你并不一定能够真正地看到非常酷炫的3D效果,这款游戏使用的是上帝视角,所以对所有的polygon进行渲染总觉得浪费时间,所以,你现在可以发现为什么这款游戏非常适合做成VR了。


    开始使用Cardboard


    你需要做的第一件事就是为Unity下载Cardboard SDK。接下来,把它导入到你的项目中。从Unity的主菜单,选择Assets\Import Package\Custom Package,然后选择你刚刚下载的CardboardSDKForUnity.unitypackage。确保所有东西都被选中,反选Legacy文件夹,然后点击Import按钮。

    为了让你的游戏作为一个VR体验,你需要用到一些技巧,在Project Browser中的Cardboard\Prefabs文件夹里,把CardboardMain Prefab拖拽到你的场景中,在Inspector中,给其赋予和你的忍者角色一样的位置(5.53,1.13,0.122),并且要进行90度Y Rotation。


    你会发现的是,它比忍者的中心部位略高,这样可以展现出你在看他的眼睛。

    接下来,选择主摄像头(Main Camera)并且在Inspector中反选,做raccoon忍者对象的时候也需要同样的操作。现在,把游戏在Unity编辑器中再次运行,你就会看到一些类似于3D场景的东西。如果你在移动鼠标的时候按住选择键,你的摄像头就会随着头部的运动进行旋转。

    在iOS设备上运行你的游戏场景


    在Unity编辑器中运行你的游戏是非常不错的,但最后一次检查的时候,用VR头盔配上电脑显示器看起来会让人很痛苦,所以我们需要适配到iPhone上。

    选择File\Build Settings,iOS应该已经被选为你的默认平台,点击Click Player Settings然后转换到Inspector。


    在Resolution and Presentation菜单下,把Default Orientation设置成Landscape Left。


    在其他设置(Other Settings)中,把Bundle Identifier改成你的公司所需要的东西,比如com.(你的公司名).NinjaAttackVR。


    把目标设备改为iPhone,把iPhone和电脑进行连接,选择Build和Run,然后给输出文件夹命名,这个名字你可以随意取。

    这时候,Unity就会导出你的项目,然后它就会自动在Xcode中打开,如果没有打开,启动Xcode并且手动打开生成后的项目,运行然后在手机上尝试。首次运行游戏的时候,你需要一系列的设置过程,比如可以在Cardboard硬件上扫描二维码,这样Cardboard SDK就可以根据你的设备、距离等进行画质微调。


    需要注意的是,如果设置过程中,你在扫描二维码的时候出现了 网址打开错误,那就必须调整Xcode项目中的info.plist,苹果开发者论坛中有说到这个问题,感兴趣的童鞋可以亲自查阅。

    接着,把你的手机插入Cardboard当中,来回转头以调整摄像头视角,你就可以看到相对不错的3D画面了。


    再一次把它做成游戏


    能够看到你的游戏世界是非常不错的,但初次之外,你还需要把玩法加入到游戏中,特别是你需要从忍者面朝的方向扔出忍者之星,这是你将要做的第一个玩法。


    对于UI来说,Cardboard支持一个按钮,看起来可能是比较有限,但如果把它和头部的动态追踪相结合的话,它可以做出更为复杂的互动。在《Ninja Attack》中,你通过Cardboard.SDK.VRModeEnable资源侦测玩家是否开始了VR模式,检查按钮是否和Cardboard.SDK.Triggered资源同时按下去了,如果这些值都对,就可以在用户面朝的方向扔出忍者之星。


    打开你的NinjaStarLauncher.cs脚本,你会发现它在Inspector里是和GameLogic GameObject连在一起的。


    创造一个新的private变量:


    private Vector3 _vrShooterOffset;


    把它在Start() method中初始化:


    _vrShooterOffset = new Vector3(0.0f, -0.4f, 1.0f);


    用以下代码替换Update ():

    这就可以运行了,接下来我们看看Update()是做什么的:


    你首先检查游戏是否在VR模式,用户是否按下了按钮检查Cardboard.SDK singleton object上的资源。


    在此之后,你可以调用LaunchNinjaStarFrom()释放一个忍者之星,你需要用到两个parameter:


    第一个是GameObject头文件,Cardboard库会为你调出来,所以它应该是已经指向了正确的位置;第二个是轻微偏移,这样你面前的忍者之星就会看起来更真实,否则的话你扔出去的忍者之星就像是在四只眼之间进行运动,虽然看起来很cool,但给人的感觉很奇怪。


    由于你的Ninja Star GameObject已经被设计飞往特定方向,所以它会朝着正确的方向进攻。


    再试一次,这时候,你可以转头扔向坏人,输赢logic仍旧起作用。

    解决Game Over菜单


    你可能已经注意到了,当游戏结束的时候,用之前的Game Over按钮,你的角色仍旧是在屏幕的左边。这款游戏用到了Display Canvas来展示Game Over界面,Unity最新的GUI教程中有讲到这一点,它总是出现在游戏窗口的顶部。这个标签适用于大多数的游戏GUI,因为它可以自动适应到你屏幕的上方,不论你的摄像头在做什么,而且它可以非常不错地适应不同屏幕尺寸。

    但在这个案例中,你需要一个存在于游戏世界中的GUI canvas,有一部分原因是它可以在3D环境中更好渲染,但还因为不希望把玩家爱是叫锁定到摄像头上。你的玩家们需要可以上下自由地看,这样他们可以看到不同的UI元素,找到最活跃的然后点击按钮。


    创造一个新的Canvas


    在Hierarchy菜单下选择GameOverCanvas,右击并且选择复制,重命名为VRGameOverCanvas,这样可以使它与原来的进行区别开来,把GameOverTxt重命名为VRGameOvertxt。

    在VRGameOverCanvas组件中,把渲染模式改为World Space。


    在Rect Transform组件中,把位置改为(-2.24,1.1,0.07),然后进行90度Y Rotation

    最后,把X和Y Scale改为0.009,当所有一切完成的时候,VRGameOverCanvas看起来因该是这样的:


    你可以在Game View视角下看到两个canvas是大致重叠的(当游戏不运行的时候):

    这些值是哪里来的呢?坦白地说,我其实是调整到自己通过Cardboard摄像头看起来比较不错为止。有时候,编程更多的是一门艺术而不是学科。


    支持两个Canvas


    接下来,你需要更改GameController.cs,这样它才会发现两个Canvas打开和GameLogic GameObject脚本,它也是和GameLogic GameObject联系在一起的。把以下的两个公共变量加入到你的class里:


    public Canvas VRGameOverCanvas;
    public Text VRGameOverTxt;


    在resetGame()的开始加入如下代码:


    VRGameOverCanvas.enabled = false;


    用以下代码取代Gameover():


    public void GameOver(bool didIWin) {
    isGameOver = true;
    _didIWin = didIWin;
    string finalTxt = (_didIWin) ? “You won!” : “Too bad”;
    if (Cardboard.SDK.VRModeEnabled) {
    VRGameOverCanvas.enabled = true;
    VRGameOverTxt.text = finalTxt;
    } else {
    gameOverCanvas.enabled = true;
    gameOverTxt.text = finalTxt;
    }
    }


    这个展示了正确的Canvas和Text对象,取决于你是否在VR模式(开启Cardboard.SDK.VRMode).

    在你保存了脚本之后,你需要把正确的对象分配到新的公用变量。在Inspector里找到GameController,点击每个新变量旁边的目标,然后选择VRGameOverCanvas对象作为你的VR游戏Over Over Canvas变量,把VRGameOverTxt对象选为你的VR Game Over Txt变量。


    需要注意的是,可能你会奇怪,为什么是很麻烦地支持两个Canvas而不是至改变现有的一个呢?原因是,你既需要支持上帝视角,还需要支持VR模式,所以一定要进行优化。


    如果你准备现在就运行游戏,就可以发现VR模式里的游戏结束界面展示的很自然。你可以上下看界面的不同部分,现在所有缺少的东西就是再来一次的按钮。

    增加Gaze输入方式


    幸运的是,Unity内置了‘在使用world-space GUI Canvas的时候,摄像头中心点可以作为鼠标使用’,但你需要提供额外的脚本才能使它在VR界面中进行使用。

    首先,扩展Cardboard Main\Head,找到主摄像头并把它重命名为VR Main Camera。选中VRGameOverCanvas对象,你们应该可以看到一个事件摄像头,点击Hierarchy里的EventSystem项目,点击增加组件按钮,并增加GazeInpute Module脚本。这个脚本可以确保Unity的GUI系统了解Cardboard摄像头的工作方式。


    检查VR Mode Only,因为在VR模式下的时候,只需要这么运行就可以了。最后,点击你刚刚增加的Gaze Input Module Component,然后选择Move Up,重复一次,确保它可以出现在触屏输入和独立输入模式中,这可以确保Gaze Input Module在游戏进行的同时优先选择输入方式。当所有都做好的时候,它看起来应该是这样的:

    现在,你就可以进行尝试了。这一次,当你把视角放到Play Again按钮的时候,它就会变绿,让你重新开始一场新的游戏。

    玩法微调


    或许你会发现这个版本的游戏在VR模式下玩起来有点难,这是因为你的视角是缩水的,所以在你看着错误的方向时,敌人很容易从你身边溜过去。而且,你无法迅速改变瞄准方向,你会因为脖子转速的限制而影响到游戏操作。你让玩家体验VR模式并不是为了惩罚他们,所以,你该如何调整呢?当然,可能会有人建议把敌人速度降低。


    在Prefabs文件夹中选中EvilSlimeEnemy Prefab,然后打开EnemyMover.cs,把以下代码增加到Start(),随后设置速度:


    这会让你的游戏在VR模式下变得更简单,所以玩家们不至于因为选择了VR模式就获得糟糕体验。


    解决屏幕上的分数显示问题


    你还需要解决的一个UI问题是屏幕上的分数,这个就需要不同的方式来处理了。虽然它仍然需要在VR模式中恰当的被显示出来,但你更希望它在你看任何方向的时候都固定在摄像头上。


    选中Cardboard Main\Head,右击并选择UI\Canvas,重命名新的canvas为VRScoreCanvas,把渲染模式调整为World Space,为其赋予以下值:


    位置(0,1,2.5)、宽度400、高度100、旋转(0,0,0)、Scale(0.0115,0.0115,1)。当完成之后,游戏看起来该是这样的:

    看起来可能你的文本很奇怪地放在了屏幕中央,但在VR模式里,你能够看到的世界比正常情况下是少很多的,所以你在游戏中看到分数的时候应该是在边缘部位的,你可以自由进行位置调整,以使其适应你的手机。


    接下来,使用文本对象展示你的分数,这个过程和Game Over的做法类似。

    打开GameController.cs并增加一个新的公用变量:


    public Text VRScoreTxt;


    接下来,你每次更新scoreTxt的时候都需要更新VRScoreTxt,在ResetGame() method中,把以下代码加在每次更新后的scoreTxt之后:


    VRScoreTxt.text = “–“;


    然后把这行代码增加到GotOne(),也放在更新scoreTxt的后面:


    VRScoreTxt.text = “” + _currScore;


    保存你的脚本,回到Unity,然后你会发现GameLogic当中的GameController Component如今可以输入VR Score Txt变量了,点击临近的目标然后选择你的VRScoreTxt文本对象。

    再次体验你的游戏,现在,你就可以看到分数出现在左上角了,还可以允许你的头部进行运动。


    VR模式的切换


    由于你的游戏同时支持上帝视角和VR模式,你应该给用户自由切换的选择,UI做起来是很直观的,你只需要在上帝视角模式中加入一个简单的按钮,让玩家们来回切换模式即可。


    首先,你需要增加切换的代码,选择Hierarchy里的GameLogic,点击增加组件,选择新脚本(New Script)然后把脚本命名为CardboardSwapper。
    打开并用以下内容替换class代码:

    这个class里最重要的method就是ActiveVRMode,它是用来激活Cardboard的VR模式的。其余的logic负责控制场景中的多个GameObject,取决于是否处于VR模式,你在上帝视角是看不到某些东西的。


    你还可以发现的是,当你侦测后面按钮的时候调用了Switch(),这个功能非常适合测试。


    你还需要为GameController脚本增加更多的logic,这样它才能在切换模式的时候展示或者隐藏一些东西,打开GameController.cs,把这个method加进去:


    public void RefreshGameOver() {
    gameOverCanvas.enabled = false;
    VRGameOverCanvas.enabled = false;
    if (isGameOver) {
    GameOver(_didIWin);
    }
    }


    保存一切然后重新回到Unity界面,选择GameLogic然后向下滚动到Cardboard Swapper组件,对于Cardboard Object数列,把它的大小赋值为1,然后放到场景中的CardboardMain GameObject中。这样不仅可以禁用你的Cardboard Head让你回到上帝视角摄像头模式,还可以禁用VRScoreCanvas。


    对于Mono Object数列,把它的大小赋值为3,然后为你的场景选择Canvas、Main Camera和raccoon ninja,不要从Assets里选择。


    最后你需要在上帝视角canvas为用户增加一个按钮,为了节约时间,我已经把它做好了,位于prefabs文件夹中。


    从Assets\Prefabs中把CardboardButton推拽到Hierarchy,这样它就成为了你的Canvas对象的子对象,确保其位置设定是(-50,50,0):


    在你的按钮对象底部,把它们连接起来,这样点击按钮的时候就可以调用CardboardSwapper.Switch() method,你可以从这个动画看看是如何做出来的:

    再次尝试你的游戏,点击屏幕右下方的按钮切换至VR模式,然后单机Cardboard界面背后的按钮切换到上帝视角模式。做到这里,你的VR模式切换就已经完成了。

    现在,你可以把Unity中的任何3D游戏做成VR游戏了,而且只需要一个Cardboard和一些塑料镜片,这是可以让所有人都能够体验的VR游戏。Android版本的做法和iOS大致相同,谷歌的Unity Developer指南还提供了更多的技术信息。最后,你甚至可以为你的VR游戏增加AR功能。


    最后,你可以尝试Unity里所有的3D游戏,看是否能够顺利地做成VR体验,或者,这个教程也可以让你做出全新的VR游戏。



    ——————————————————————————————————————–
    【转】Unity3D关于VR的Demo:
    ——————————————————————————————————————–
    Unity3D官方VR的Demo:
    ——————————————————————————————————————–

    声明

    欢迎转载,但请保留文章原始出处
    作者:Jaiky_杰哥 
    出处:http://blog.csdn.net/jaikydota163/article/details/52743770


    by Wang

    展开全文
  • Unity3D+VR的实现

    千次阅读 2019-04-26 17:35:16
    针对CardBoard一类的眼镜用Unity3D开发VR内容。 1、创建VRCamera:使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本并export出来。 2、对象选择:视选模式:从眼睛发射一条射线,选择看到的对象。手柄模式:...
  • 【虚拟现实】Unity3D+VR的实现

    万次阅读 2016-05-28 12:33:11
    【虚拟现实】Unity3D+VR的实现 针对CardBoard一类的眼睛用Unity3D开发VR内容。 1、创建VRCamera: 使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本并export出来。 2、对象选择: 视选模式:从眼睛发射一...
  • 一款基于unity3DVR游戏的源码,项目,想要下载的小伙伴们可以下载玩玩
  • 大家好,我是菜鸟在线的小编。这篇短文将告诉大家如何用Unity3D开发VR版的Hello World,具体方法介绍如下。想获得更详细地SteamVR各个脚本的应用,请到菜鸟在线官网查看,或直接观看Unity3D开发视频教程学习,谢谢!
  • Unity3D自学记录】制作VR视频播放器

    万次阅读 热门讨论 2016-07-13 10:19:29
    最近VR火的不要不要的,但是综合起来,VR资源最多的还是全景图片和全景视频,今天在这里给大家简单介绍一下如何用Unity制作简单的VR视频播放器。 首先找到EasyMovieTexture这个插件,AssetStore地址:...
  • VR是一种可创建和体验虚拟世界(Virtual World)的计算机系统, ...作为一个unity3d初学者,怎样开发一款3D游戏呢,或者说,怎样最快的将自己现有的unity3d项目开发成VR项目呢,这里,本文给大家推荐一款VR转换器《v...
  • 有关Unity3DVR领域的优化措施VR应用由于其特殊性,帧数是一个十分关键的部分。如果帧数不够高,那么体验VR的人很容易就会感到头晕。研究显示,VR应用要想达到较好的效果,并且不会让人在体验时感到生理上的不适,...
  • 从零开始丨使用Unity3D进行VIVE VR游戏开发

    万次阅读 多人点赞 2017-01-06 09:49:27
    使用Unity3D进行VR游戏的开发,首先需要具备的条件
  • 该文章仅作为本人工作过程中的开发笔记,难免有不严谨不深刻的地方,适合刚入门Unity+HTC VIVE新手制作VR菜单时作为参考,望大神勿喷。 在使用Unity+HTC VIVE制作VR游戏或者严肃游戏时,时常会需要到菜单的制作...
  • VR这么火,你选UE4还是Unity 3D?

    千次阅读 2019-03-05 16:01:38
    在虚拟现实大热的今天,开发者界也出现了“甜豆花”与“咸豆花”之争。在游戏开发者制作游戏时,面对都是免费、都支持各大平台...Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视...
  • Unity3D制作极简版VR全景视频播放器

    千次阅读 2018-04-10 08:45:17
    自从Unity5.6.4还是2017的版本开始,官方提供了兼容移动端和Windows端的视频播放器控件——Video Player,下面介绍如何使用这个控件,制作VR播放器。 1、新建空白场景,新建球体Sphere,Camera放置球心位置; 2、...
  • 基于vlc的unity3d vr视频播放器开发,简述
  • Unity3D 虚拟现实开发(三)-UI篇

    千次阅读 2018-11-13 21:38:36
    大家好!我又来了,经过前两篇简单的讲解,我们慢慢要...下面我们来讲解一下,Unity3D UGUI 界面的简单制作。看下面这张图,咱们将UI实现呢   下面我们就开始制作UI,哎,原来的图片没有了,还得自己重新搜图切...
  • 2018之后的Unity3d制作AR教程

    千次阅读 2019-06-25 14:48:27
    自2017.4以后的unity版本,AR的SDK已经被集成,那么如何用2018unity3d制作AR呢? 1.首先打开Unity3d2018,然后打开File->Building Setting,接着打开PlayerSetting,找到XR Setting 设置,勾选Virtual Reality ...
  • Unity2016 Unity3D开发VR游戏的经验

    千次阅读 2016-04-15 16:21:10
    在4月12日的Unite 2016大会上,暴风魔镜高级产品经理吴涛分享他用Unity3D开发VR游戏的经验,以下为分享实录: 我自己是从2010年开始使用U3D开发,之前是做大型端游,也用过虚幻引擎。2010-2011年,中国移动游戏开始...
1 2 3 4 5 ... 20
收藏数 1,916
精华内容 766
关键字:

unity3d 制作vr