《基于Unity与SteamVR构建虚拟世界》 |
版本面试 |
做者算法 |
参与者数据库 |
完成日期编程 |
备注设计模式 |
SteamVR_Unity_V01_1.0安全 |
严立钻服务器 |
|
2019.04.08网络 |
|
|
|
|
|
|
++++“基于Unity与SteamVR构建虚拟世界”:是对“Unity+SteamVR构建虚拟世界”的入门指导;“云计算+5G+VR+AI”,这是咱们之后的主线,前段时间已经整理了几篇5G和云计算博文,还差AI系列,后期会隆重推出,今天先重磅回归VR主题,以SteamVR为突破口。(2019年度的重点技术突破点确立为:“SteamVR”,“AI人工智能”是下一个风口)数据结构
++++“基于Unity与SteamVR构建虚拟世界”:定位在熟悉SteamVR框架;架构
++++Unity+SteamVR=>VR:http://www.javashuo.com/article/p-asetqfsg-da.html
++++Unity减小VR晕眩症:http://www.javashuo.com/article/p-cendayuh-dt.html
##A.一、基于Unity与SteamVR构建虚拟世界 |
++++立钻哥哥:Building Virtual Reality with Unity and SteamVR(基于Unity与SteamVR构建虚拟世界);虚拟世界不受限制,开放接纳新思想,它已经在为咱们全部人快速发展打开新的视角和旅程;虚拟现实还是一项发展中的技术,涉及的知识领域愈来愈多,愈来愈复杂,对开发人员的能力也有必定的要求;
++++[Unity]:是一款普遍使用的游戏开发工具,是集场景建立、脚本编写、三维动画等多种互动内容于一体的专业游戏引擎,能够说是虚拟现实的软件基础;
++++[SteamVR}:是一套功能完整的360度房间型空间虚拟体验系统,包含头戴式显示器、手持控制器、定位系统等硬件设施,是虚拟现实的硬件基础;
++++A.1.一、虚拟世界简介
++++A.1.二、VR的缺点
++++A.1.三、VR面临的困难和挑战
++++A.1.四、虚拟现实设计和发展
++++A.1.五、立钻哥哥带您走进虚拟世界
++++Unity+SteamVR=>VR:http://www.javashuo.com/article/p-asetqfsg-da.html
++++Unity减小VR晕眩症:http://www.javashuo.com/article/p-cendayuh-dt.html
##B.三、Unity中减小VR晕眩症的实用技术 |
++++立钻哥哥:“VR晕眩症”也称为“模拟晕眩症”或“网络晕眩症”;它可能会引发一系列的症状,如出汗、恶心、晕眩、头痛、嗜睡,以及其余相似晕车患者在汽车、船只或飞机上感觉到的症状;
++++B.3.一、了解虚拟现实晕眩症
++++B.3.二、减缓VR晕眩症的技术
++++B.3.三、立钻哥哥对“VR晕眩症”其余拓展
###B.3.一、了解虚拟现实晕眩症 |
++++立钻哥哥:VR晕眩症可能会严重阻碍人们普遍使用VR;那么每一个VR内容建立者都有责任去尝试减小或找到解决VR晕眩症的方法;
++++房间规模的VR体验不会受到像座式或自动移动式体验遭受模拟晕眩症那样的困扰;
++++立钻哥哥:“VR晕眩症”也称为“模拟晕眩症”或“网络晕眩症”;
++++[征兆冲突理论(Kolansinski, 1995)]: VR晕眩症是因为观众的实际体验与大脑的认知体验不匹配形成的;“征兆冲突理论”是大脑认为输入(视觉、声音等)不真实或不正确;
++++大脑一般可以分辨与身体相关的东西是否正确,而后试图纠正它并进行“安全检查”,以确保身体处在健康的状态;监测系统会寻找信号或异常征兆,例如将运动和视线捆绑在一块儿以创建一系列的信息,来确认咱们正在体验的东西是否正确;当征兆不匹配时,则认为大脑切换到一般当身体受到攻击时可能会触发的防护模式;当大脑试图经过体液(分泌汗或呕吐,视严重程度而定)来清除体内的毒素时,排异反应系统就会启动;
++++立钻哥哥:与我的身体因素相结合来看,有不少潜在的征兆,其影响程度因人而异;
++++[一、相对运动错觉]:一个涉及大量运动的摄像机系统极可能会引起VR晕眩症;这可能与相对运动错觉有关;相对运动错觉是对周围的运动产生错觉,如今已经被发现是形成“VR晕眩症”的主要缘由;(在房间模式的VR中,人们所经历的晕动症广泛较少;在VR中移动而不是被四处移动,就会减小VR晕眩症的产生)
++++[二、视野]:更广阔的视野会产生更多的相对运动错觉;即便在视觉相对运动错觉增长的状况下,减小视野也有助于减小不良影响;中央视野缩小是一个缓解晕动症的不错方法;
++++[三、IPD瞳孔间距]:头戴式显示器配置不正确的“IPD(瞳孔间距)”可能会引发眼疲劳,形成很差的体验;
++++[四、不适]:虚拟现实可能会加重某些不适;内耳可能会受到许多医学条件的影响,包括感冒、流感或耳部感染;耳朵的任何问题均可能直接影响大脑对平衡的理解以及相对运动错觉对使用者的影响;疲劳和其余不适也会对其产生影响;
++++[五、运动]:使用者在虚拟世界中移动的方式会产生不一样的体验;更快的移动速度可能产生更多的运动感,致使更多的晕眩感;
++++[六、年龄]:关于“VR晕眩症”将年龄和性别做为一个影响因素,没有实际证据支持这种说法;
++++[七、帧速]:为开发温馨的VR体验须要在整个体验过程当中维持恒定的帧速;所以须要更高规格的硬件;帧速在40帧/秒时出现停顿现象意味着帧数的降低,而且会触发VR晕眩症的症状;使VR运行在90帧/秒的速率更好;
++++[八、深度感知]:拥有最好VR视野的人多是最容易产生晕动症的人;具备良好深度感知的人在虚拟世界中会产生更多的相对运动错觉,这可能增长对晕眩症的易感性;
++++[九、线性加速度或旋转加速度]:运动类型以不一样的方式影响使用者,减小其影响的最基本方法就是相对缓慢的移动;要尽可能避免高速旋转;(一个更加忽然的开始和中止可能不会使视觉有最好的效果,但在VR中,这是为了减小用户晕眩的一个妥协)
++++[十、位置追踪偏差]:当追踪硬件失效或头戴式显示器移出基站的范围时,它会给用户带来一种不舒服的体验;由于:此时视野会随意地偏离预约的位置;
###B.3.二、减缓VR晕眩症的技术 |
++++立钻哥哥:介绍一些实用方法以及Unity实现以帮助易患晕眩症的人们建立更温馨的VR体验;经过分享和实施解决方案来创造更温馨的体验;
++++B.3.2.A、用UI覆盖来缩小视野
++++B.3.2.B、适用于VR的第三人称视角
++++B.3.2.C、假鼻子以及它如何闻味道
++++B.3.2.D、VR新技术应用
++++B.3.2.E、立钻哥哥对VR晕眩症拓展
####B.3.2.A、用UI覆盖来缩小视野 |
++++立钻哥哥:“视野”,更普遍的视野会产生更多的相对运动错觉,即便在视觉相对运动错觉增长的状况下,减小视野也有助于减小不良影响;
++++动态缩小视野能够减小晕眩感:用Unity来改造现有的VR显示:当使用者在场景中移动时,视野将被覆盖而缩小;使用者在虚拟世界中移动的时间越长,实际可见的虚拟世界愈来愈小;当使用者停下时,视野恢复正常;经过这种方式缩小视野,使咱们可以在虚拟世界中停留更长的时间,有更好的体验;
++++立钻哥哥:哥伦比亚大学计算机图形和用户界面实验室的研究人员发现:根据用户在虚拟世界中的移动程序,控制可见范围能够减小VR晕眩症的影响;
++++在摄像机前使用一个蒙版,提供相似于透过一张卡片上的洞观看的视图;当使用者四处走动时,蒙版会缩小以缩小观察孔;当用户中止移动时,孔将回到原始尺寸,恢复视场;
++++[蒙版]:蒙版的任务时再视场中心提供一个可见区域并遮挡其他部分;根据追踪对象的移动速度来缩放对象,这将缩小或增大中心孔的尺寸,也就是使用者的可见区域;
++++立钻哥哥:这个脚本“YanlzXRMaskScaler.cs”派生自MonoBehaviour,所以可使用Start(){}和FixedUpdate(){}函数,Unity将自动调用;
using UnityEngine; using System.Collections;
public class YanlzXRMaskScaler : MonoBehaviour{ public Transform objectToTrack;
public float maskOpenScale = 4.0f; public float maskClosedScale = 1.0f;
public float minSpeedForMovement = 2.0f; public float maskSpeed = 0.1f;
private float moveSpeed; private Vector3 lastPosition; private float theScale;
private Transform myTransform; private Vector3 myScale; public float multiplier = 100f;
void Start(){ //立钻哥哥:保存一些原始信息 myTransform = transform; myScale = transform.localScale;
//立钻哥哥:设置一个默认的缩放 theScale = maskOpenScale; }
void FixedUpdate(){ //立钻哥哥:计算出咱们跟踪的物体的移动速度 moveSpeed = ((objectToTrack.position - lastPosition).magnitude * multiplier); lastPosition = objectToTrack.position;
//立钻哥哥:在这里,咱们检查对象是否在移动,若是在移动,则缩小可见区域 if(moveSpeed > minSpeedForMovement && theScale > maskClosedScale){ theScale -= maskSpeed * Time.deltaTime; }
//立钻哥哥:在这里,咱们检查对象是否没有移动,若是没有移动,则增大视野 if(moveSpeed <= minSpeedForMovement && theScale < maskOpenScale){ theScale += maskSpeed * Time.deltaTime; }
//立钻哥哥: 最后,咱们将转换的localScale属性设置为新计算的大小 myTransform.localScale = myScale * theScale;
} //立钻哥哥:void FixedUpdate(){} } //立钻哥哥:public class YanlzXRMaskScaler:MonoBehaviour{}
|
|
++知识点01:[myTransform = transform;] ++++立钻哥哥:在这个游戏对象上的Transform组件引用保存在myTransform变量中;
|
|
++知识点02:[moveSpeed] ++++立钻哥哥:FixedUpdate()函数中指出了正在追踪的对象的当前速度;它经过追踪对象的当前对象,减去对象的最终位置来获取速度;这就提供了上次更新的位置与这次更新的位置之间的向量,并使用.magnitude来得出两个向量的大小;
++++[*multiplier]:multiplier的变量,是为了不“四舍五入”引发的错误,使用一个乘数(*100)将速度提升到更易于控制的值;
|
|
++知识点03:[lastPosition = objectToTrack.position;] ++++立钻哥哥:在lastPosition中存储位置,以即可以在下次调用FixedUpdate()时使用它来计算位置差别;
|
|
++知识点04:[theScale -= maskSpeed * Time.deltaTime;] ++++立钻哥哥:将moveSpeed与minSpeedForMovement进行比较,以查看是否在minSpeedForMovement中设置的阀值以上移动;而后将theScale与maskClosedScale进行比较,以便在扩展尺寸时禁止它变得太小;若是知足以上两个条件,theScele则经过maskSpeed*Time.deltaTime递减;经过调整maskSpeed的值来调整蒙版改变尺寸的速度;
++++theScale += maskSpeed * Time.deltaTime;
|
|
++知识点05:[myTransform.localScale = myScale * theScale;] ++++立钻哥哥:经过计算出的theScale,能够乘以myScale中的原始尺寸;并在Transform组件中设置.localScale缩放比例;
|
|
|
++++立钻哥哥:经过上面的分析知道如何采用“UI覆盖来缩小视野”了,那咱们就将其应用到场景中吧;
++++[视野将根据移动进行动态变化]:当咱们中止移动时,视野将无限制打开;
++++[工做原理及操做]:在一个Canvas显示蒙版图像,用于摄像机前面的VR渲染;将“YanlzXRMaskScaler.cs”脚本组件附加到图像,MaskScaler将追踪场景中玩家的移动;根据玩家的移动状态动态修改蒙版图像的尺寸;玩家移动过程当中,蒙版会变得很小,中止时还原原始尺寸,使整个视图可见;
++++[FOV蒙版]:把蒙版透明度下降到明显级别来进一步完善;
####B.3.2.B、适用于VR的第三人称视角 |
++++立钻哥哥:“第三人称视角VR的摄像机系统”,基于速度的线性跟随摄像机,固定位于玩家角色的后面;
++++[正确移动摄像机的重要性]:角色中止在适当的位置上而摄像机却持续移动,可能会触发一些“VR晕眩症”症状;若是摄像机没有出如今于玩家相同的环境中并以相同的方式移动,彷佛会致使二者之间的脱节,从而致使使用者产生不适感;
++++立钻哥哥:“VRCamera”,摄像机如何移动和前进;摄像机的位置从“目标(一个虚拟的四处移动的角色)”上偏移;
++++[CameraParent]:摄像机自己的父对象的空游戏对象(也就是:空物体下放个摄像机);
//立钻哥哥:摄像机的移动 using UnityEngine; using System.Collection;
public class YanlzXR_VRCamera : MonoBehaviour{
} //立钻哥哥:public class YanlzXR_VRCamera:MonoBehaviour{} |
++++Unity+SteamVR=>VR:http://www.javashuo.com/article/p-asetqfsg-da.html
++++Unity减小VR晕眩症:http://www.javashuo.com/article/p-cendayuh-dt.html
【XR游戏开发QQ群:784477094】
++立钻哥哥推荐的拓展学习连接(Link_Url):
立钻哥哥推荐的拓展学习连接(Link_Url) |
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++HTC_VIVE开发基础:http://www.javashuo.com/article/p-mhcdmelt-bt.html
++++Oculus杂谈:http://www.javashuo.com/article/p-unmgvyjw-ce.html
++++Oculus安装使用:http://www.javashuo.com/article/p-ulvvimkb-cr.html
++++Unity+SteamVR=>VR:http://www.javashuo.com/article/p-asetqfsg-da.html
++++Unity减小VR晕眩症:http://www.javashuo.com/article/p-cendayuh-dt.html
++++SteamVR简介:http://www.javashuo.com/article/p-awcwwcaq-ea.html
++++SteamVR脚本功能分析:http://www.javashuo.com/article/p-ajqgwdev-ek.html
++++SteamVR2.0开发指南:http://www.javashuo.com/article/p-wgdghzsl-er.html
++++SteamVR2.2.0开发指南:http://www.javashuo.com/article/p-hguaxolf-ew.html
++++SteamVR2.2.0快速入门:http://www.javashuo.com/article/p-fcmbsvpm-gb.html
++++SteamVR/Extras:http://www.javashuo.com/article/p-qrebqbra-he.html
++++SteamVR/Input:http://www.javashuo.com/article/p-avbvrjff-ga.html
++++OpenXR简介:http://www.javashuo.com/article/p-qgsgcamr-eu.html
++++VRTK杂谈:http://www.javashuo.com/article/p-gsryrkjk-eb.html
++++VRTK快速入门(杂谈):http://www.javashuo.com/article/p-bgvfnmia-cm.html
++++VRTK官方示例(目录):http://www.javashuo.com/article/p-dsnjffvq-ea.html
++++VRTK代码结构(目录):http://www.javashuo.com/article/p-wfilzqyd-es.html
++++VRTK(SceneResources):http://www.javashuo.com/article/p-ryptqvzl-hm.html
++++VRTK_ControllerEvents:http://www.javashuo.com/article/p-sciqvywx-hv.html
++++VRTK_InteractTouch:http://www.javashuo.com/article/p-ggucvtwz-hq.html
++++虚拟现实行业应用:http://www.javashuo.com/article/p-dtgguvvf-ec.html
++++Steam平台上的VR:http://www.javashuo.com/article/p-wuvvtohn-bo.html
++++Steam平台热销VR:http://www.javashuo.com/article/p-uyiidcdy-ba.html
++++VR实验:以太网帧的构成:http://www.javashuo.com/article/p-fnfhdcgt-bp.html
++++实验四:存储器扩展实验:http://www.javashuo.com/article/p-hutumxis-dd.html
++++FrameVR示例V0913:http://www.javashuo.com/article/p-xnlrngai-cw.html
++++FrameVR示例V1003:http://www.javashuo.com/article/p-ztazxpkv-bd.html
++++SwitchMachineV1022:http://www.javashuo.com/article/p-tqkoklov-s.html
++++PlaySceneManagerV1022:http://www.javashuo.com/article/p-tqkoklov-s.html
++++Unity5.x用户手册:http://www.javashuo.com/article/p-ufnzpmga-s.html
++++Unity面试题ABC:http://www.javashuo.com/article/p-mwacxwca-gm.html
++++Unity面试题D:http://www.javashuo.com/article/p-wuwcrclr-s.html
++++Unity面试题E:http://www.javashuo.com/article/p-hmabbtmc-ba.html
++++Unity面试题F:http://www.javashuo.com/article/p-olslkfao-cq.html
++++Cocos2dx面试题:http://www.javashuo.com/article/p-daozmsii-cz.html
++++禅道[zentao]:http://www.javashuo.com/article/p-rqsvjwtk-cz.html
++++Lua快速入门篇(Xlua拓展):http://www.javashuo.com/article/p-rrszijom-cm.html
++++Lua快速入门篇(XLua教程):http://www.javashuo.com/article/p-pduvmusb-ho.html
++++Lua快速入门篇(基础概述):http://www.javashuo.com/article/p-shernvtt-u.html
++++框架知识点:http://www.javashuo.com/article/p-eufbowgf-u.html
++++游戏框架(UI框架夯实篇):http://www.javashuo.com/article/p-cvemoigb-cu.html
++++游戏框架(初探篇):http://www.javashuo.com/article/p-zfpoilbc-hy.html
++++.Net框架设计:http://www.javashuo.com/article/p-bvqhwwfm-cu.html
++++从零开始学架构:http://www.javashuo.com/article/p-xbebwfbh-gd.html
++++设计模式简单整理:http://www.javashuo.com/article/p-rngqugib-hg.html
++++专题:设计模式(精华篇):http://www.javashuo.com/article/p-nbohnaya-hw.html
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++Unity小游戏算法分析:http://www.javashuo.com/article/p-stddpwad-eg.html
++++Unity案例(Vehicle):http://www.javashuo.com/article/p-wxnfscgy-dy.html
++++UML类图:http://www.javashuo.com/article/p-sxberuew-bm.html
++++PowerDesigner简介:http://www.javashuo.com/article/p-deknpwxv-cu.html
++++Unity知识点0001:http://www.javashuo.com/article/p-ryvdxxjr-ep.html
++++Unity知识点0008:http://www.javashuo.com/article/p-kxgstxls-gu.html
++++U3D_Shader编程(第一篇:快速入门篇):http://www.javashuo.com/article/p-kyppgrac-gz.html
++++U3D_Shader编程(第二篇:基础夯实篇):http://www.javashuo.com/article/p-qkyowtli-hv.html
++++Unity引擎基础:http://www.javashuo.com/article/p-beommoeb-ka.html
++++Unity面向组件开发:http://www.javashuo.com/article/p-eigmuvut-dt.html
++++Unity物理系统:http://www.javashuo.com/article/p-nqvvciwv-kd.html
++++Unity2D平台开发:http://www.javashuo.com/article/p-ycaagdtj-hs.html
++++UGUI基础:http://www.javashuo.com/article/p-rukxwckw-mc.html
++++UGUI进阶:http://www.javashuo.com/article/p-wcatruhq-gt.html
++++UGUI综合:http://www.javashuo.com/article/p-dkccmqii-gg.html
++++Unity动画系统基础:http://www.javashuo.com/article/p-mbrdouxy-dq.html
++++Unity动画系统进阶:http://www.javashuo.com/article/p-aqaqpbkh-bp.html
++++Navigation导航系统:http://www.javashuo.com/article/p-dswwllas-t.html
++++Unity特效渲染:http://www.javashuo.com/article/p-ckojjyfj-bp.html
++++Unity数据存储:http://www.javashuo.com/article/p-bvlzynso-m.html
++++Unity中Sqlite数据库:http://www.javashuo.com/article/p-ejutsbxl-ca.html
++++WWW类和协程:http://www.javashuo.com/article/p-dbwmhsav-cy.html
++++Unity网络:http://www.javashuo.com/article/p-sqrlntgh-dw.html
++++Unity资源加密:http://www.javashuo.com/article/p-qbtlzpck-bo.html
++++PhotonServer简介:http://www.javashuo.com/article/p-cjotdrlu-z.html
++++编写Photon游戏服务器:http://www.javashuo.com/article/p-mrqkaqlj-dn.html
++++C#事件:http://www.javashuo.com/article/p-zmwruvql-gm.html
++++C#委托:http://www.javashuo.com/article/p-uozpymaf-gh.html
++++C#集合:http://www.javashuo.com/article/p-sfqfdqsf-ex.html
++++C#泛型:http://www.javashuo.com/article/p-xrttqngo-ee.html
++++C#接口:http://www.javashuo.com/article/p-vhlfplgv-dm.html
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:http://www.javashuo.com/article/p-olslkfao-cq.html
++++C#数据类型:http://www.javashuo.com/article/p-hmabbtmc-ba.html
++++Unity3D默认的快捷键:http://www.javashuo.com/article/p-wuwcrclr-s.html
++++游戏相关缩写:http://www.javashuo.com/article/p-mwacxwca-gm.html
++++UnityAPI.Rigidbody刚体:http://www.javashuo.com/article/p-phaztrtw-w.html
++++UnityAPI.Material材质:http://www.javashuo.com/article/p-ntyoqcng-q.html
++++UnityAPI.Android安卓:http://www.javashuo.com/article/p-fyyfgkck-q.html
++++UnityAPI.AndroidJNI安卓JNI:http://www.javashuo.com/article/p-kvxjsnzf-w.html
++++UnityAPI.Transform变换:http://www.javashuo.com/article/p-bfgrrhxl-cq.html
++++UnityAPI.WheelCollider轮碰撞器:http://www.javashuo.com/article/p-smnaoooi-cn.html
++++UnityAPI.Resources资源:http://www.javashuo.com/article/p-utqnokva-bu.html
++++JSON数据结构:http://www.javashuo.com/article/p-dljbtddn-g.html
++++CocosStudio快速入门:http://www.javashuo.com/article/p-qldbaqqa-v.html
++++Unity企业内训(目录):http://www.javashuo.com/article/p-oefbctlf-mn.html
++++Unity企业内训(第1讲):http://www.javashuo.com/article/p-ehlblkrj-mc.html
++++Unity企业内训(第2讲):http://www.javashuo.com/article/p-tiecmlwc-ma.html
++++Unity企业内训(第3讲):http://www.javashuo.com/article/p-mlpucjnv-ma.html
++++Unity企业内训(第4讲):http://www.javashuo.com/article/p-vfalurum-kz.html
++++Unity企业内训(第5讲):http://www.javashuo.com/article/p-ncrckqey-kv.html
++++Unity企业内训(第6讲):http://www.javashuo.com/article/p-gcrucvtb-ku.html
++++钻哥带您了解产品原型:http://www.javashuo.com/article/p-hhgxuwjv-kt.html
++++插件<Obi Rope>:http://www.javashuo.com/article/p-rmhegsmj-kr.html
++++计算机组成原理(教材篇):http://www.javashuo.com/article/p-sejaldpf-kr.html
++++5G接入:云计算和雾计算:http://www.javashuo.com/article/p-yqdivhsk-km.html
++++云计算通俗讲义:http://www.javashuo.com/article/p-rkzxxaay-mc.html
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
--_--VRunSoft:lovezuanzuan--_--ww4ww--_--