8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

three.js 是一个在网页上绘制 3D 图形的 Javascript 库,它同时支持 WebVR 接口,因而可以通过它很容易地在普通的 HTML5 页面上呈现 VR 内容。

VR 随着相关硬件的快速升级而日益普及,作为网络主要入口的浏览器也已构建了相关的支持接口——WebVR。接下来我们便通过 three.js 在网页上播放一段 VR 视频。需要说明的是由于目前大部分浏览器还未支持 WebVR 接口,因此我们需要一个 webvr-polyfill 库,通过它才能在大多数浏览器上直接访问 VR 视频内容。完整的示例可以点击这里访问(为了保证体验请使用 Chrome 浏览器访问)。

现阶段大部分 VR 相关的视频还是 360 度视频,即能够提供 360 度访问视角,不过就视频格式来说除了拥有少数几个 VR 相关的参数外与传统视频并无太大区别。可以先通过点击这里访问这个示例的原始视频,我们会看到除了画面有些畸变外与普通视频并无差异。画面的畸变是由于要提供 360 度视角的缘故,而普通的视频只能提供一个平面上的视野,需要在一帧的画面上提供全景的视野就需要将多个画面拼接到一个画面上,最终就变成了刚才看到的那样。而要正常播放这样的视频我们需要将画面还原,其中一种方法便是重新渲染到一个全景的物体上。360 度视频的视角是一个环绕的 360 度,因此只需要将它渲染到一个球体上,然后我们从球体中央观看便是正常的画面了。下面就通过 three.js 来实现这样的效果:const WIDTH = window.innerWidth;

const HEIGHT = window.innerHeight;

const scene = new THREE.Scene();

const geometry = new THREE.SphereGeometry(1, 48, 48); // 创建一个球体, three.js 可以创建很多 3D 物体,可以参考 http://www.52jb.net/biancheng/6921.html

geometry.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1)); // 对球体进行矩阵转换,因为我们最终需要从球体中央进行观看,具体转换逻辑可以参看 http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/

const videoTexture = new THREE.VideoTexture(videoElement);

videoTexture.minFilter = THREE.LinearFilter;

videoTexture.magFilter = THREE.LinearFilter;

videoTexture.format = THREE.RGBFormat;

videoTexture.generateMipmaps = false;

videoTexture.needsUpdate = true;

const material = new THREE.MeshBasicMaterial({ map: videoTexture }); // 创建一个素材,将要渲染的视频应用到它上面

const mesh = new THREE.Mesh(geometry, material); // 把素材应用到球体上

scene.add(mesh); // 将球体放入场景中

const camera = new THREE.PerspectiveCamera(75, WIDTH / HEIGHT, 0.1, 100); // 创建视角,相关参数可参考 http://blog.csdn.net/lingedeng/article/details/7302204

// 选用 WebGL 进行渲染

const renderer = new THREE.WebGLRenderer({ antialias: false });

renderer.setSize(WIDTH, HEIGHT);

document.body.appendChild(renderer.domElement);

const animate = (time) => {

requestAnimationFrame(animate);

mesh.rotation.y = time * 0.0005; // 由于还未加入 WebVR 控制接口,为了可以看到整个视角我们先让球体旋转起来

renderer.render(scene, camera);

};

requestAnimationFrame(animate);

通过上述逻辑我们就可以以正确的视角播放这段视频了,想要观看这段代码的效果点击这里。

通过 VR 控制视角

上面的示例通过正确的视角播放了这段视频,但并没有加入 VR 相关的控制功能。好在 three.js 已经支持 WebVR 相关的接口,我们只需要添加几行代码就可以加入 VR 控制功能:const controls = new THREE.VRControls(camera); // 应用 VR 设备的位置数据到视角上,这样在旋转 VR 设备时就能同步更新视角了

const effect = new THREE.VREffect(renderer); // 通过 WebVR 调用 VR 设备接口进行渲染

effect.setSize(WIDTH, HEIGHT);

let vrDisplay = null;

const animate = (time) => {

controls.update();

effect.render(scene, camera);

vrDisplay.requestAnimationFrame(animate);

};

// 获取 VR 设备

navigator.getVRDisplays().then(function (displays){

if (displays.length > 0) {

vrDisplay = displays[0];

vrDisplay.requestAnimationFrame(animate);

}

});

// 开启双目的 VR 模式,这个模式可以很方便地在普通的移动设备浏览器上体验 VR 内容

const onResize = () => {

effect.setSize(window.innerWidth, window.innerHeight);

camera.aspect = window.innerWidth / window.innerHeight;

camera.updateProjectionMatrix();

};

const onVRDisplayPresentChange = () => {

onResize();

}

window.addEventListener('resize', onResize);

window.addEventListener('vrdisplaypresentchange', onVRDisplayPresentChange);

document.querySelector('button#vr').addEventListener('click', () => {

vrDisplay.requestPresent([{ source: renderer.domElement }]);

});

在运行上述代码之前还需要引入相关依赖:webvr-polyfill.js polyfill WebVR 接口,让大部分未支持 WebVR 的浏览器也能够使用

通过 webvr-polyfill.js 的处理便可以在 PC 端或移动端的 Chrome 浏览器中直接访问 VR 内容,当在 PC 端访问时可以通过鼠标控制 VR 的视角,当在移动端访问时通过陀螺仪来进行控制。此外在移动端访问时我们还可以点击页面右上角的按钮切换到双目的 VR 模式,然后带上 VR 头盔体验更好的效果。

html5 vr图片展示,three.js——通过 HTML5 页面呈现 VR 内容相关推荐

  1. 如何把HTML转换成动图,html5实现图片转圈的动画效果——让页面动起来

    1.先瞧瞧效果: 2.代码是这样的: @mixin ani-btnRotate{ @keyframes btnRotate{ from{transform: rotateZ(0);} to{trans ...

  2. 分类图片展示php源码,HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)...

    本文讲述了HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果.分享给大家供大家参考,具体如下: 因为本人是星际争霸系列游戏的忠实拥簇,所以在今天的jQuery教程中,我 ...

  3. html5给图片加圆圈,js+canvas制作的用鼠标绘制圆形图案,可叠加产生不同色

    脚本代码(For Alixixi.com)如下: Document body{ font-family: 微软雅黑; } canvas{ display:block; border:1px dotte ...

  4. html5+实现图片自动切换,js图片自动切换效果处理代码

    var curIndex=0; //时间间隔 单位毫秒 var timeInterval=1000; var arr=new Array(); arr[0]="1.jpg"; ar ...

  5. html5 制作书架展示 PHP,简单做出HTML5翻页效果文字特效

    简单做出HTML5翻页效果文字特效 之前在网上看到一款比较有新意的HTML5文字特效,文字效果是当鼠标滑过是出现翻开折叠的效果,类似书本翻页.于是我兴致勃勃的点开源码看了一下,发现其实实现也挺简单的, ...

  6. html5简单图片幻灯片转换源码,HTML5特效库 炫酷幻灯片切换特效源码

    效果图 各位叔叔阿姨,大哥大姐,弟弟妹妹,全国的老少爷们大家好! 今天给大家带来的HTML5特效 属于banner轮播的切换效果 前端源码免费分享裙581549454 废话不多说,上源码! CSS源码 ...

  7. html5以图片为背景的代码,HTML5画布背景图片

    我试图在我发现的这个画布脚本的背面放置一个背景图像.我知道这与context.fillstyle有关,但不知道该怎么做.我想要这行读这样的东西: context.fillStyle = "u ...

  8. js把html转换成图片格式,纯JS实现将DIV中的内容转化为PNG图片

    //1.将div转成svg var data = "data:image/svg+xml," + "" + "" + " &quo ...

  9. JS获取html页面上选中内容

    新的html浏览器都支持获取页面中选中文本的操作了. 看看js中提供的操作: 在chrome内: >document.getSelection(); Selection {anchorNode: ...

最新文章

  1. 237. 删除链表中的节点(C语言)
  2. 面试题:一条 sql 语句是如何经过 MySQL 的体系结构的?
  3. mac 卸载 eclipse_Mac 新手准备工具集合
  4. Mvc示例代码调试之一----调试工具及设置(用firebug与vs联合调试)
  5. asp.net core中负载均衡场景下http重定向https的问题
  6. C++11新特性选讲 语言部分 侯捷
  7. 2015-2016-1学期 《信息安全系统设计基础》课程总结
  8. easycode 表配置_idea的easyCode的 MybatisPlus模板的配置详解
  9. Stm32 CubeMx安装和配置Cube.ai教程
  10. [恢]hdu 2143
  11. matlab的矩阵运算,MATLAB的矩阵运算
  12. python微博_「Python」 - 微博数据分析
  13. 2019数码倒腾经验 斐讯T1以及9008刷机 新路由三newifi3 470矿卡
  14. SandStorm 出品|建设者高光时刻 9 月作品集已上线!
  15. 计算机无法装补丁,Win7系统无法安装补丁提示缺少Service Pack系统组件的原因及解决方法...
  16. 一次性餐具 disposable dishware
  17. 聚焦:XuperOS成长计划FAQ
  18. 奇淫技巧 | route命令设置网络优先级
  19. 中国管道防爆阻火器市场投资分析与需求前景预测报告2022-2028年
  20. ❤️学懂C语言文件操作读这篇就够了(万字总结,附习题)❤️

热门文章

  1. 全球及中国二手车贷款行业运行分析及项目动态研究报告2021年版
  2. 新生宝宝办证-STEP1-出生证明办理
  3. Tp5 实现短信发送及页面倒计时
  4. Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息
  5. 公司上市需要具备的条件有哪些
  6. 三分的多种写法及对应的精度 三分套三分原理
  7. Android 编译优化探索
  8. C/C++图形库EasyX快速上手指南【1】——绘图窗口和基本图形文字绘制
  9. wps表格里某一行或某一列怎么加上相同的数字、字母或者汉字
  10. Markdown 插入图片 基于base64编码