什么是虚拟现实技术_虚拟现实技术是什么意思

第1篇:什么是虚拟现实技术_虚拟现实技术是什么意思

虚拟实境,简称vr技术,也称灵境技术或人工环境,是利用电脑模拟产生一个三度空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身历其境一般,可以及时、没有限制地观察三度空间内的事物。下面是小编为大家整理的虚拟现实技术的相关知识,欢迎阅读!希望对大家有所帮助!

发展历史

虚拟现实技术演变发展史大体上可以分为四个阶段有声形动态的模拟是蕴涵虚拟现实思想的第一阶段(1963)年以前虚拟现实萌芽为第二阶段(1963-1972)虚拟现实概念的产生和理论初步形成为第三阶段(1973-*)虚拟现实理论进一步的完善和应用为第四阶段(1990-2004)。

2023年2月3日,虚拟现实技术登陆台北电玩展受热捧。

技术介绍

虚拟现实是多种技术的综合,包括实时三维计算机图形技术,广角(宽视野)立体显示技术,对观察者头、眼和手的跟踪技术,以及触觉/力觉反馈、立体声、网络传输、语音输入输出技术等。下面对这些技术分别加以说明。

实时三维计算机图形

相比较而言,利用计算机模型产生图形图像并不是太难的事情。如果有足够准确的模型,又有足够的时间,我们就可以生成不同光照条件下各种物体的精确图像,但是这里的关键是实时。例如在飞行模拟系统中,图像的刷新相当重要,同时对图像质量的要求也很高,再加上非常复杂的虚拟环境,问题就变得相当困难。

vr也能为我们的日常生活提供不少便利,就拿*人最看重的房子来说吧,先是四处奔波的到处看房,按大上海的尺寸,上一家看过的房子和下一家要看的房子间的距离……买个房子除了要投入大量的时间,还需要绝好的体力。

用vr开坦克会怎么样?游戏机技术可有效提升战斗力在这些人中,装填手肯定是最不需要、也不能装备vr头盔的。对于其他人则不同,无论是*手、驾驶员、还是车长,vr头盔都能带来很大程度上的改善——尤其是驾驶员和车长[5]。

显示

人看周围的世界时,由于两只眼睛的位置不同,得到的图像略有不同,这些图像在脑子里融合起来,就形成了一个关于周围世界的整体景象,这个景象中包括了距离远近的信息。当然,距离信息也可以通过其他方法获得,例如眼睛焦距的远近、物体大小的比较等。

在vr系统中,双目立体视觉起了很大作用。用户的两只眼睛看到的不同图像是分别产生的,显示在不同的显示器上。有的系统采用单个显示器,但用户带上特殊的眼镜后,一只眼睛只能看到奇数帧图像,另一只眼睛只能看到偶数帧图像,奇、偶帧之间的不同也就是视差就产生了立体感。

用户(头、眼)的跟踪:在人造环境中,每个物体相对于系统的坐标系都有一个位置与姿态,而用户也是如此。用户看到的景象是由用户的位置和头(眼)的方向来确定的。

跟踪头部运动的虚拟现实头套:在传统的计算机图形技术中,视场的改变是通过鼠标或键盘来实现的,用户的视觉系统和运动感知系统是分离的,而利用头部跟踪来改变图像的视角,用户的视觉系统和运动感知系统之间就可以联系起来,感觉更逼真。另一个优点是,用户不仅可以通过双目立体视觉去认识环境,而且可以通过头部的运动去观察环境。

在用户与计算机的交互中,键盘和鼠标是目前最常用的工具,但对于三维空间来说,它们都不太适合。在三维空间中因为有六个自由度,我们很难找出比较直观的办法把鼠标的平面运动映*成三维空间的任意运动。现在,已经有一些设备可以提供六个自由度,如3space数字化仪和spaceball空间球等。另外一些*能比较优异的设备是数据手套和数据衣。

声音

人能够很好地判定声源的方向。在水平方向上,我们靠声音的相位差及强度的差别来确定声音的方向,因为声音到达两只耳朵的时间或距离有所不同。常见的立体声效果就是靠左右耳听到在不同位置录制的不同声音来实现的,所以会有一种方向感。现实生活里,当头部转动时,听到的声音的方向就会改变。但目前在vr系统中,声音的方向与用户头部的运动无关。

感觉

在一个vr系统中,用户可以看到一个虚拟的杯子。你可以设法去抓住它,但是你的手没有真正接触杯子的感觉,并有可能穿过虚拟杯子的“表面”,而这在现实生活中是不可能的。解决这一问题的常用装置是在手套内层安装一些可以振动的触点来模拟触觉。

语音

在vr系统中,语音的输入输出也很重要。这就要求虚拟环境能听懂人的语言,并能与人实时交互。而让计算机识别人的语音是相当困难的,因为语音信号和自然语言信号有其“多边*”和复杂*。例如,连续语音中词与词之间没有明显的停顿,同一词、同一字的发音受前后词、字的影响,不仅不同人说同一词会有所不同,就是同一人发音也会受到心理、生理和环境的影响而有所不同。

使用人的自然语言作为计算机输入目前有两个问题,首先是效率问题,为便于计算机理解,输入的语音可能会相当罗嗦。其次是正确*问题,计算机理解语音的方法是对比匹配,而没有人的智能。

第2篇:虚拟现实技术概论教案

第1章虚拟现实技术概论

1.1虚拟现实技术概述

教学目标

1.了解虚拟现实技术的定义。

2.了解虚拟现实技术的特*。

3.了解虚拟现实技术的分类。

学习引导

虚拟现实是一个在当今*上备受关注的课题。如果真正实现了虚拟现实,那么整个人类的生活与发展将会发生很大的变革。我们可以设想这样一个情景:当你戴上特制的头盔与手套后,你就发现自己已置身于一家博物馆中,当你看见一件精美的展品时,你甚至可以从上而下、由里至外仔细地观摩……这就是虚拟现实技术给你带来的一切--近乎完美的真实感觉。

长期以来,人们对真实地再现现实场景有各种想法,然而许多人对虚拟现实这一概念十分模糊,认为只要能够提供三维立体感觉的系统就叫做虚拟现实系统。其实这是不确切的,按照当今*上流行的定义,一个真正实现虚拟现实的系统应当具有以下三个基本要素。

(1)能够给用户以三维立体的虚拟环境。

(2)应当给使用者第一人称的感觉,并有实时任意活动的自由。

(3)用户能够通过一些控制装置实时地*纵和改变用户所进入的虚拟环境。

在现实生活中,我们观察到的都是有景深、有立体感的三维世界,因此要做到完全模拟现实,仅仅靠简单的二维平面图形是不够的,只有用三维系统才能真正模拟三维世界,给用户一种身临其境的感觉。

在实现三维场景后,用户在虚拟场景中要有第一人称的感觉,即能体会到一种与现实世界一样的感觉,能够把视点移到所构造成的三维场景中的任何一点,就像在真实世界中可以随意前进、后退、转弯、蹲下、跳起以得到不同的视角,能够实现在现实中做到的一切动作,并能实时*纵虚拟场景的物体和改变虚拟境界。

比如,打印一封信的*作流程为:首先,打开计算机的电源,进入所需要的编辑环境;然后从键盘输入信的内容;最后用打印机将它打印出来。在这个过程中,我们一直在对不同物体--开关、键盘、显示器、打印机等进行*作,并使它们不断地改变动作。这是我们在实际生活中的典型事例。同样的,在一个真正的虚拟现实系统中,我们也必须具备相同的能力。

可以说,任何系统只要满足以上三个要素,就可以称其为虚拟现实系统。目前,能够实现前两个要素的系统已经为数不少,但是允许用户直接对虚拟境界中的物体进行*作的系统就不多了。

第3篇:Java虚拟机是什么

Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。那么大家知道Java虚拟机是什么呢?下面一起来看看!

什么是Java虚拟机

作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。

我们都知道Java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释:

虚拟机是一种抽象化的计算机,通过在实际的计算机上*模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体*作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

这种解释应该算是正确的,但是只描述了虚拟机的外部行为和功能,并没有针对内部原理做出说明。一般情况下我们不需要知道虚拟机的运行原理,只要专注写java代码就可以了,这也正是虚拟机之所以存在的原因--屏蔽底层*作系统平台的不同并且减少基于原生语言开发的复杂*,使java这门语言能够跨各种平台(只要虚拟机厂商在特定平台上实现了虚拟机),并且简单易用。这些都是虚拟机的外部特*,但是从这些信息来解释虚拟机,未免太笼统了,无法让我们知道内部原理。

从进程的角度解释JVM

让我们尝试从*作系统的层面来理解虚拟机。我们知道,虚拟机是运行在*作系统之中的,那么什么东西才能在*作系统中运行呢?当然是进程,因为进程是*作系统中的执行单位。可以这样理解,当它在运行的时候,它就是一个*作系统中的进程实例,当它没有在运行时(作为可执行文件存放于文件系统中),可以把它叫做程序。

对命令行比较熟悉的同学,都知道其实一个命令对应一个可执行的二进制文件,当敲下这个命令并且回车后,就会创建一个进程,加载对应的可执行文件到进程的地址空间中,并且执行其中的指令。下面对比C语言和Java语言的HelloWorld程序来说明问题。

首先编写C语言版的HelloWorld程序。

[cpp]viewplaincopy#include

#include

intmain(void){

printf("helloworld

");

return0;

}

编译C语言版的HelloWorld程序:

[plain]viewplaincopygccHelloWorld.c-oHelloWorld

运行c语言版的HelloWorld程序:

[plain]viewplaincopyzhangjg@linux:/deve/workspace/HelloWorld/src$./HelloWorld

helloworld

gcc编译器编译后的文件直接就是可*作系统识别的二进制可执行文件,当我们在命令行中敲下./HelloWorld这条命令的时候,直接创建一个进程,并且将可执行文件加载到进程的地址空间中,执行文件中的指令。

作为对比,我们看一下Java版HelloWord程序的编译和执行形式。

首先编写源文件HelloWord.java:

[java]viewplaincopypublicclassHelloWorld{

publicstaticvoidmain(String[]args){

System.out.println("HelloWorld");

}

}

编译Java版的HelloWorld程序:

[java]viewplaincopyzhangjg@linux:/deve/workspace/HelloJava/src$javacHelloWorld.java

zhangjg@linux:/deve/workspace/HelloJava/src$ls

HelloWorld.classHelloWorld.java

运行Java版的HelloWorld程序:

[plain]viewplaincopyzhangjg@linux:/deve/workspace/HelloJava/src$java-classpath.HelloWorld

HelloWorld

从上面的过程可以看到,我们在运行Java版的HelloWorld程序的时候,敲入的命令并不是./HelloWorld.class。因为class文件并不是可以直接*作系统识别的二进制可执行文件。我们敲入的是java这个命令。这个命令说明,我们首先启动的是一个叫做java的程序,这个java程序在运行起来之后就是一个JVM进程实例。

上面的命令执行流程是这样的:

java命令首先启动虚拟机进程,虚拟机进程成功启动后,读取参数“HelloWorld”,把他作为初始类加载到内存,对这个类进行初始化和动态链接(关于类的初始化和动态链接会在后面的博客中介绍),然后从这个类的main方法开始执行。也就是说我们的.class文件不是直接被系统加载后直接在cpu上执行的,而是被一个叫做虚拟机的进程托管的。首先必须虚拟机进程启动就绪,然后由虚拟机中的类加载器加载必要的class文件,包括jdk中的基础类(如String和Object等),然后由虚拟机进程解释class字节码指令,把这些字节码指令翻译成本机cpu能够识别的指令,才能在cpu上运行。

从这个层面上来看,在执行一个所谓的java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程,而不是我们写的一个个的class文件。这个叫做虚拟机的进程处理一些底层的*作,比如内存的分配和释放等等。我们编写的class文件只是虚拟机进程执行时需要的“原料”。这些“原料”在运行时被加载到虚拟机中,被虚拟机解释执行,以控制虚拟机实现我们java代码中所定义的一些相对高层的*作,比如创建一个文件等,可以将class文件中的信息看做对虚拟机的控制信息,也就是一种虚拟指令。

编程语言也有自己的原理,学习一门语言,主要是把它的原理搞明白。看似一个简单的HelloWorld程序,也有很多深入的内容值得剖析。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yyfangchan@163.com (举报时请带上具体的网址) 举报,一经查实,本站将立刻删除