OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

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

关注

评论

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

抖音打击炫富违规视频:自媒体行业的底线在哪

石头IT视角

代码之外:写作是倒逼成长的最佳方式

宇宙之一粟

写作 5月月更

初始C语言

芒果酱

C语言 5月月更

Druid连接池源码阅读09

石小天

在云平台 ABAP 编程环境上编写第一段 ABAP 程序

Jerry Wang

云计算 云原生 SAP abap 5月月更

Redis「8」实现分布式限流与延时队列

Samson

redis 学习笔记 5月月更

零基础学Java第三节(基本输入输出)

编程攻略

java开发学习

Kubernetes 安全权限管理深度剖析

liuzhen007

k8s 5月月更

Linux环境编译单个C程序文件

Loken

音视频 5月月更

一站式Dao打造工具M-DAO:门槛低、效率高

股市老人

千亿级高并发MongoDB集群在某头部金融系统中的应用及性能优化实践(上)

杨亚洲(专注MongoDB及高性能中间件)

数据库 mongodb 分布式 高性能 分布式数据库mongodb

ES6 之set详解

达摩

js

数据库连接池 -Druid 源码学习(九)

wjchenge

Druid 数据库连接池

设计模式之责任链模式

乌龟哥哥

5月月更

干货| 四种渲染到底是啥?终于有人讲明白了!(下)

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

[Day45]-[BFS]-滑动谜题

方勇(gopher)

LeetCode BFS 数据结构算法

druid 源码阅读 9—— init 中的JMX是干啥的

张大彪

在线HTML转Excel工具

入门小站

工具

使用 Provider 改造屎山代码,代码量降低了2/3!

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

druid源码阅读(十)Druid keepAlive参数

爱晒太阳的大白

5月月更

JS Iterable object (可迭代对象)

达摩

js

Docker下Java文件上传服务三部曲之二:服务端开发

程序员欣宸

Java Docker 5月月更

LSM-Tree - LevelDb Skiplist跳表

懒时小窝

LSM树 leveldb LSM-Tree

druid源码学习九

Nick

Druid Apache Druid

SocketIO の 聊天练习

空城机

socket Node 5月月更

M-DAO开辟区块链全新战场,或成DAO赛道龙头

BlockChain先知

Notification发送消息

空城机

WebApi 5月月更

拆分电商系统为微服务

小虾米

「架构实战营」

css 学习笔记【三】浮动,不脱离文档流,继承和层叠

恒山其若陋兮

5月月更

字节跳动 CloudWeGo 官方微信公众号官宣了!

baiyutang

Go 开源 微服务 5月月更

央视新闻:北斗高精度共享单车大规模应用

江湖老铁

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