JavaRush /Java 博客 /Random-ZH /虚拟现实中的Java。VR/AR 真的是未来吗?Java 在其中占有一席之地吗?

虚拟现实中的Java。VR/AR 真的是未来吗?Java 在其中占有一席之地吗?

已在 Random-ZH 群组中发布
在本系列的前几篇文章中,我们已经考察了几乎所有现代IT市场或多或少流行的技术,例如人工智能区块链云服务大数据等,了解Java编程语言是如何使用的在这些领域以及他在多大程度上发挥着重要作用。 虚拟现实中的Java。 VR/AR 真的是未来吗?Java 在其中占有一席之地吗? - 1今天我们要聊的是另一个时髦又非常有趣的技术领域——VR和AR,也就是虚拟现实和增强现实。 “我认为发达国家的很大一部分人口很快就会每天持续与 AR 解决方案互动。很快,AR 将成为我们日常生活的一部分。” 蒂姆·库克,苹果公司首席执行官

什么是VR和AR?

首先,让我们弄清楚这些技术是什么、它们如何使用以及它们之间有何不同。我们先从VR,即虚拟现实开始。虚拟现实应用程序在特殊设备上运行,这些设备可以完全捕获用户的视觉,从而营造出他们身处其他地方的印象。所有流行的 VR 耳机,例如 HTC Vive 或 Oculus Rift,在佩戴时都会完全遮挡用户的视线。当这种设备打开时,其内部的 LCD 或 OLED 面板会通过特殊透镜折射,使传输的内容完全充满用户的视野,无论是游戏、360 度视频,还是简单的程序界面。大多数 VR 耳机,包括前面提到的 Oculus Rift,以及 Vive、PlayStation VR、Windows Mixed Reality 等,都使用六自由度 (6DOF) 运动跟踪技术,这是通过外部传感器或摄像头实现的。这使得设备不仅可以检测您正在看的方向,还可以检测用户朝该方向所做的移动。与 6DOF 运动探测器一起,用户可以在虚拟空间中移动,从而使此类应用程序更加身临其境。至于AR,即增强现实,它与VR的区别在于,AR并不力求完全吸收你的视觉,而是在其中添加某些元素。Microsoft HoloLens 等 AR 设备和各种类型的智能眼镜允许用户通过将图像投影到他们正在看的地方来看到周围的一切。这一概念还包括众多智能手机应用程序和游戏,例如 Pokemon Go、Temple Treasure Hunt、ARrrrrgh、Ingress 等等。他们使用移动设备的摄像头来监控环境,并通过屏幕上放置的各种类型的信息对其进行补充。AR 显示器可以在现实之上叠加一些非常简单的数据,例如表盘,但它们也可以实现诸如房间中央的怪物全息图之类的复杂对象。例如,游戏 Pokemon Go 将 Pokemon 角色投影到设备屏幕上,相机镜头指向该屏幕。虽然各种类型的增强现实眼镜允许用户将界面元素和应用程序图标放置在他们观察到的现实图像之上。 “我相信增强现实将是我们这个时代最大的技术革命。” Tim Sweeney,美国程序员和视频游戏开发者,Epic Games 创始人 虚拟现实中的Java。 VR/AR 真的是未来吗?Java 在其中占有一席之地吗? - 2

VR和AR不是一回事

事实上,与虚拟现实相比,这是增强现实的主要缺点。如果说VR完全取代了你视野中的图像,那么AR只是对其的补充,往往只占据用户视野中很小的区域。但这也是增强现实的主要优势,因为这种方法为开发人员提供了几乎无限的可能性。例如,可以识别相机图像中的对象并将其信息传输给用户的移动 AR 应用程序已经出现了好几年。特殊的 AR 眼镜,例如 HoloLens,允许用户在自己周围放置浮动窗口,这些窗口可以在设备的显示屏上查看。更不用说许多使用增强现实作为核心游戏元素(Pokemon Go、RoboRaid、Fragments)或附加功能的游戏。因此,虚拟现实和增强现实是两种截然不同的技术,用于不同的目的,尽管 AR 和 VR 通常被称为同一方法的两种类型。如果 VR 设备和应用程序的目的是取代现实并将用户虚拟地传送到另一个地方,那么 AR 则与现实结合使用,用新信息补充我们眼前已有的内容。这两种技术仍处于早期阶段,但被认为非常有前途,并且有可能在不久的将来彻底改变人们使用计算机的方式。 “我想在不久的将来,很多故事都会在虚拟空间里讲述。” 乔·罗素,美国电影导演 虚拟现实中的Java。 VR/AR 真的是未来吗?Java 在其中占有一席之地吗? - 3

AR/VR 和 Java

尽管 AR/VR 领域使用多种编程语言,包括 C#、C/C++、JavaScript、Swift 甚至 Python,但 Java 是需求量最大的语言之一。事实上,原因与其他技术的情况相同:Java 代码允许应用程序快速运行,面向对象使创建单独的应用程序组件更容易,平台独立性使 Java 中的 AR/VR 产品更加通用。就 AR(即增强现实)而言,Java 将是主要编程语言之一,因为绝大多数 AR 应用程序都是为移动设备创建的。因此,Java是为基于Android移动操作系统的设备创建的AR应用程序的主要选择,而对于Apple产品,则使用Objective-C和Swift语言。如今,AR 应用程序支持许多不同的设备,包括头盔、眼镜、手持设备甚至隐形眼镜。在许多方面,Java 允许您创建可在不同(通常是非常不同的)平台上运行的 AR 解决方案。如今,基于Java的AR应用正在诊所、银行、餐馆、博物馆等领域积极实施。 “AR 已经彻底改变了我们的商业和购物方式,在数字世界和物理世界之间架起了一座桥梁。” Muchaneta Kapfunde,FashNerd.com 创始人

AR应用的类型

现在,让我们快速浏览一下对开发 AR 应用程序有意义的主要工具集 (SDK) 和框架。但首先,让我们看看 AR 应用程序的两种主要类型:标记和地理定位应用程序。
  • 标记 AR 应用。

    标记AR应用基于图像识别技术。他们使用黑白标记作为触发器,激活向用户显示 AR 内容。因此,为了看到他面前的增强现实元素,此类应用程序的用户必须将相机指向其环境中的相应标记。一旦设备识别出标记,应用程序就会在其上叠加数字数据,并向用户显示增强现实的元素。这些类型的应用程序尤其被商店、餐馆和其他适合此功能的企业广泛用于广告目的。

  • 地理定位应用程序。

    第二种主要类型的 AR 应用程序是基于位置的,无需标记即可运行,而是依赖 GPS、加速计或数字指南针提供的用户位置信息,并将 AR 对象叠加在实际物理位置之上。我们再次以 Pokemon Go 为例 - 这可能是最著名的地理定位 AR 应用程序。

    “AR和VR技术开发的关键任务是创建一个单一的开放平台,开发人员可以在其中实现他们的所有想法。”

    马克·扎克伯格,社交网络 Facebook 的创始人

    虚拟现实中的Java。 VR/AR 真的是未来吗?Java 在其中占有一席之地吗? - 4

用于开发 AR 应用程序的最佳 SDK

  • 谷歌ARCore

    ARCore 是 Google 用于 AR 应用开发的关键平台,支持基于 Android 移动操作系统的设备,并可与 Java/OpenGL、Unity 和 Unreal 库配合使用。

    ARCore 的关键功能包括:运动跟踪(ARCore 可以使用内置摄像头确定设备的位置和方向点)、环境建模(该平台能够确定水平表面,例如,可以将桌子上或地板上的虚拟对象)、照明估计(确定照明级别,如有必要,突出显示虚拟对象,使其在环境中看起来很自然)等。

  • AR工具包

    ARToolKit 是一组用于开发 AR 应用程序的开源工具。

    尽管它是一个开放且免费的套件,但 ARToolKit 包含非常丰富的功能,包括对 Unity3D 和 OpenSceneGraph 的支持、创建实时 AR 应用程序的能力、与智能眼镜的集成、对不同类型相机的支持、自动相机校准等

    ARToolKit 支持一系列平台,包括 Android、iOS、Linux、Windows 和 Mac OS。

  • 乌福里亚

    Vuforia 可能是最流行、最知名的增强现实应用程序开发平台。

    Vuforia的关键功能之一:识别各种物体和图像;支持识别基本文本、创建自定义标记、创建各个地点的3D地图、支持云服务和本地数据存储等。

    Vuforia 支持 Android、通用 Windows 平台、Unity 和 iOS 等平台。

  • 苹果 ARKit

    那么,苹果也有自己的一套用于开发 AR 应用程序的工具,它是随 iOS11 一起推出的,称为 ARKit。当然,它仅支持 iOS 设备,并包含创建增强现实应用程序的所有基本功能。

    “我们当前的目标是让 VR 体验变得更加有趣和身临其境,并让人们一起体验这些体验。”

    约翰·汉克,Niantic 首席执行官

  • 开发 VR 应用程序的最佳平台和框架

    最后,让我们了解一些用于开发虚拟现实应用程序的最流行的开放平台和框架。
    • 古里VR

      GuriVR 是一款开源 VR 编辑器,可让您将 3D 场景的文本描述转换为 VR 应用程序的真实 3D 模型。支持文本、3D模型、图像、录音、配音、3D图表等多种功能。

    • 开放空间3D

      OpenSpace3D是一个免费开放的平台,用于开发基于VR技术的VR应用程序和游戏。支持大量不同的平台和设备,包括 Leap Motion、HTC Vive/Oculus、Google Cardboard 等。它还包括创建 AR 应用程序的功能。

    • OSVR:开源虚拟现实平台

      OSVR 是 VR 和 AR 解决方案的另一个通用平台。它允许您检测、配置和管理数百种 VR/AR 设备以及各种外围设备。OSVR支持多种游戏引擎和操作系统,并提供异步时间扭曲和直接模式等服务来支持低延迟渲染。

    • 樱草花VR

      Primrose VR 是一个开放式浏览器框架,用于创建简单的 VR 体验,例如虚拟产品演示、虚拟会议或虚拟活动。Primrose VR 与所有现代浏览器兼容并在 WebGL 上运行。

    • 创意空间 VR (CMS)

      IdeaSpaceVR不是一个框架或平台,而是一个针对VR内容的开放内容管理系统(CMS)。IdeaSpaceVR 由 PHP/MySQL 提供支持,是一个本地安装的模块化系统,具有用于虚拟现实应用程序的内置内容播放器。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION