HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

使用 HTML5 在浏览器中开发虚拟现实业务

  • 2015-01-29
  • 本文字数:1940 字

    阅读完需:约 6 分钟

SFHTML5 小组(San Francisco HTML5 User Group)组织的一场会议中,与会者们的讨论焦点围绕着两个主题:使用 HTML5 技术——如 WebGL、WebVR、Three.js 和 GLAM——创建虚拟现实体验,以及 Firefox 和 Chrome 对这些技术提供支持的当前开发进展。这一切背后的目的在于,将整个互联网带入虚拟现实(以下简称 VR)的世界中。

Tony Parisi 是 VRML 和 X3D ISO 标准的创造者之一,在会上他介绍了 WebVR ——它结合了虚拟现实和 Web 技术。目前, VR 软件基本上都属于游戏式,在创建和操纵图形方面做了大量的工作。大部分已有的 VR 应用都借助于 Unity 引擎构建,然而精通该引擎的人却并不多。Parisi 的理念是降低该领域的门槛,让所有开发者都能够使用 JavaScript 与 WebGL 这样的基础 Web 技术创建 VR。 Three.js 是一个 JavaScript 类库,用来在 WebGL 中渲染 2D/3D 图像。借助 Three.js,开发者将更易于渲染 VR 场景,代码量仅为对应的 WebGL 版本的 1/10 到 1/3。Parisi 目前还在致力于创建另一个不同的解决方案 GLAM ,这是一门用来创建 3D Web 内容的声明式语言。它将令 VR 渲染变得更加简单。使用 GLAM 渲染一个旋转的 3D 立方体,需要引入 glam.js 并这样使用 Tag:

复制代码
#photocube {
image:url(../images/flowers.jpg);
rx:30deg;
}

Parisi 还介绍了,Chrome(实验版本,Blink 源码分支)和Firefox( nightly )都开始实现头部跟踪方面的 WebVR API,这些 API 可以用来跟踪 VR 设备的运动情况(目前支持 Oculus Rift,稍后也会增加对其他设备的支持),并支持对 WebGL/CSS3 内容进行 3D 立体渲染。目前已有一个更简单的可用方案,由 Google Cardboard 、智能手机和一个 VR 应用(例如 Cardboard )组成。该应用使用智能手机的摄像头和运动传感器,在手机浏览器中使用 WebGL 生成活动的立体图像

来自 Mozilla 的 Firefox OS 首席 UX 设计师 Josh Carpenter,在他的演讲“ WebVR 的 UI/UX 设计”中,展示了结合 Firefox 使用 Oculus Rift 的效果,并针对开放的“网络化(Webby)”虚拟现实体验总结了一些他所期望的特性:

  • 通过链接,无缝且安全地从一个地方切换到另一个地方的能力。包括对导航链接、缩放、滚动、后退、填写信息等方面的控制。简而言之,让用户在使用 VR 头戴设备的时候能够获得类似于浏览器的体验。
  • 易于开发。为了实现这一点,需要开发一些新的工具。“JavaScript-Three.js-WebVR-WebGL- 浏览器”这条工具链尚处于新生阶段。
  • 能够在任何设备上获得 VR 体验。
  • 能够将当今世界中的网站自动化转换为 VR 体验。这意味着在访问老式网站的时候,应该同样能够获得 3D VR 体验。
  • VR 商品化:更多的设备、嵌入性以及更好的性能。

Carpenter 还演示了一些早期阶段的工作,这些工作使得普通网站带入 VR 世界而不必要求这些网站升级其的内容。他还创建了一系列在不同 VR 站点之间切换时使用的转场效果。在设计VR 浏览器方面,Carpenter 看到了许多潜在的可能性,因为目前我们已经可以使用具备空间动画能力的360 度Canvas。

来自Google 的WebGL 和WebVR 开发者Brandon Jones,在他的演讲 Web 浏览器的 VR 内部实现中,提供了一些用于 VR 应用方面的代码样例,以介绍在渲染 VR 场景时所需的必要条件。在刚开始对站点进行 VR 渲染的时候,或许有许多令人生畏的工作,但如果我们通过像下面代码段中展示的一样使用 Three.js,这一切都会变得简单许多。

复制代码
// Normal scene setup, then...
var vrControls = new THREE.VRControls(camera);
var vrEffect = new THREE.VREffect(renderer);
function onEnterVRFullscreen() {
vrEffect.setFullScreen(true);
}
function onWindowResize() {
vrEffect.setSize(window.innerWidth, window.innerHeight);
}
function onRequestAnimationFrame() {
vrControls.update();
vrEffect.render(scene, camera);
}

Jones 承认,尽管 Three.js 并未将 VR 作为优先考虑的内容,也尚未针对 VR 渲染做优化,甚至它本身可能还需要进行一些优化,但它至少已经能够肩负起 VR 渲染的工作。针对 VR 应用开发者,Jones 给出了一些建议

  • 优先考虑轻量级顶点渲染引擎
  • 当遇到性能问题的时候,减少 canvas 分辨率而不是帧数。
  • 永远不要把与视点无关的东西(如阴影或环境地图)重复渲染。
  • 对每个眼睛看到的场景逐一完全绘制,在面对状态转换时,是一件非常沉重的任务。在具体场景下,或许更高效的做法是:针对每个物体,先绘制左眼所见场景,当切换视图后再绘制右眼所见场景。

Jones 还演示了在 Chrome 中渲染 Quake 3 VR 场景。

来源: SFHTML5 会议视频 WebVR API 新手指南 Mozilla VR (一个完全采用 VR 的网站), Google Cardboard Chrome VR 实验 GLAM Mozilla WebVR Mailing List

查看英文原文: The Current Status of Browser-based Virtual Reality in HTML5

2015-01-29 19:319809
用户头像

发布了 256 篇内容, 共 72.7 次阅读, 收获喜欢 10 次。

关注

评论

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

带你读AI论文丨LaneNet基于实体分割的端到端车道线检测

华为云开发者联盟

端到端 网络模型 车道线 实体分割 LanNet

堡垒机和防火墙的三大区别分析-行云管家

行云管家

网络安全 防火墙 信息安全 数据安全 堡垒机

保姆级教程,小白也能2周搞定3个月的Web开发任务!

博文视点Broadview

Spark必读!总有一些Spark知识点你需要知道

Qunar技术沙龙

spark hdfs mapreduce Web UI 数据倾斜

惊!阿里大佬珍之若宝的最强高并发pdf,竟然被上传GitHub开源

Java 编程 架构 面试 程序人生

面试侃集合之SynchronousQueue非公平模式篇

码农参上

非公平锁 SynchronousQueue 8月日更

Go- map的使用

HelloBug

Go 语言 map的使用

金九银十给我疯狂内卷!GitHub再现星标86K面试手册,37K!妥妥的

Java~~~

Java 架构 面试 算法 JVM

这一次!我在百度告诉你,当你请求百度时都发生了什么...

程序员 架构 面试 计算机

如何支持亿级用户分流实验?AB实验平台在爱奇艺的实践

爱奇艺技术产品团队

测试 开发 精准测试 AB testing实战

深层剖析鸿蒙轻内核M核的动态内存如何支持多段非连续性内存

华为云开发者联盟

鸿蒙 内存 结构体 OpenHarmony 动态内容

Go- map的定义

HelloBug

Go 语言 map的定义

eKuiper 联手 OpenYurt,解决物联网场景下边缘流数据处理难题

EMQ映云科技

云计算 阿里云 物联网 IoT #Kubernetes#

阿里P8大牛终于整理完了564页大话java性能优化神仙文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

【墨天轮专访第二期】巨杉数据库萧少聪:重视企业长期需求,打造中国的世界级产品

墨天轮

数据库 人物访谈 国产数据库 巨杉数据库

超实用?HUAWEI高工总结出15W字的图解计算机操作系统指南手册

Java~~~

Java 架构 面试 TCP 网络

终于有人把操作系统,CPU,基础知识,网络一次讲清楚了,绝绝子

Java~~~

Java 架构 面试 TCP 网络

常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)

Python研究者

8月日更

模块六作业

燕燕 yen yen

架构实战营

膜拜!阿里内部都在强力进阶学习springboot实战派文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

比POSTMAN更好用!在国产接口调试工具APIPOST中使用Mock

Proud lion

大前端 后端 Postman 开发工具 接口文档

使用接口文档快照机制,让接口文档不在频繁变动

CodeNongXiaoW

大前端 测试 后端 接口文档

疫情小区离你有多远,百度地图告诉你

百度开发者中心

最佳实践 百度地图

阿里P8大牛耗费三年整理的:Java架构之完美设计实战PDF

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

字节再次出圈!GitHub上爆火一星期的算法刷题手册竟出自这人之手

Java~~~

Java 架构 面试 算法 数据结构与算法

Shopee物流业务核心数据库架构演变——权衡取舍的艺术

Shopee技术团队

架构 #数据库 #物流 #供应链 #Shopee

阿里内部推出Spring响应式微服务Boot2Cloud文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Alibaba新产!Spring+SpringBoot+SpringCloud全家桶进阶小册

Java~~~

Java spring 架构 面试 Spring Cloud

今天我们来谈谈Golang的同步等待组

Regan Yue

Go 语言 8月日更 同步等待组

基于 Formily 的表单设计器实现原理分析 ​

全象云低代码

JavaScript 低代码开发 表单设计

算法推荐规制!《互联网信息服务算法推荐管理规定(征求意见稿)》公开征求意见

郑州埃文科技

使用HTML5在浏览器中开发虚拟现实业务_移动_Abel Avram_InfoQ精选文章