博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于VR 应用设计的 8 个建议
阅读量:5223 次
发布时间:2019-06-14

本文共 7010 字,大约阅读时间需要 23 分钟。

 

  引用

  作者简介: 冀盼,现任奥秘游戏CTO,负责奥秘IT产品规划、技术研究、技术团队管理,其团队所研发的探索解谜游戏《画境》,是HTC首届VR内容开发大赛的获奖作品。

  本文为CSDN原创文章,未经允许不得转载,如需转载请联系mobile@csdn.net。

  越来越多的从业人员对VR产生兴趣,想要设计VR应用,但是VR应用设计与原手机App或桌面应用多少有一些区别,下面文章就从实际开发过程中获得的经验,为大家做一些设计上的建议。

  一、刷新率和帧数的影响

  刷新率是影响眩晕感的重要因素之一。刷新率依赖于显示器,即指显卡将显示信号输出刷新的速度,比如60Hz就是每秒钟显示器输入显卡输出的60次信号。

  帧数FPS由显卡决定,是指画面改变的速度,比如60fps就是每秒钟显卡生成60张画面图片(理论上,每一帧都是不同的画面)。

  只要显卡性能足够好,帧数就可以很高,画面就会流畅。所以目前主机VR都要求配置好显卡的原因。刷新率和帧数综合起来,任何一项比较低,都会增加眩晕感和影响视觉体验。

  目前主流产品都有各自的刷新率标准,要求产品必须维持在最低刷新率标准以上帧数,才能保证产品的最低体验要求。如HTC Vive的刷新率为90Hz,PSVR的刷新率为90Hz、120Hz两档,Oculus刷新率同样为90Hz。如果程序产品的每秒帧数FPS低于90,则可能会出现明显的画面卡顿,造成晕眩,引起体验的不适。帧数高于刷新率,则由于显示设备原因显示效果是没有提升的,即刷新率决定了体验上限,帧数决定了体验下限,换种说法即是硬件设备决定体验上限,软件产品决定体验下限。只有软件优化到硬件的推荐标准,才能让体验者得到应有的良好体验。

  根据“全球VR技术标准”,75Hz以上刷新率将成VR新行业的游戏规则。而如果要想不晕,刷新率和帧数最少需要达到90才勉强能做到,120以上时,才可能不头晕。而现在相当一部分VR硬件产品,只能做到60Hz的刷新率,而如果软件产品优化不足,FPS再低的话,头晕就是一定的了。

  二、分辨率影响

  分辨率是影响沉浸感的重要因素之一。分辨率越高,画面越清晰,越能让人有身临其境的感觉,分辨率越低,越容易让人发现屏幕上的颗粒感,会时刻提配自己戴了头显或眼镜,是在虚拟世界中,破坏沉浸感。

  Oculus Rift和HTC Vive均为单眼1200*1080分辨率,相当于双眼2K屏,PlayStation VR的分辨率为单眼960*1080,双眼1920*1080分辨率,同样相当于2K屏。

  三、场景复杂度影响

  场景是指应用中用户所处的虚拟环境,包括环境中的光照、阴影、人文建筑、物品、自然景观、角色人物等。特别要注意的是用户视线所及范围内,如果有太多消耗GPU和CPU的内容,会降低帧率,从而影响体验。

  1.物体排布

  观察者人眼在观察场景中物体时,如果各物体与观察者的距离各不相同,人就需要频繁调整瞳距,容易使其视觉疲劳并引起对屏幕上颗粒感的注意。所以建议物体排布采用以观察者为圆心,尽量围绕观察者以圆弧状排布,而且排布的层次不要过多或递次为显示重点,以减少观察者调整瞳距的频率。建议的物体排布位置,如图1示例的三段弧线:

  

 

  图1 弧形排布位置

  排布距离最理想是在3-10米之间,但由于设计需要,排布在范围外也完全没有问题,只是在这个范围内人观察时是最舒服的。

  2.晕眩回忆

  场景中各模型的贴图不建议过于复杂,过于复杂的贴图,更容易引起晕眩。

  此外,在场景中,看到与实际生活中易引起晕眩的模拟情景,也会引起晕眩,如图2所示。

  

 

  图2 晕眩的楼梯场景

  3.模型顶点数

  一般模型中顶点数量增加可以得到更精确的模型,但CPU和GPU对顶点的计算处理都很多。GPU中渲染的顶点数取决于GPU性能和Shader的复杂程度。一般来说,每帧之内,在PC上几百万顶点内,在移动平台上建议不超过10万顶点。过多顶点可能引起性能问题 ,以致帧数下降造成卡顿,直接导致晕眩。

  4.大小

  场景对于设备资源的消耗非常大,所以场景要采用尽量节约的方式使用。一般建议在VR中都使用小场景,节约资源,同时可以更集中精力优化场景中有限的资源和丰富交互细节,提升产品体验。

  每个场景采用小场景,也可以通过场景切换拼接出一个宏大的故事场景。

  5.FOV视场角影响

  视场角,英文 Field of View,简称FOV。在显示系统中,视场角就是显示器边缘与观察点(眼睛)连线的夹角。如图3所示,AOB角就是水平视场角,BOC就是垂直视场角。

  

 

  图3 视场角

  人眼视场角为120°,目前主流设备视场角一般在110°左右。由于人眼注意力基本维持在60°以内的近周,所以在设计体验内容时,尽量让交互信息在60°以内显示。比如在解谜类游戏中,当触发一个机关不在当前视线内,尽量延后触发,当玩家转头,机关在能获取到用户注意力的时候再进行触发。

  四、摄像机控制

  摄像机运动决定体验者所看到的图像,而摄像机是否完全和用户运动相协调一致,决定了体验者观察东西时是否眩晕。前面章节提到过眩晕的主要原因之一是身体前庭系统获取的信息和眼睛获取信息不一致,故最理想的成像效果,就是摄像机完全和人眼运动同步。

  但是为了增加沉浸感,又要尽量模拟真实的效果。想象下坐在汽车上,随着汽车颠簸,人看到的各种景像也都跟着晃动。那是否在VR中模拟玩家坐车,也要制造出摄相机轻微抖动的效果呢?答案是否定的。不晕是第一需求,沉浸感排第二。根据晕眩原因,模拟体验者乘车,但是如果体验者不动,摄像机就应当不动,画面要保持同步。所以不建议为了增加沉浸感,放弃防止晕眩,而真晕眩起来,体验者根本不可能感受到身临其境,反而是快速摘了头显。

  由于体验者位置相对固定,即使是像Vive这种带有空间定位的VR设备,也只能限制在最多几十平米范围。而相对于可以无限大的虚拟空间,移动问题如何解决?解决方案有两大类若干种。

  一类是依赖外部设备,比如跑步机、万向机等设备,让人可以做腿脚运动或身体感受到运动趋势,可以进一步欺骗大脑,让人有运动的感觉,减少晕眩;另一类是仍旧利用现有设备,通过瞬移、减小显示运动画面的区域、增加静态参照物等方式在虚拟空间实现大范围运动。

  瞬移的方式由于位置变换极快,大脑来不及反应,所以没有眩晕感,增加静态参照物能明确自己的位置,让大脑理解为是外部环境在变,自己并没有运动,所以也可以降低晕眩。

  如果摄像机控制不当,就会引起运动冲突,比如人在站立静止态,但摄像机移动对人的视觉造成人在运动的假象,身体感知与视觉感知冲突,就会晕眩。

  五、自我认知冲突

  体验者沉浸在虚拟世界中,也是对自己有一个清醒的认知。一步走多远,伸手能拿到哪里的东西,想“摸”一个虚拟物品要怎么伸手等等。那么,在虚拟世界中究竟该如何逐步帮体验者建立自我形象身份、自我能力认知?

  自我形象认知,是对自身长相、穿着的认知,比较简单直接的方式是先进入一个选择人物的场景。在这个场景中体验者还是体验者,由他来选择接下来的场景中他将扮演谁。在选择过程中,会慢慢建立自身与目标的联系,将两者对等起来;也可以选择其它比较有创意的方式,比如在场景中设置镜子,当体验者在照镜子时就会发现自己的形象是什么,穿着打扮是什么样的,或者是有几个同伴,根据同伴的样子可以推测出自己的形象,或者是能看到自己的双手或双脚,根据双手、双脚的情况猜测自己整体形象。

  体验者双手如果有手柄之类的操作装置,一定要精确定位双手的手长,不要在虚拟场景中任意加长或缩短,会让体验者的自我认知造成困惑。如果一定要延长,建议通过在手的位置之外添加工具之类的物体,来达到延长操作距离的目标,比如HTC Vive中很多游戏都采用手柄发出的射线来选择远处的物品,从而进行双手触碰不到的东西的交互。

  六、更自然的交互

  在虚拟世界中,体验者一方面会觉得新奇,另一方面极可能会感到不适,而更自然的交互是可以大大降低体验者不适,提升沉浸感。

  目前在虚拟世界中的交互,有有限定位的Oculus,采用坐姿,在坐姿下头显一定程度精确定位。也有较大范围的空间定位,如HTC Vive,可以坐姿在2*1.5到4*4米空间或再略大的空间内精确定位。也有只有方向的各种VR设备,总之都是尽量采用与人运动规律相符的运动方式。抬头就看到头上的内容,低头就看到脚下的内容,转头则看到旁边的内容,移动时与真实物理空间一比一的等距离移动,要胜于人静止而瞬移或匀速移动的体验。还有采用OpiTrack的定位技术,实现几百平甚至几千平的大范围定位,越接近真实的行走、转向方式,越能提升沉浸感。

  1. 抓取的交互

  在很多VR体验里会有对物体的抓取,最理想的效果就是体验者直接伸手去抓取虚拟场景中的物体。目前可以借助的技术称之为手势识别,比如国外的Leap Motion,提供了硬件设备和相应的SDK,可以实现较为精确的手势识别。使用方式为将Leap Motion的摄像头固定在头显上或胸前,这样在摄像头拍摄范围内,基本上都可以较准确地识别手势。通过程序调用相应的SDK,就可以获取手势输入信息,同样可以进行手部模型替换,以得到更真实的体验。变通的方式,如Vive的手柄,提供了握力键、扳机,对于抓取动作可以通过简单的引导教学,让体验者习得握力键的抓取功能或扳机键的抓取功能,慢慢习惯后再使用会觉得相当自然,并不会影响渲染感。

  2. 抛掷的交互

  和抓取对应的交互有放置和抛掷,理想效果还是直接用手参与体验,做抛掷动作并松手实现物体的抛掷。而借用手柄的操作体验,则是相类似的,按紧扳机或握力键并做抛掷动作,在合适的想松手的位置将按键松开,以实现抛掷。这些交互跟真实的抛掷非常相似,只是抛掷物体的重力感应暂时还没有。但是随着物体抛出去,根据物体运动曲线,会让人确信抛掷的交互过程是真实的。如在游戏《画境》中投击苹果的环节,被认为是非常有趣的一个玩法,如图4所示。

  

 

  图4 投击苹果

  3. 躲避的交互

  在很多VR游戏中都会出现,且可以发现是非常有乐趣的一种交互。当有子弹、弓矢等飞过,人会本能地进行躲闪,而当躲闪成功后会有难言的喜悦,所以可以在VR体验中适度增加些躲闪的玩法。而在采用Vive这种空间定位技术的设备上,更能获得极佳的体验。与此相反,击中或接住体验也是相当有趣,比如一款由独立开发商Dylan Fitterer制作的VR音乐游戏《音盾》中使用手柄接住飞来的被视觉化了的音乐节奏,让人乐此不疲。

  4. 工具或武器的使用

  在VR检验中,难免有一些工具的使用,比如螺丝刀、钥匙、长剑、大刀、枪械等。同样需要遵循尽可能自然的交互设计要求,比如刀剑的劈砍,根据手部追踪或手柄追踪,可以完美同步人的劈砍动作,沉浸感十足。而枪械的操控,换弹夹、上膛、瞄准,由于十分繁琐,可以有选择地保留和简化。否则在精细度上会耗费相当大的精力去实现,而且体验时也会感觉麻烦,比如只保留换弹夹,上膛省去,瞄准可以通过放慢子弹速度或增加子弹尾焰,让人能看到弹道而靠感觉去瞄准,这样的体验可能更好。

  5. 爬行的交互

  在体验中身姿调整相关的玩法也比较多样,在一些密室类游戏中的爬行体验,也是非常有趣。可以利用场景,设计一些低矮通道,或者在低矮处一些必须凑近观察的重要信息,或者为躲避攻击,以引导体验者爬行或蹲地行进。

  6. 飞行的交互

  有些VR体验会配合一些载具,模拟飞行或骑行,需要注意的一点是一定要让头显显示内容和载具反馈完全一致,否则极易引起晕炫。

  七、音乐、音效的使用

  好的音乐可以直达人心,体验者在一个场景中,如果听到合适的背景音乐,交互过程中有合适的音效,马上能提升沉浸感,体验效果至少增强20-30%,是绝对应当投入相当大的精力去制作好的音乐、音效。

  八、多人联机

  越来越多的VR体验,已经开始进行网络连接,以增加社交的乐趣。目前由于VR对时延要求非常高,网络时延也得非常低才行,所以只适合弱联网联机或局域网强联机体验。多人的模式中协作、对战、对话等都是值得推荐的设计内容。而只要联机,队友或对手的形象要有,与此相匹配的动作也得有,所以IK动画的要求就被提了出来。

  现在有相对成熟的思路,一种是纯IK,根据头、手的位置,反推整个模型的动作;一种是半IK,通过头、手的位置,反推模型状态,然后调用状态动画。两种思路都可以做出相应的效果,精细程度看团队水平。

  总结,说了这么多,VR设计还是方兴未艾,大家投身其中大有可为。上面的建议限于当前设备、软件技术、个人经验,会存在一些不完善。大家还是要做原型,通过原型去检验,什么样的VR设计才是好的设计。总之要牢记:不要晕、提升沉浸感。

  bbs.clzg.cn/thread-7416953-1-1.html

  blog.jinti.com/kg10739556/3917087.htm

  blog.jinti.com/kg10739556/3917090.htm

  blog.jinti.com/kg10739556/3917088.htm

  blog.jinti.com/kg10739556/3917093.htm

  blog.jinti.com/kg10739556/3917094.htm

  bbs.clzg.cn/thread-7412935-1-1.html

  www.xianhuo8.cn/bbs/thread-179771-1-1.html

  www.xianhuo8.cn/bbs/thread-179773-1-1.html

  bbs.16fan.com/thread-595222-1-1.html

  bbs.16fan.com/thread-595223-1-1.html

  bbs.16fan.com/thread-595225-1-1.html

  blog.sina.com.cn/s/blog_7362e71e0102wsk4.html

  www.xianhuo8.cn/bbs/thread-179789-1-1.html

  guba.eastmoney.com/news,dcblog,563110286.html

  www.ttx.cn/read-htm-tid-8239874.html

  www.talkforex.com/thread-837248-1-1.html

  www.wangchao.net.cn/hi/detail_242770.html

  luan163.com/t-106027-1-1.html

  bbs.hebnews.cn/thread-7144257-1-1.html

  club.news.sohu.com/stockbooks/thread/4gbce2sdj9b

  bbs.16fan.com/thread-595267-1-1.html

  www.tiboo.cn/licai/b3562546

  www.d1money.com/article/talk/2016-10-28/aumneu9fjhbzlym5peedkz.html

  club.1688.com/threadview/48719687.htm

  www.diyizby.com/bbs/thread-4679449-1-1.html

  www.xianhuo8.cn/bbs/thread-179893-1-1.html

  www.ttx.cn/read-htm-tid-8240095.html

  www.guba.com/show-3694263-1.html

  www.wangchao.net.cn/hi/detail_242917.html

  luan163.com/t-106075-1-1.html

  bbs.16fan.com/thread-595344-1-1.html

  www.tiboo.cn/licai/b3563176

  dev.duoshuo.com/threads/5812c8d22f8468596752f96f

  www.d1money.com/article/talk/2016-10-28/deqgggoihb7y4hfgb1qflf.html

  www.uuzuu.com/read.php?tid=1384689&ds=1

  www.bbbbm.com/read.php?tid=1266621&ds=1

  bbs.e521.com/thread-240022-1-1.html

  bj.bbs.jiaju001.com/thread-913894-1-1.html

  www.3utui.com/article-23432-1.html

转载于:https://www.cnblogs.com/huqingchen/p/6008779.html

你可能感兴趣的文章
C#编程(二十五)----------接口
查看>>
c如何弹出保存路径/保存文件对话框
查看>>
HTML标签二
查看>>
caffe的在ubuntu下面的安装
查看>>
Python 3语法小记(九) 异常 Exception
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
MySQL常用的函数
查看>>
Django 相关
查看>>
ArcGIS自定义工具箱-字段合并
查看>>
git init
查看>>
Vue(day8)
查看>>
sshpass ssh登录时自动输入密码
查看>>
训练记录
查看>>
【转】ubuntu16.04设置python3为默认及一些库的安装
查看>>
算数几何均值不等式,柯西不等式,琴生Jensen不等式
查看>>
mysql group by的用法 注意
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Python中的join()函数的用法
查看>>
Hive教程(1)
查看>>
黑马程序员-指针的初步认识
查看>>