VR副作用、演示、涉及图形图像算法、UI设计和最大挑战等

2024-01-07 21:50

本文主要是介绍VR副作用、演示、涉及图形图像算法、UI设计和最大挑战等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


//副作用:VR屏幕离人眼太近,是否造成比目前使用传统屏幕会带来更多的视力危害
虚拟现实技术一旦进入了终极状态,开始进入神经科学领域的话,用炫酷一点的话说已经进入了“上帝禁区”了。通过虚拟现实技术让人类的神经与虚拟现实世界连接,通过扭曲人类的五观反馈,来实现与虚拟现实世界的互动。
这样一种技术会对人体造成什么影响?对神经的损害程度有多严重?会不会像毒品一样会让人成瘾?会不会留下后遗症从而在真实现实世界里产生幻觉?这些都将在未来需要小心翼翼尝试和防范的内容。
终极状态的虚拟现实技术要建立在强人工智能之上,而强人工智能其实还处在理论架构层面,所以在此之前,整个科学界更多的还是在弱人工智能和虚拟现实应用层面上探索。虚拟现实与人工智能将会是未来最让人类兴奋的两大领域,这是人类进入“上帝禁区”的一次尝试,最终将改变整个世界的基础。
//-----------------------------
//真正的难点是创意和设计
*/

/移动端[硬件方面]
//系统优化,算法,图形图像:手机加盒子[安卓系统层面优化:降低延迟,提升体验]
Wifi,蓝牙,预言,整体化的一个交互体验

//移动端VR技术指标:
陀螺仪技术[随动的准确][刷新率]
图形图像[显示效率][芯片原厂底层优化]
*交互融合[融合算法]:即前面2个方面做到一定程度,融合起来就是VR的根本
延时20ms,功耗性能过热
程序音频制作[复杂]
--融合算法[保持陀螺仪数据稳定和准确]:陀螺仪,加速度和地磁进行有效的融合矫正[硬件底层]
--图形图像:
---Front Buffer Rendering[latency延迟相关]:安卓架构并非实时性系统,为了防止撕裂或者,本身做了很多验证
---ATW[TimeWarp][中间帧生成技术][异步时间扭曲][刷新率保持稳定帧数并降低延迟][GPU抢占]
---Multi-View- Rendering:原先是左右眼图2次渲染,后面希望一次调用自动绘制2边,提高GPU性能
---Multi-Resolution Rendering:图像本身做反畸变,四周边缘不需要做那么多跟变绿渲染。反畸变算法中将四周压缩,这个时候四周用100%分辨率渲染,会浪费资源。这个同时是GPU厂家需要优化的。

//------------------------Start---------------------
1.选择设备[头显设备][控制设备]
设备分为: 一体机[配重]   手机+盒子

选择不同平台[设备],就需要做适配(SDK)[硬件][交互][输入系统]
选好设备后,定内容

2.内容:传统的[游戏][漫游]方式是否能符合虚拟现实特点

内容订完后定操作方式(头显输入,手柄,手势,手环)

**交互[设计层面]:在全新的设备下,达到舒适的交互体验
1.UI界面设计:
非传统2D UI界面,设计3DUI界面,需要结合硬件的输入和头盔的朝向。
导航,选择与操控物体,菜单与用户界面,文字输入
2.交互方式(如何操作,输入方式):
2.1以下是核心体验3要素:
Camera:相机的控制行为很大程度决定了晕不晕
Control:头显输入和手柄[单控制器][双控制器]是主流,对玩法设计会有革命性改变;
交互操作需要花大量时间去打磨,然而国内开发习惯只能呵呵哒,一开始就各种后期设计往里面加,手感巨差
Character:用户自身在VR中是怎么样的呈现方式(考虑做个镜子),通常需要同步设备的头部变换和双手变换信息。如果加入身体和四肢的话,需要考虑进行全身的骨骼IK和局部动画叠加方方案

2.2其他使用技术手段[程序等]能做到的[技术最大的挑战是性能--环境渲染]:
Rendring :PBR和光照烘焙,需要优化[程序][美术],需要关注的Post Effect, AA, Specular liasing, Lighting/Shadow,Batch,瓶颈是像素处理方面
Input:头显方向变化输入[纯头部操作交互模块],比如land’s ENd。 光学体感,动作捕捉。
UI:由于视野和沉浸式体验的要求,UI通常是处于3D空间里的,怎么设计出好的效果需要美术头疼一下。交互方面由于双手的引入,可以尝试做成体感的方式,UI会变成场景物件,到时候换把枪可能就是伸手从地上捡了
Physics:双持控制器的引入会极大地依赖物理模拟的效果,很多推、扔、打、抓等的操作都与物理密切相关,同时也涉及到很多碰撞问题,比如头插进墙壁怎么处理等
Audio: VR中的耳机是可以随头部转动和移动的,对声音的定位能力非常强,音效的重要性不亚于画面,没有有空间感的音效在沉浸感上直接降一半。Audio Spatialize技术是需要程序和音效师共同关注的,不仅仅是像以前那样做个3D音效完事

简而言之:性能,UI,输入方式,物理,音效
TIPs:社交[多人联机][虚拟影院],注意的点是网络延迟



[]要做到[维持帧数在90FPS]
[]避免[晕眩][]
[方法]降低延迟[取决于设备刷新频率]


(19.3ms延迟的产生过程)

算法:反畸变,反色散,timeWarp三个算法

1、首先从头部转动到传感器读到数据大概需要1ms的时间,如果采用世界一流的传感器,那么采样率在1KHz,也就是说每秒钟可以读取到一千个数据,那么每个数据就是1ms,也就得出了这1ms的延迟。
2、然后数据需要经由单片机,传输到电脑。因为它们的接口是不同的,就好像空调的电源插头不能插到小台灯的插座里,需要一些转换工作,单片机就负责了这样的转换。数据从传感器到单片机大概需要1ms。因为前面数据的产生需要1ms,于是如果不在1ms内将这些数据传送到单片机,那么后来的数据就会被丢弃。
3、接下来是单片机经由USB线将数据传输到PC。USB线具有极高的传输速率,但是完全由Host端(也就是PC端)控制传输的。也就是说,如果Host端不接收单片机发来的数据,那么数据就会被丢弃。采用HID方式的情况下,Host端会经常检查是否有数据传输上来,然后将数据存放到内存,所以这个时间在1ms之内。至此,数据已经到达PC的内存了,走完了全部的硬件过程。由于数据带宽、通信协议等限制,会占用3ms~4ms之间的时间,很难再减少了。
4、在硬件上传输完成后,就是软件算法处理的过程了。
由于模拟信号本身的噪声和漂移,转换成数字信号后,数据中存在大量的噪声和漂移。于是需要复杂的数字信号处理方法将这些噪声和漂移过滤掉。这样,传感器传来的9轴数据就成为了渲染游戏所需的头部旋转的四元数旋转数据。处理这个数据一般在1ms以内。渲染时只要将这个旋转的四元数乘以摄像机的坐标,就得出了观察方向,可以用于渲染场景。通过特殊的算法(例如Time-warp,目前最快的算法),根据先前的数据处理得到的图像,完成真正被显示的画面。幸亏有了Time-warp算法,我们可以基本忽略渲染场景的延迟。
5、当场景渲染完之后还需要做反畸变,反色散等处理。这些处理一般需要消耗GPU 0.5ms的时间。为了安全起见,将这个时间设为3ms,来保证准备传输下一帧到显示器,也就是下一个垂直同步信号来之前,GPU必定能把反畸变、反色散做成。
6、然后就是传输图像到显示器的时间了。如前所述,按照75Hz计算,那么需要13.3ms。到此就结束了吗?不是的,还有显示器将图像显示出来的时间。由于LCD显示器是晶体由电场控制旋转的物理过程,所以传统的LCD显示器需要15~28ms不等的时间来响应。而最新的OLED技术则将这个时间减少到了微秒级。
好了,让我们将这些时间累加起来,3ms + 3ms + 13.3ms = 19.3ms。当然这是最理想的情况,还有可能CPU的性能、USB丢包等问题可能导致达不到这样低的延迟。
国内大朋和“国际标准”Oculus的产品都是采用此种算法,最低延迟是完全一致的,在全世界范围内,19.3ms的延迟是当下最科学,最可信的延迟推算时间。
当然Oculus展望未来可以将延迟降得更低也不是吹嘘的。从上面的算式可以看出,主要瓶颈在13.3ms这个延迟过程上。通过一些特殊的方法可以减少一半,甚至更少。但这需要硬件厂家、操作系统、游戏开发者共同的努力。

这篇关于VR副作用、演示、涉及图形图像算法、UI设计和最大挑战等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581339

相关文章

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO