【WebVR教程翻译】超简单!用A-frame快速打造你的VR网站

news/2024/4/27 9:04:55/文章来源:https://blog.csdn.net/weixin_34162401/article/details/88964437

原文地址:Building a Simple Web VR UI with A-frame
作者:paul christophe
译者:大田

A-frame是由three.js封装而来的一组库,使用它可以方便地构建跨平台Web VR应用。如果你对它毫无概念,还没有准备好继续往下读,可以先看看A-frame官方示例,了解了解这个它是工作的,以及它能用来做什么。

在这篇文章中,我将教会你如何创建一个VR网站,你可以体验到在两个360°全景之间切换。实现这一效果,我们将会用到一些A-frame的特定代码和一点点JavaScript的代码。

首先,我们要创建一个基本的HTML5页面,并在这个页面中引入最新版本的A-frame库。

<script src=”https://rawgit.com/aframevr/aframe/b813db0614ac2b518e547105e810b5b6eccfe1c8/dist/aframe.min.js"></script>

译者注
以上链接已失效,最好自行搜索可引用的A-frame库

我在codepen放置了完整的A-frame示例以供参考。

现在我们搭好了基本的架子,就可以开始往这个架子里添加<a-scene>标签,构造我们的VR场景了。<a-scene>标签在一个A-frame项目里相当于一种容器,可以往里填充图形,摄像头,图像,视频和其他各式组件,以此来构建VR场景。接下来,我们用它来创建一个简单的红球:

译者注
<a-scene>标签相当于<div>

<a-scene><a-sphere color="#F44336" radius="1" position="0 2 0"></a-sphere>
</a-scene>

现在可以在你的浏览器或手机上看看,瞧,你已经有了一个VR场景!

接下来,我们再来添加一个摄像头和光标,当我们的目光落到球体上时,就能完成“点击”它的动作。

设置fuse参数为true,这样一来,当A-frame就监听到我们的目光在球体上停留时,就会执行绑定在球体上的点击事件。

timeout参数决定了我们盯着球体看多少毫秒这个事件才会激活。

<a-scene><a-camera position="0 2 4"><a-cursor color="#4CC3D9" fuse="true" timeout="10"></a-cursor></a-camera>...
</a-scene>

我们可以在已有VR控件的基础上进行拓展,使用Javascript编写各式各样的自定义功能,而这些原生控件和拓展控件,都统称为A-frame中“组件”。现在我们要为球体绑定一系列事件,所以也可以将这个球体称之为球体组件。下一步我们就正式来编写这个球体组件,使得当我们盯着它看时,整个VR背景会执行变换。

我们先不急着写执行背景变换的功能。先照以下代码写,当目光停留在球体上并激活点击事件时,我们在浏览器的控制台中打印日志:

<script>
AFRAME.registerComponent('set-sky', {schema: {default: ''},init() {this.el.addEventListener('click', () => {console.log(this.data);});}
});
</script>

方法registerComponent的第一个参数定义组件的名称,第二个参数是一个包含特定功能的对象。要实现我们的功能,只需要用到对象schemainit方法就够了,但除此之外,这个方法还有几个别的参数,有时间你可以自查A-frame文档了解。以上代码绑定“点击”事件到球体上,并在控制台打印球体的data属性。在schema中设置default为空字符串表示如果事件触发时没有值传递到组件,将设置this.data为空字符串。

在A-frame中,功能组件是以属性的形式绑定到组件上的。我们将set-sky组件绑定到先前创建好的球体上,并将其data初始化为hello字符串:

我们将添加“设置天空”组件到我们先前创建的球体并为其分配数据“你好”:

<a-sphere set-sky="hello" color="#F44336" radius="1" position="0 2 0"></a-sphere>

现在我们把目光停留在球体上激活事件,并查看控制台,瞧,有什么变化!

要设置一个360°的全景图像作为VR环境,我们要使用标签名为<a-sky>的A-frame组件。该组件实际上是一个巨球,它把整个VR场景包住,而我们为其提供一张图片作为其内部纹理。现在先在场景中添加<a-sky>标签,后面会为其赋上纹理:

<a-sky></a-sky>

下面我们将另一个用于导航的球体添加到场景中,并设置不同的图片作为set-sky功能组件的data参数。<a-sky>需要方形投影图像才能正常显示,所以我在Flickr上找了两张这样的图在本示例中使用:

<a-sphere color=”#F44336" radius=”1" position=”-4 2 0" set-sky="https://c3.staticflickr.com/2/1475/26239222850_cabde81c39_k.jpg"></a-sphere>
<a-sphere color=”#FFEB3B” radius=”1" position=”4 2 0" set-sky="https://c2.staticflickr.com/2/1688/25044226823_53c979f8a1_k.jpg"></a-sphere>

最后,我们来调整set-sky组件,它将我们传递给它的data变量设置为待切换的全景图像地址:

AFRAME.registerComponent('set-sky', {schema: {default: ''},init() {const sky = document.querySelector('a-sky');this.el.addEventListener('click', () => {sky.setAttribute('src', this.data);});}
});

大功告成!我们现在构建好了可交互的VR应用,该应用有两种全景背景,通过目光就能自由切换。如果你的项目没能正常运转,可以参考codepen或gist上的源码,自行检查问题到底出在哪。


图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_765660.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

团队-爬虫电影网站-开发文档

码云项目托管平台&#xff1a;https://gitee.com/w789369/PaChong/tree/master 其中部分代码截图 转载于:https://www.cnblogs.com/lws1111/p/7780784.html

RHCE作业---搭建网站(基于https)

搭建一个基于https://www.zuoye.com:22222访问的web网站&#xff0c;网站首页在/www/https/&#xff0c;内容为zuoye&#xff0c;可以根据https://www.zuoye.com:22222/mimi访问到的信息为mimi&#xff0c;该网站的实际内容在/usr/local/secret&#xff0c;该网站的内容只有用户…

rhce-搭建一个基于https://www.zuoye.com访问的web网站,网站首页在/www/https/,内容为exercise。客户端使用你搭建的dns服务器做域名解析访问该网站。

要求 搭建一个基于https://www.zuoye.com访问的web网站&#xff0c;网站首页在/www/https/&#xff0c;内容为exercise。客户端使用你搭建的dns服务器做域名解析访问该网站。 装包 mod_ssl(安全套接层ssl协议) httpd&#xff08;提供Apache主程序) bind(提供DNS服务&#xff0…

20个热门在线少儿编程网站【2019】

2019独角兽企业重金招聘Python工程师标准>>> 少儿编程是新的文化潮流&#xff0c;它涵盖了儿童学习的方方面面&#xff1a;逻辑思维训练、系统化思考训练、 问题解决能力训练、团队协作、创造性思维培养...你可以利用我们整理的这些得到广泛认可的 少儿编程网站教孩…

开源项目大家谈-网站性能调校-Cache的使用

之所以用这个题目是因为很多人常常问我研究开源项目的意义&#xff0c;有一些开源项目在别人眼里看起来完全没有搞头&#xff0c;是一些没有实用价值的项目。其实开源项目往往是新技术的试验田&#xff0c;是全世界优秀程序开发者智慧的汇集&#xff0c;如果你仔细研读这些开源…

RHEL5.0 LAMP建站实例

LAMP即LinuxApacheMySQLPHP&#xff0c;是网上最受欢迎的站点架设解决方案。本文以一个实例介绍其基本的应用过程。8.4.1 企业需求 公司要为自己网站搭建了自己的网站&#xff0c;内网采用的IP地址为192.168.16.80&#xff0c;要求管理员可在网上方便进行用户管理。8.4.2 软件包…

新版 Android 已支持 FIDO2 标准,免密登录应用或网站

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 谷歌刚刚宣布了与 FIDO 联盟达成的最新合作&#xff0c;为 Android 用户带来了无需密码、即可登录网站或应用的便捷选项。 这项服务基于 FIDO2 标准实现&#xff0c;任何运行 Android 7.0 及后续…

vs2008快捷键使用 - - JavaEye技术网站

最近&#xff0c;在网上看到一篇关于的一些提示&#xff0c;可以提高开发效率&#xff0c;我把它翻译过来&#xff0c;当然里面也有很多自己的想法&#xff0c;分享一下&#xff0c;大家可以择有用的提示而用之。 我很讨厌看到有人在Visual Studio代码编辑器拷贝或者删除一行之…

Linux系列-Red Hat5平台下的LAMP网站服务搭建(二)

Linux系列-Red Hat5平台下的LAMP网站服务搭建&#xff08;二&#xff09;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />使用awstats分析Web日志&httpd服务的访问控制上次我们看到了apache服务器的源码编译安装以及httpd服…

Wiki 2.0 网站 (Wikia) 今日揭开面纱

数字好莱坞峰会上&#xff0c;维基百科创始人Jimmy Wales的专访时&#xff0c;介绍了”创新的、社交化、更便捷的“Wikia。Wiki 2.0就此揭开面纱。 该网站具有如下特点&#xff1a; 整合社交工具&#xff0c;让用户分享编辑和贡献。突出排名靠前的编辑&#xff0c;让读者更方便…

使用Django创建网站项目二

上一篇&#xff1a;Windows安装diango框架<一> 创建项目&#xff0c;启动服务器 利用安装好的django包的django-admin.py创建项目&#xff0c;命令 python django-admin.py startproject mysite (注意 django-admin.py 路径 &#xff0c;mysite 是项目文件夹名字) mysi…

为啥学了3个月Python还不会爬网站?症结在这!

关注头条号&#xff0c;私信回复资料会有意外惊喜呦………………最后一张照片有资料呦。前几天一个朋友问我应该如何学习Python&#xff0c;所以来回答一下这个问题做一个总结。核心思路建立良好的反馈机制。学习任何一样东西都是一样。对于编程来说&#xff0c;特别是非计算机…

使用缓存技术优化网站访问

HTTP Caching 用好了&#xff0c;可以极大的减小服务器负载和减少网络带宽。十分有必要深入了解下 http 的 caching 协议。先来看下请求/响应过程&#xff1a;http 请求/响应1、用 Last-Modified 头在第一次请求的响应头返回 Last-Modified 内容&#xff0c;时间格式如&#xf…

新手如何建设属于自己的网站

怎样建设一个属于自己的网站&#xff1f;南通网站建设步骤有哪些&#xff1f;每一个要建站的小白首先想到的肯定是这两个问题。其实这两个问题的范围很广&#xff0c;主要是由于很多刚入门的小白对网站建设的概念很模糊&#xff0c;下面小编就介绍网站建设的详细步骤&#xff0…

没有灵感头发都快抓掉了!推荐几款创意网站,让大脑灵光一动!

1. iDsketchhttp://www.idsketch.cn/工艺设计的草图设计手绘。 里面有系统教育方法&#xff0c;知道新人如何学习手绘&#xff0c;会将国外的手绘方法进行翻译。全方位系统的教你手绘。2. ShoppingDesignhttps://www.shoppingdesig产品包装设计。在这里能够给你带来更多创意灵感…

推荐30款超精致的体育类型的网站设计

日期&#xff1a;2012-11-24 来源&#xff1a;GBin1.com 相信大家肯定喜欢体育运动&#xff0c;如果你是运动迷儿的话&#xff0c;千万不要错过下面的体育相关网站设计。体育网站一般分为这样几个不同的类型&#xff1a;体育新闻、体育俱乐部、体育服饰和一些业界名人的个人网…

6月第四周域名网站排名:新网和易名中国并列第三

据国际统计机构Alexa公布的最新数据数据显示&#xff0c;在6月18日-6月24日期间&#xff0c;国内域名主机网站周均用户覆盖数排名前三位的是&#xff1a;中国万网&#xff0c;达1540。西部数码次之&#xff0c;达620&#xff0c;新网和易名中国并列第三名&#xff0c;达560。 &…

接入网站总结

思路&#xff1a; 认证---->获取token(请求接口时,必须要带上token的值才可以访问接口,应该是考虑到安全问题)---->请求对应的接口获取数据 现在大网站的一些都有例子的 至少我现在做的qq和新浪都是有的。新浪的简单 拿新浪的举例吧。过程都是一样的。 1&#xff0c;一个…

PaperBye一个可智能改重的免费论文查重网站。

2019独角兽企业重金招聘Python工程师标准>>> 推荐一个可以智能改重的免费论文查重软件&#xff0c;可自动降低论文重复率&#xff0c;同步修改、实时查重&#xff0c;一边修改&#xff0c;一边查重&#xff0c;修改完即查重完毕&#xff0c;修改论文效率高&#xff…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…