今天如何在网络上构建VR
也非常有趣
开始您的发展冒险进入虚拟网络,有三种潜在的方法可以做到这一点:> javascript,三分和观看设备方向
- > javascript,三。 css和webvr
- (仍然很早就) >我将仔细阅读每个人的工作方式。 钥匙要点
- 通过三种主要方法,可以将虚拟现实(VR)纳入Web开发中:JavaScript,三js和观察设备方向; JavaScript,三。js和webvr;和CSS和WebVr。 javaScript,三分和观看设备方向方法使用设备方向浏览器事件来检测设备旋转和倾斜,在VR上下文中,该事件允许调整相机的调整,可以跟随观看者的凝视。
> JavaScript,Trix.js和WebVR是一种实验方法,目前最适合访问VR耳机方向,例如Oculus Rift。它使用WebVR API提供对VR设备信息的访问。
>>目前处于开发的早期阶段的CSS和WebVR方法旨在将CSS 3D变换与VR全屏模式集成。
>为Web创建VR体验被视为采用VR技术的关键驱动力,而Boris Smus的WebVR样板建议作为希望为Web建立VR体验的开发人员的最佳起点。 >- > javascript,三分和观看设备方向
- >目前大多数基于浏览器的虚拟现实项目工作的方式之一是通过设备方向浏览器事件。这告诉浏览器如何定向设备,并允许浏览器在旋转或倾斜时拾取。在VR视角内的此功能使您可以检测到某人何时环顾并调整相机以跟随他们的目光。
- 为了在浏览器中实现出色的3D场景,我们使用了Trix.js,这是一个JavaScript框架,可以轻松创建3D形状和场景。它使大部分复杂性都无法汇集3D体验,并让您专注于试图在场景中放置的内容。 >
- >我在SitePoint上写了两个使用设备方向方法的演示:
- >将VR带到网络上,使用Google纸板和三个。 >可视化vr中的Twitter流和节点
- >
- > DeviceErientationControls.js - 这是提供我们上面讨论的设备方向的三个插件。它可以移动我们的相机以满足我们设备的动作。
- > orbitControls.js - 这是一个备份控制器,如果我们没有可以访问设备方向事件的设备,则可以使用鼠标移动相机。 >
- > stereoefect.js - 一个三。效应,将屏幕分成立体镜图像,每只眼睛像VR一样略有不同。这会创建实际的VR分屏屏幕,而无需我们做任何复杂的事情。
> - >设备方向
>这些关键组件涉及以下JavaScript文件(您可以从上面的示例演示中获取这些文件,并且还会在三个示例下载中找到它们):
three.min.js - 我们的三个.js框架
>
设备方向事件侦听器具有兼容设备时提供alpha,beta和伽马值。如果我们没有任何alpha值,它不会改变我们的控件以使用设备方向,以便我们可以使用轨道控件。
如果确实具有此alpha值,则我们创建一个设备方向控制并为其提供我们的相机变量以控制。如果用户点击屏幕,我们还将其设置为将场景设置为全屏(我们不想在VR中盯着浏览器的地址栏)。<span>function setOrientationControls(e) { </span> <span>if (!e.alpha) { </span> <span>return; </span> <span>} </span> controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true); </span> controls<span>.connect(); </span> controls<span>.update(); </span> element<span>.addEventListener('click', fullscreen, false); </span> <span>window.removeEventListener('deviceorientation', setOrientationControls, true); </span><span>} </span><span>window.addEventListener('deviceorientation', setOrientationControls, true); </span> <span>function fullscreen() { </span> <span>if (container.requestFullscreen) { </span> container<span>.requestFullscreen(); </span> <span>} else if (container.msRequestFullscreen) { </span> container<span>.msRequestFullscreen(); </span> <span>} else if (container.mozRequestFullScreen) { </span> container<span>.mozRequestFullScreen(); </span> <span>} else if (container.webkitRequestFullscreen) { </span> container<span>.webkitRequestFullscreen(); </span> <span>} </span><span>}</span>
如果不存在该alpha值,并且我们无法访问设备的设备方向事件,则该技术提供了一个控制,可以通过使用鼠标将相机拖动来移动相机。看起来很这样:
>上面代码可能会混淆的主要内容是Nopan和Nozoom。基本上,我们不想通过鼠标在场景中进行物理移动,我们不想能够放大或缩小 - 我们只想环顾四周。
立体声效果为了使用立体声效果,我们将其定义为So:
controls <span>= new THREE<span>.OrbitControls</span>(camera, element); </span>controls<span>.target.set( </span> camera<span>.position.x, </span> camera<span>.position.y, </span> camera<span>.position.z </span><span>); </span>controls<span>.noPan = true; </span>controls<span>.noZoom = true;</span>
然后在窗口的大小上,我们更新其大小:
>
在每个requestAnimationframe中,我们设置了场景以通过我们的效果来渲染:这是设备方向样式实现VR的工作方式的基础知识。它对于使用Google纸板进行了精美而简单的实现可能是有效的,但是在Oculus Rift上并没有那么有效。下一个方法对裂谷要好得多。
effect <span>= new THREE<span>.StereoEffect</span>(renderer);</span>
> javascript,三。
希望访问像Oculus Rift这样的VR耳机方向? WebVR目前是这样做的方式。 WebVR是一种早期且实验性的JavaScript API,可访问Oculus Rift和Google Cardboard等虚拟现实设备的功能。目前,它可以在每晚的Firefox上使用,以及一些实验性的移动铬和铬。要记住的一件事是,它的规格仍在草稿中并且可能会发生变化,因此请尝试一下,但要知道您可能需要随着时间的推移进行调整。> 总体而言,WebVR API通过以下方式提供对VR设备信息的访问
>我不会在这里详细介绍很多技术细节(我将在其未来的SitePoint文章中进行更详细的详细信息!),如果您有兴趣查看更多信息,请查看WebVR编辑器的草案。我之所以不会详细介绍的原因是,有一种实现API的方法。
实现WebVR API的上述易于使用的方法是使用Boris Smus的WebVR样板。它提供了良好的基准功能,可以实现WebVR并优雅地降低不同设备的体验。目前,这是我见过的最好的Web VR实现。<span>function setOrientationControls(e) { </span> <span>if (!e.alpha) { </span> <span>return; </span> <span>} </span> controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true); </span> controls<span>.connect(); </span> controls<span>.update(); </span> element<span>.addEventListener('click', fullscreen, false); </span> <span>window.removeEventListener('deviceorientation', setOrientationControls, true); </span><span>} </span><span>window.addEventListener('deviceorientation', setOrientationControls, true); </span> <span>function fullscreen() { </span> <span>if (container.requestFullscreen) { </span> container<span>.requestFullscreen(); </span> <span>} else if (container.msRequestFullscreen) { </span> container<span>.msRequestFullscreen(); </span> <span>} else if (container.mozRequestFullScreen) { </span> container<span>.mozRequestFullScreen(); </span> <span>} else if (container.webkitRequestFullscreen) { </span> container<span>.webkitRequestFullscreen(); </span> <span>} </span><span>}</span>
要开始使用此方法,请在GitHub上下载WebVR样板。
>>您可以专注于编辑index.html并使用该设置中的所有文件,也可以从头开始将特定的插件实现到自己的项目中。如果您想比较每个实现的差异,我将在VR中的Twitter流中可视化的Twitter流迁移,并从上面的three.js和Node示例迁移到VR中的WebVR驱动的Twitter流中。
要将此项目从头开始,您要拥有的文件是: >
但是,我们在这种方法中不会通过这种效果呈现。相反,我们通过VR Manager渲染。
> VR Manager提供一个按钮,如果用户在兼容浏览器上,则可以输入VR模式,或者如果浏览器无法使用VR,则可以将其输入全屏(全屏是我们想要的移动设备)。 hidebutton参数说我们是否要隐藏该按钮。我们绝对不想隐藏它!
在所有这些方面,您应该拥有一个工作的VR实现,该实现将根据设备转化为各种格式。 > 这是我的Twitter示例的视图在支持VR的浏览器上的样子: 在Oculus Rift视图中,当您单击VR图标时会出现: 这是智能手机上的视图,设备方向仍然使我们能够环顾场景,而我们没有分屏屏幕。内容的良好响应视图: 如果我们单击移动设备上的VR图标,我们将获得Google Cardboard样式设备的全屏视图: >
>
> >如何使用JavaScript? 什么是WebVR,它与Web上的VR有何关系? 我可以使用JavaScript以外的其他编程语言在网上构建VR? 🎜> JavaScript是包括VR在内的Web开发的主要语言。但是,您可以使用编译为JavaScript的语言,例如TypeScript或CoffeeScript。此外,WebAssembly允许您在浏览器中以近距离速度以C等语言编写代码。 >如何使我的VR体验可供没有VR设备的用户访问? 您可以使用vr经验来测试您的VR体验VR耳机。如果您没有耳机,则可以将WebVR仿真器扩展用于Chrome和Firefox。该工具模拟WebVR API并提供了VR场景的3D视图。 您可以使用GLTF Exporter以三个js的形式以A框架可以读取的格式导出3D模型。 GLTF(GL传输格式)是用于3D场景和型号的标准文件格式。 >一些挑战包括在3D环境中处理用户输入,优化性能以及确保在不同的VR设备和浏览器上兼容。此外,创建现实的3D图形和动画可能很复杂。
实施它仅需要从设备方向方法进行一些调整。这是那些想尝试此方法的人的概述:
VR控件非常易于设置。我们可以将一个新的VRControls对象分配给我们之前使用的控件变量。轨道控件和设备方向控制不应是必需的,因为现在的样板现在应在没有VR功能的情况下照顾浏览器。这意味着您的场景在Google纸板上也应该很好!
<span>function setOrientationControls(e) {
</span> <span>if (!e.alpha) {
</span> <span>return;
</span> <span>}
</span>
controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true);
</span> controls<span>.connect();
</span> controls<span>.update();
</span>
element<span>.addEventListener('click', fullscreen, false);
</span>
<span>window.removeEventListener('deviceorientation', setOrientationControls, true);
</span><span>}
</span><span>window.addEventListener('deviceorientation', setOrientationControls, true);
</span>
<span>function fullscreen() {
</span> <span>if (container.requestFullscreen) {
</span> container<span>.requestFullscreen();
</span> <span>} else if (container.msRequestFullscreen) {
</span> container<span>.msRequestFullscreen();
</span> <span>} else if (container.mozRequestFullScreen) {
</span> container<span>.mozRequestFullScreen();
</span> <span>} else if (container.webkitRequestFullscreen) {
</span> container<span>.webkitRequestFullscreen();
</span> <span>}
</span><span>}</span>
效果与立体表的实现非常相似。只需将该效果替换为我们的新vreffect:
>
controls <span>= new THREE<span>.OrbitControls</span>(camera, element);
</span>controls<span>.target.set(
</span> camera<span>.position.x,
</span> camera<span>.position.y,
</span> camera<span>.position.z
</span><span>);
</span>controls<span>.noPan = true;
</span>controls<span>.noZoom = true;</span>
effect <span>= new THREE<span>.StereoEffect</span>(renderer);</span>
effect<span>.setSize(width, height);</span>
> css和webvr
Mozilla的目标是在Firefox Nightly版本中为其浏览器带来VR观看功能,但是很早就!我的运气并没有太多运气,可以在我的Mac和Oculus设置上工作。 Firefox的VladimirVukićević提到的各种惯例包括将CSS 3D转换与VR全屏模式集成。<span>function setOrientationControls(e) {
</span> <span>if (!e.alpha) {
</span> <span>return;
</span> <span>}
</span>
controls <span>= new THREE<span>.DeviceOrientationControls</span>(camera, true);
</span> controls<span>.connect();
</span> controls<span>.update();
</span>
element<span>.addEventListener('click', fullscreen, false);
</span>
<span>window.removeEventListener('deviceorientation', setOrientationControls, true);
</span><span>}
</span><span>window.addEventListener('deviceorientation', setOrientationControls, true);
</span>
<span>function fullscreen() {
</span> <span>if (container.requestFullscreen) {
</span> container<span>.requestFullscreen();
</span> <span>} else if (container.msRequestFullscreen) {
</span> container<span>.msRequestFullscreen();
</span> <span>} else if (container.mozRequestFullScreen) {
</span> container<span>.mozRequestFullScreen();
</span> <span>} else if (container.webkitRequestFullscreen) {
</span> container<span>.webkitRequestFullscreen();
</span> <span>}
</span><span>}</span>
>
>如果您尝试使用此代码构建VR演示,请在评论中分享或在Twitter上与我联系(@thatpatrickguy)。我很想戴上我的Oculus Rift或Google Cardboard,然后将其旋转!经常询问有关在网络上构建VR的问题
>在网络上构建VR的前提是什么?您还应该熟悉用于渲染2D和3D图形的JavaScript API WebGL。 Trix.js的知识是一个流行的JavaScript库,用于创建3D图形,也是有益的。此外,您应该有一个VR耳机来测试您的VR体验。
> javascript以及诸如three.js和a-frame之类的库,可以用于创建VR体验。三。js简化了使用WebGL的过程,而A框架允许您使用类似于HTML的语法构建VR场景。您可以使用这些工具创建3D对象,添加纹理和照明以及控制摄像机移动。
webvr是JavaScript API这为Web浏览器中的各种虚拟现实设备(例如Oculus Rift,HTC Vive和Google Cardboard)提供了支持。它允许开发人员在网络上创建沉浸式的VR体验,这些体验可供拥有VR设备和兼容浏览器的任何人访问。
如何优化网络的VR体验? Web涉及减少延迟,有效地管理内存和优化渲染。您可以使用异步加载,纹理压缩和细节级别(LOD)等技术来提高性能。另外,考虑用户硬件和网络条件的局限性。
>如何将我的VR Creations从Thrix.js导出到A-FRAME?
在网络上构建VR时,我可能会面临哪些挑战?
>在哪里可以了解有关在网络上构建VR的更多信息? Mozilla的WebVR文档是一个很好的起点。您还可以在三个和A框网站上查看教程和示例。此外,在许多在线社区中,您可以提出问题并分享您的作品。
>
以上是今天如何在网络上构建VR的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。
