22. WebAR那些事: 20行代码做全景

简介: #紧接上文 AR技术,全称增强现实技术,对已有的现实世界,增加一些虚拟元素,提升用户体验。传统的内容展示无非于:图片、文字、视频等组合,随着经济、技术的发展,越来越多的用户已经不满足于现状,目前需要的是消费升级、体验升级,那么AR、VR技术运用而生。 #本次Demo所需二维码 本次demo已经集成到APK中,用户可以点击《全景》来体验。 ![1481388940.png](http:/

紧接上文

AR技术,全称增强现实技术,对已有的现实世界,增加一些虚拟元素,提升用户体验。传统的内容展示无非于:图片、文字、视频等组合,随着经济、技术的发展,越来越多的用户已经不满足于现状,目前需要的是消费升级、体验升级,那么AR、VR技术运用而生。

本次Demo所需二维码

本次demo已经集成到APK中,用户可以点击《全景》来体验。
1481388940.png

AR全景

环境准备

  1. Demo使用r82版本,向下兼容
  2. Three.js 到http://www.threejs.org下载最新源码,这里使用three.min.js作为渲染引擎。
  3. WebVR.js WebVR的工具库,用于切换VR状态(three.js的源码包中,自己拷贝)
  4. VREffect.js WebVR的展示库,用于分屏展示(three.js的源码包中,自己拷贝)
  5. VRControls.js WebVR的控制库,用于监控陀螺仪、Camera、重力等(three.js的源码包中,自己拷贝)

3D模型

这次增加了一张本地4k图片,所以包变大了。
map.jpg

核心代码

代码参考Three.js,代码只需20行

var w = window.innerWidth;
var h = window.innerHeight;
var renderer = new THREE.WebGLRenderer();        // 创建渲染器
renderer.setSize(w, h);                            // 设置渲染器为全屏
document.body.appendChild(renderer.domElement);    // 将渲染器添加到body上

var camera    = new THREE.PerspectiveCamera(75, w / h, 0.01, 100);
var effect    = new THREE.VREffect(renderer);        // 控制器,用来控制VR渲染
var loader    = new THREE.TextureLoader();        // 加载器,用于异步加载图片
var control    = new THREE.VRControls(camera);        // 控制器,用来控制摄像机

var mater = { map : new THREE.TextureLoader().load('map.jpg'), side : THREE.BackSide };
var earth = new THREE.Mesh(new THREE.SphereGeometry(20, 32, 32), new THREE.MeshBasicMaterial(mater));

var scene  = new THREE.Scene();                    // 创建场景
scene.add(earth);                                // 添加全景球形纹理

animate();
function animate() {
    effect.requestAnimationFrame(animate);
    control.update();
    effect.render(scene, camera);
}

效果展示

我有一间小木屋,面朝大海,春暖花开

2358d79a627297501e66723a987bf0d1.png

1ce72255c13e1a6d8d2eaa69c34d7dc6.png

畅想

体验升级

沉浸式体验,可以让用户更加方便的感受照片。相比传统的照片浏览方式,左右滑动、上下滑动,每张照片展示的只是一个角度。对于用户来说,展示的思路并不连贯,需要用户在脑海中二次加工,才能生成完整的场景。

消费升级

相机与照片,交卷与相片,相辅相成。以前拥有一台柯达傻瓜相机,是一件非常幸福的事情。后来是单反,拍出更加清晰的电子照片。再后来是全景相机,360°球形照片。
随着人们的消费升级,不禁的会问:花了这么多钱,你就给我看这个?
这种问题,在每个时代的末期,都会有人提出。我们现在就处于传统2D电子照片的末期,新的时代马上就会来临。

下一回

手把手做一个VR视频播放器,要支持在线URL输入播放的那种。
敬请期待

目录
相关文章
|
消息中间件 IDE JavaScript
用代码画时序图!YYDS
最近通过代码来看看这个图,给大家看图、UML ,感觉很给大家分享。 大家平时用他们出的图呢,是用什么样的图,都用画图来画的,我们用画图来画图 呢draw.io?processOn 今天给大家介绍一款想要的作品,用的画图,配合IDE使用PlantUML!
用代码画时序图!YYDS
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
1136 0
uni-app制作一个时间选择器
uni-app制作一个时间选择器
867 0
|
机器学习/深度学习 人工智能 算法
|
人工智能 自然语言处理 监控
前阿里专家揭秘:你对GEO优化的认知,99%都是错的
本文深入剖析了AI时代GEO优化的本质,指出许多出海企业在本地化过程中常犯的认知错误,如迷信技术信号、将翻译等同于本地化等。作者提出,真正的GEO优化应构建“AI驱动的全域内容矩阵”,通过AI赋能意图洞察、人机协同内容生成、智能技术架构与数据闭环迭代四大支柱,实现可持续的跨境流量增长。文章还提供了可落地的方法论与避坑指南,帮助企业在海外市场实现低成本、高效率的精准获客。
575 5
前阿里专家揭秘:你对GEO优化的认知,99%都是错的
|
10月前
|
SQL 数据采集 存储
六、Hive 分桶
在 Hive 的世界里,除了常见的分区,分桶也是一项非常实用的数据优化方式。它能帮助我们将数据按某个字段均匀划分到多个“桶”中,不仅能提升大表连接的效率,还特别适合做数据抽样和精细管理。本文将带你一步步了解分桶表的创建方法、数据加载过程和常见应用场景,配有丰富示例和练习题,帮助你在实战中轻松掌握这项技能。
758 7
|
JSON 搜索推荐 API
淘宝商品详情优惠券API接口全攻略
淘宝商品详情优惠券API接口助力电商精准营销。通过商品ID,开发者可精准检索与特定商品相关的优惠券信息,包括面额、使用门槛、领取条件、有效期等详细数据,并实时监测优惠券状态。此接口支持个性化筛选参数,如优惠券面额范围和类型,返回JSON格式的优惠券列表及状态信息,满足数据整合、营销活动策划等需求,提升用户体验和运营效率。示例代码展示了Python调用方法,帮助快速集成。 供稿者:Taobaoapi2014
|
机器学习/深度学习 算法 数据挖掘
量子计算在金融领域的应用探索
量子计算凭借其强大的计算能力和数据处理能力,正逐渐在金融领域展现巨大潜力。本文探讨了量子计算在风险管理、投资组合优化、高频交易、反欺诈及金融衍生品定价等方面的应用,介绍了当前进展及未来挑战,展示了量子计算如何提升金融决策效率和准确性。
1513 8
SAP ABAP 程序调用设置成后台作业模式
ABAP 程序调用设置成后台作业模式
1379 0
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
713 2