摸索js的3d全景
先我在网上找到了一个例子,http://silali.vicp.net/three/emaple.html
完美实现3d全景,在详细查看这个例子后,发现他在手机上运行并不流畅,而且显不全并会卡顿。
我了解他是用threejs中的CSS3DRenderer实现的,我猜想卡顿多半是操作dom元素太快了,所以会卡顿,但是显示不完全的原因还并不知道(后面的摸索知道了与perspective的设置数值有关)。
为此,我考虑到自己来用css3来渲染这个场景,只要我对dom的元素操作不要太多太快,应该性能还是能够过得去的。
css3渲染场景
实现地址:http://silali.vicp.net/three/1.html
css3 translate3d与rotateY对每个面进行定位
但是问题出现了,连接点看起来并不平滑,能够明显看出转角,还有两张图片的相交处有明显的白线,这个白线在iphone没有,但是android4.4.4这种高版本android机上同样存在。
我想这个css3的定位方式,应该是错误的,可能还需要skewX。
我想到使用three初始化一个立方体盒子,把视角放到中间这里再给每个面渲染图片不就行了吗?
three渲染立方体盒子
我先渲染了一个盒子,然后把视角一点点的拉近,直到进入盒子内部并到到达盒子中心位置,这时我发现渲染出来的是一片黑,我猜想是不是没有光源,查看api添加光源,同样的结果。
直接失败。地址:http://silali.vicp.net/three/2.html
重回例子
分析例子,这个例子使用CSS3DRenderer来渲染了一个全景出来,但是手机浏览器的css3性能并不足够支撑。
那我需要做的就是CSS3DRenderer换成一个高性能的WebGLRenderer。
WebGLRenderer渲染器
我把CSS3DRenderer进行渲染的6张图片换成了6个three面元素(同时在面上添加图片的材质),大小位置都和例子一样,成功渲染。地址:http://silali.vicp.net/three/3.html
测试手机性能,同样很好。
我进一步添加代码进行测试手势
手势测试
拖动的测试很成功,但是放大缩小不顺利,在浏览器上调用放大缩小的方法没有问题,但是到了手机浏览器上直接使用手势进行放大缩小就会再次卡屏,我的考虑是性能不够。
所以就放弃了放大缩小的操作,操作还没完。
http://silali.vicp.net/three/3.html
调用浏览器的重力感应,实现模拟现实的3d全景
想到调用重力感应,我就立马去查看api,尝试理解重力感应的3个参数,没能理解得到,而且这个参数在手上抖动太猛烈了,过于灵敏。
还好我偶然间遇到了threejs中的DeviceOrientationControls这个库,他帮我把这个问题都解决了,完美。
http://silali.vicp.net/three/4.html
3d全景找东西
在3d全景中找东西,这个需求主要有两个难题。
第一个随机定位,我的解决方案是2次随机,在全景中有6个面,先从6个面中随机1个出来,然后在这个面中进行二维随机定位,这样就方便多了。
第二个物品查找,详细说明下,当用户点击屏幕,我需要进行判断,这次点击是否点击到了我的指示的物品。我的解决方案是使用Three.Raycaster,判断有几个对象与这条射线相交,现在因为只有背景和1个物品,所以当相交的数目大于2也就是对了。
http://silali.vicp.net/three/4-1.html
摸索js的3d全景的更多相关文章
- Three.js 实现3D全景侦探小游戏🕵️
背景 你是嘿嘿嘿侦探社实习侦探️,接到上级指派任务,到甄开心小镇调查市民甄不戳宝石失窃案,根据线人流浪汉老石提供的线索,小偷就躲在小镇,快把他找出来,帮甄不戳寻回失窃的宝石吧! 本文使用 Three ...
- Three.js 实现3D开放世界小游戏:阿狸的多元宇宙 🦊
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 2545光年之外的开普勒1028星系,有一颗色彩斑斓的宜居星球 ,星际移民 ...
- 打造H5里的“3D全景漫游”秘籍
近来风生水起的VR虚拟现实技术,抽空想起年初完成的“星球计划”项目,总结篇文章与各位分享一下制作基于Html5的3D全景漫游秘籍. QQ物联与深圳市天文台合作,在手Q“发现新设备”-“公共设备”里,连 ...
- 3D全景!这么牛!!
如果你用过网页版的百度地图,你大概3D全景图浏览是一种怎样的酷炫体验:在一个点可以360度环顾周围的建筑.景色,当然也可以四周移动,就像身临其境. 全景图共分为三种: ①球面全景图 利用一张全景图围成 ...
- 打造自己的3D全景漫游
three.js 示例: 打造H5里的"3D全景漫游"秘籍 - 腾讯ISUX QQ物联星球计划 通过pano2vr直接将鱼眼全景图生成立体空间的六个面:也可通过Photos ...
- 3D全景之ThreeJs
3D全景之ThreeJs 一.前言 随着H5越来越多的被应用到各个领域,3D也越来越频繁的出现在各个H5案例中,今天我们就来讨论一下3D全景的实现. 据百度百科上介绍:720全景是视角超过人的正常视角 ...
- 浏览器中实现3D全景浏览
如果你用过网页版的百度地图,你大概3D全景图浏览是一种怎样的酷炫体验:在一个点可以360度环顾周围的建筑.景色,当然也可以四周移动,就像身临其境. 科普 全景图共分为三种: ①球面全景图 利用一张全景 ...
- Three.js - 走进3D的奇妙世界
本文将通过Three.js的介绍及示例带我们走进3D的奇妙世界. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第6期-支付结算部支付研发团队前端研发高级工程师-刘琳<three. ...
- Three.js实现3D地图实例分享
本文主要给大家介绍了关于利用Three.js开发实现3D地图的实践过程,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习 ...
随机推荐
- 最详细eclipse汉化插件安装教程
最详细eclipse汉化插件安装教程(转) 转自:http://blog.csdn.net/dai_zhenliang/article/details/8588576#t4 教程作者:戴振良 本文与& ...
- 转自大楚网:微软SAPI:让你的软件能说会道
[IT168专稿]“没声音,再好的戏也出不来.”这虽然是一句广告,但是也说出了一个道理,我们所开发的软件,特别是一些多媒体软件,要是能够发 出声音,能说会道,将为我们的软件增添不少光彩.同时,我们面临 ...
- Node.js的函数返回值
先看一段代码: function select(sqlscript){ var result = ""; sql.connect(config, function( ...
- SpringMVC从Controller跳转到另一个Controller
1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一件事 ...
- while:1.兔子生兔子问题 2.打印菱形 3.求100以内质数的和4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完
1.兔子生兔子问题: 2.打印菱形 3.求100以内质数的和 4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完有多少种情况?
- [转载]学习VC MFC开发必须了解的常用宏和指令————复习一下
1.#include指令 包含指定的文件 2.#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而 ...
- ZK 使用Clients.response
参考: http://stackoverflow.com/questions/11416386/how-to-access-au-response-sent-from-server-side-at-c ...
- JS 心得总结
1.浏览器关闭事件监听(http://pengjianbo1.iteye.com/blog/507569,http://bbs.csdn.net/topics/360152711) <!DOCT ...
- [NoSQL]验证redis的主从复制
安装配置redis http://www.cnblogs.com/myrunning/p/4222385.html 1.1查看当前redis文件 1.2修改配置文件 拷贝配置文件分别为redis_m ...
- centos6.6 LVS+keepalived
之前有写过keepalived+mysql 和lvsDR模式的分析篇.然而LVS没有写高冗余.今天来写一篇LVS+keepalived的 LVSDR只负责转发,LVS也没有nginx后端检查功能,所 ...