写点什么

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:004035
用户头像

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

关注

评论

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

【IstioCon 2021】如何在Istio中进行源地址保持?

华为云原生团队

开源 云原生 istio 华为云 服务网格

人工智能能和人类辩论了;《云网产业发展白皮书》发布

京东科技开发者

人工智能

一文搞懂 Flink 中的锁

shengjk1

flink flink 锁

java deep vs shallow copies

shengjk1

Java deep copy shallow cop

Flink 提交作业运行的各种模式总结

shengjk1

flink flink 执行

FlinkSQL 平台

shengjk1

flink flink sql flink sql 平台

开源的 Switch 模拟器——GitHub 热点速览 v.21.12

HelloGitHub

GitHub 开源

LeetCode题解:126. 单词接龙 II,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Java学习笔记——实体类(ENTITY,VO,DTO,BO)

棉花糖

Java

AIOT技术大起底:别人开发“软件”,海尔智家开发“生活”

DT极客

Python OpenCV 图像处理二值化,取经之旅第 7 天

梦想橡皮擦

3月日更

Flink 计算 PV UV

shengjk1

flink flink 实战

深入理解ES8的新特性SharedArrayBuffer

程序那些事

JavaScript ecmascript 程序那些事 es8

NA公链(Nirvana)NAC公链独步公链江湖

区块链第一资讯

区块链

适配器模式在Mybatis中的妙用

Java小咖秀

Java 源码 设计模式 mybatis 开发

上帝视角掌管城市动向!智慧园区驱动城市数字化转型

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区

带你全面认识CMMI V2.0(三)——实践域

IPD产品研发管理

CMMI

如何在Python中实现Round函数?

华为云开发者联盟

Python 函数 Numpy Round 舍入函数

寻找被遗忘的勇气(二十三)

Changing Lin

3月日更

Veema 寄来的新书

吴威

vmware 容灾 备份 veeam esxi

万众瞩目的EGG Network,备受期待的New-DeFi自治共识论坛在海口闭幕

币圈那点事

区块链

Flink 计算 TopN

shengjk1

flink flink 实战 flink topN

JVM G1GC的算法与实现

Yano

Java JVM GC G1GC

LiteOS内核源码分析:位操作模块

华为云开发者联盟

LiteOS 源代码 位操作 bit Huawei LiteOS

图像视频压缩:深度学习,有一套

华为云开发者联盟

深度学习 自编码器 图像压缩 循环神经网络 视频压缩

C语言性能优化:减少相关性依赖,利用指令并行提升性能

1

编程 性能优化 C语言 cpu 100%

一文搞懂Flink SQL执行过程

shengjk1

flink flink源码 flink sql flink sql 执行过程

实践解析丨Rust 内置 trait:PartialEq 和 Eq

华为云开发者联盟

rust hash Trait PartialEq Eq

企业数字化转型,营销技术驱动超级增长!

博文视点Broadview

一文搞懂 FlinkSQL函数 LAST_VALUE 的原理

shengjk1

flink flink sql flink 源码

一文搞懂 FlinkSQL 的 KafkaSource

shengjk1

flink flink源码 flink sql

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