写点什么

Facebook 发布 React VR,使用 React 进行虚拟现实开发

  • 2017-04-25
  • 本文字数:1016 字

    阅读完需:约 3 分钟

早在 2014 年 Facebook 就布局虚拟现实(VR)技术,并以 20 亿美元收购了沉浸式虚拟现实技术厂商 Oculus。近日 Facebook 又在虚拟现实领域有了新动向,基于其核心的开源前端框架 React 发布了一个虚拟现实网页应用的开发框架 React VR ,进一步践行了其一次学习,到处适用(Learn once, write anywhere)的口号。

过去的 2016 年被誉为虚拟现实的元年,国内外的诸多厂商,如 Oculus HTC 暴风等公司都发布了各自的虚拟现实产品,但是经过上半年的急速发展,下半年却进入了该行业的资本寒冬,而任天堂发布的增强现实(AR)手游Pockemon Go 的大获成功,又纷纷把大家关注的目光拉向了与真实世界交互性更强的增强现实技术。Facebook 在这个虚拟现实寒潮来临之际推出React VR,无疑是想通过简化VR 开发层面的技术难点,来带动虚拟现实的后续发展。

在网页端开发虚拟现实应用的一大挑战,就是其页面的刷新率,如果帧数低于60 帧每秒,就无法给用户带来足够好的用户体验,在Oculus Rift 上,这一指标更是建议达到90 帧每秒。要在单线程的JS 运行环境中达到这点,对性能的要求就比较苛刻。React VR 借鉴了React Native 中将运行和渲染进行分离的架构。它会在web worker 中运行React 的代码,再通过异步桥接将图像渲染到界面上,这样就可以更快地捕捉到用户动作并反馈到图像上,从而减少用户的眩晕感。在React VR 中还引用了诸多React Native 的概念,甚至可以说React VR 本身就是建立在React Native 上的一种平台。它沿用了React Native 的打包功能,以及诸多组件,如View、Text 等。这为有React Native 经验的开发人员减少了不少学习成本。

React VR 的内部是通过包装流行的 JS 3D 引擎 Three.js 来实现的。Three.js 内部通过 WebGL 来将应用展现到页面上,因此可以在支持 WebGL 的浏览器上浏览 React VR 的应用。而在虚拟现实设备上,其使用的是 WebVR 的 API。鉴于目前该规范还在开发中,目前仅支持 Oculus Rift 和三星 GearVR 等设备。

值得注意的是,目前已经存在一些虚拟现实网页应用的开发框架。Mozilla 的开源项目 A-Frame 就是一个相对成熟的例子。React VR 在与 React 的无缝集成上占有优势,这为具备 React 基础的开发人员减少了一定的学习成本,但是最终是否能够后来者居上还需要拭目以待。


感谢刘振涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-04-25 19:003764
用户头像

发布了 41 篇内容, 共 15.2 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

华为云首席产品官方国伟:没有人拥有看到未来的水晶球,云上突围之路如何走?

华为云开发者联盟

云计算 云原生 数字化转型 华为云 伙伴云

Python中如何优雅的使用assert断言

wangkx

Python assert

新思科技:部署数据安全战略,加强安全管理和隐私保护

InfoQ_434670063458

数据安全 新思科技

聊聊新工具Hutool

卢卡多多

POI 数据导入 9月日更

密码学系列之:海绵函数sponge function

程序那些事

密码学 程序那些事 海绵函数

潜入培训机构,顺出来一份价值 2.2W 的 Python 人工智能大纲

梦想橡皮擦

9月日更

macOS 制作 linux 启动盘

耳东@Erdong

Mac 软件 9月日更

update 没有索引导致业务崩了,老板骂了一个小时

华为云开发者联盟

数据库 innodb 事务 索引 update 语句

教你实现一个朴实的Canvas时钟效果

华为云开发者联盟

标签 函数 canvas 时钟

敬自由:破壁人华为,开启PC的无界探索

脑极体

数据库为何又如何走向分布式?

多颗糖

MySQL 数据库 分布式 raft TiDB

大一 PingCAP、大二 JetBrains,专访 00 后开发者:千里冰封

郭旭东

开发者 采访 大学生

一行Java代码实现游戏中交换装备

华为云开发者联盟

Java 线程 游戏 Exchanger JDK 1.5

Compose 中的图形

Changing Lin

9月日更

Python——lambda 函数

在即

9月日更

【LeetCode】栈的最小值Java题解

Albert

算法 LeetCode 9月日更

谈 C++17 里的 Visitor 模式

hedzr

c++ 设计模式 Design Patterns GoF设计模式

源码解读Dubbo分层设计思想

vivo互联网技术

Apache dubbo 服务器 spi

一个通用即时通讯(IM)系统的设计

OpenIM

5个非常重要的数据Oceanbase,TiDB,Cassandra,RocksDB,MemDB

hanaper

云随想二:云时代,你如何采购软件?

FLASH

云原生 采购软件

在线JSON转io-ts工具

入门小站

工具

[资源收藏]高质量外文博客(持续更新)

baiyutang

9月日更

手撸二叉树之左子树之和

HelloWorld杰少

9月日更

SaaS 102 | 做 SaaS 产品应该如何做决策?

Teddy Chan

创业 数据 SaaS 决策 电商SaaS

计算机操作系统学习笔记 | 操作系统功能

Regan Yue

操作系统 9月日更

翻转未来!钢铁之城重添色彩

脑极体

小白也能看懂的dubbo3应用级服务发现详解

捉虫大师

dubbo 服务发现 Dubbo3

数据规范的重要性

奔向架构师

数据治理 9月日更

【Flutter 专题】47 图解新的状态管理 Provider (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

ECIC演讲精华|如何构建云原生应用下的高性能持久化存储?

焱融科技

技术 分布式 云原生 高性能 存储技术

Facebook发布React VR,使用React进行虚拟现实开发_Meta_周元昊_InfoQ精选文章