搜索
首页web前端js教程今天如何在网络上构建VR

今天如何在网络上构建VR

到2020年,虚拟现实的价值最高为70亿美元。在此期间,网络绝对不会成为仅限的2D环境。实际上,已经有几种简单的方法将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流和节点
    • >
    >如果您是三分新人以及如何整理场景,我建议您查看以上两篇文章,以便对此方法进行更深入的介绍。我将在这里介绍关键概念,但是它会处于更高的层次。

    >这些关键组件涉及以下JavaScript文件(您可以从上面的示例演示中获取这些文件,并且还会在三个示例下载中找到它们):

    three.min.js - 我们的三个.js框架
    • > DeviceErientationControls.js - 这是提供我们上面讨论的设备方向的三个插件。它可以移动我们的相机以满足我们设备的动作。
    • > orbitControls.js - 这是一个备份控制器,如果我们没有可以访问设备方向事件的设备,则可以使用鼠标移动相机。
    • >
    • > stereoefect.js - 一个三。效应,将屏幕分成立体镜图像,每只眼睛像VR一样略有不同。这会创建实际的VR分屏屏幕,而无需我们做任何复杂的事情。>
    • >设备方向
    启用设备方向控件的代码看起来像:

    >

    设备方向事件侦听器具有兼容设备时提供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>
Orbit Controls

如果不存在该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>
如果您想为网络构建VR体验,这是当前最佳起点的地方!

要开始使用此方法,请在GitHub上下载WebVR样板。

>

>您可以专注于编辑index.html并使用该设置中的所有文件,也可以从头开始将特定的插件实现到自己的项目中。如果您想比较每个实现的差异,我将在VR中的Twitter流中可视化的Twitter流迁移,并从上面的three.js和Node示例迁移到VR中的WebVR驱动的Twitter流中。 要将此项目从头开始,您要拥有的文件是:>

  • >三。min.js - 我们的三框架框架
  • > vrcontrols.js - 通过WebVR进行VR控件的三分插件(可以在Boaler_components/trixjs/xplass/js/js/controls/vrcontrols.js中找到boble_components in Boolerplate Project中的
  • >>>>>>>>
  • > vreffect.js - VR效应本身的三分插件,显示了oculus Rift的场景(可以在BOWER_COMPONENTS/TRIFE_COMPONENTS/TRINE JS/示例/JS/js/js/effects/vreffect.js中找到锅炉板项目)
  • > webvr-polyfill.js - 这是浏览器的多填充,这些浏览器尚未完全支持WebVR(可以在GitHub和Bower_components/webvr-polyfill/webvr-polyfill/webvr-polyfill.js中找到。代码)
  • > webvr-manager.js - 这是为您管理所有内容的样板代码的一部分,包括提供一种输入和退出VR模式的方法(可以在build/webvr-manager.js中找到)
实施它仅需要从设备方向方法进行一些调整。这是那些想尝试此方法的人的概述:

>

控制

VR控件非常易于设置。我们可以将一个新的VRControls对象分配给我们之前使用的控件变量。轨道控件和设备方向控制不应是必需的,因为现在的样板现在应在没有VR功能的情况下照顾浏览器。这意味着您的场景在Google纸板上也应该很好!

> 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>

效果与立体表的实现非常相似。只需将该效果替换为我们的新vreffect:

>

但是,我们在这种方法中不会通过这种效果呈现。相反,我们通过VR Manager渲染。

>
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>
VR Manager

VR经理会照顾我们所有进入/退出等等的VR,因此这是我们的场景最终呈现的地方。我们最初通过以下内容进行设置:

> VR Manager提供一个按钮,如果用户在兼容浏览器上,则可以输入VR模式,或者如果浏览器无法使用VR,则可以将其输入全屏(全屏是我们想要的移动设备)。 hidebutton参数说我们是否要隐藏该按钮。我们绝对不想隐藏它!

然后,我们的渲染呼叫看起来像是这样,它使用了来自我们的three.js的update()函数的时间戳变量:
effect <span>= new THREE<span>.StereoEffect</span>(renderer);</span>
>

在所有这些方面,您应该拥有一个工作的VR实现,该实现将根据设备转化为各种格式。

>

> renderer.getSize()返回错误?这让我发疯了几个小时,但是要解决此问题,您需要做的就是 - 更新三个。
effect<span>.setSize(width, height);</span>
webvr样板在动作中的外观

这是我的Twitter示例的视图在支持VR的浏览器上的样子:

今天如何在网络上构建VR

在Oculus Rift视图中,当您单击VR图标时会出现:

> 今天如何在网络上构建VR

这是智能手机上的视图,设备方向仍然使我们能够环顾场景,而我们没有分屏屏幕。内容的良好响应视图:

今天如何在网络上构建VR

如果我们单击移动设备上的VR图标,我们将获得Google Cardboard样式设备的全屏视图:

今天如何在网络上构建VR

> css和webvr

Mozilla的目标是在Firefox Nightly版本中为其浏览器带来VR观看功能,但是很早就!我的运气并没有太多运气,可以在我的Mac和Oculus设置上工作。 Firefox的VladimirVukićević提到的各种惯例包括将CSS 3D转换与VR全屏模式集成。

>

作为弗拉基米尔(Vladimir)的博客文章的一个例子,他说具有转换风格的元素:preserve-3d应该从两个角度呈现两次,以将其引入VR:>

如果您知道使用VR和CSS的任何演示,请告诉我!我无法追踪任何东西。将网络的HTML和CSS一部分带入VR的想法无疑是一个非常有趣的概念。当我们都慢慢转移到VR设备时,网络不可避免地会进入这样的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采用及其价值的一件事是内容。我们需要在那里获取VR内容供VR用户享受!有什么比通过网络更好,更容易的方法?

>

>如果您尝试使用此代码构建VR演示,请在评论中分享或在Twitter上与我联系(@thatpatrickguy)。我很想戴上我的Oculus Rift或Google Cardboard,然后将其旋转!

>

>我通过JavaScript在VR和AR上有一组策划的链接,以寻求快速参考。前往Dev Diner,并使用JavaScript开发人员指南查看我的Dev Diner VR和AR,并包含本文中提到的两个链接,其他很棒的Sitepoint文章等。如果您还有其他很棒的资源,我没有列出过 - 请告诉我!

>

经常询问有关在网络上构建VR的问题

>在网络上构建VR的前提是什么?您还应该熟悉用于渲染2D和3D图形的JavaScript API WebGL。 Trix.js的知识是一个流行的JavaScript库,用于创建3D图形,也是有益的。此外,您应该有一个VR耳机来测试您的VR体验。

>

>如何使用JavaScript?

javascript以及诸如three.js和a-frame之类的库,可以用于创建VR体验。三。js简化了使用WebGL的过程,而A框架允许您使用类似于HTML的语法构建VR场景。您可以使用这些工具创建3D对象,添加纹理和照明以及控制摄像机移动。

什么是WebVR,它与Web上的VR有何关系?

webvr是JavaScript API这为Web浏览器中的各种虚拟现实设备(例如Oculus Rift,HTC Vive和Google Cardboard)提供了支持。它允许开发人员在网络上创建沉浸式的VR体验,这些体验可供拥有VR设备和兼容浏览器的任何人访问。

我可以使用JavaScript以外的其他编程语言在网上构建VR? 🎜> JavaScript是包括VR在内的Web开发的主要语言。但是,您可以使用编译为JavaScript的语言,例如TypeScript或CoffeeScript。此外,WebAssembly允许您在浏览器中以近距离速度以C等语言编写代码。

如何优化网络的VR体验? Web涉及减少延迟,有效地管理内存和优化渲染。您可以使用异步加载,纹理压缩和细节级别(LOD)等技术来提高性能。另外,考虑用户硬件和网络条件的局限性。

>如何使我的VR体验可供没有VR设备的用户访问?

您可以为没有VR设备的用户创建后备。例如,您可以使用设备方向API来允许用户通过移动其移动设备来探索VR场景。您还可以提供360度的视图,用户可以使用鼠标或触摸进行导航。

如何在网络上测试我的VR体验?

您可以使用vr经验来测试您的VR体验VR耳机。如果您没有耳机,则可以将WebVR仿真器扩展用于Chrome和Firefox。该工具模拟WebVR API并提供了VR场景的3D视图。

>

>如何将我的VR Creations从Thrix.js导出到A-FRAME?

您可以使用GLTF Exporter以三个js的形式以A框架可以读取的格式导出3D模型。 GLTF(GL传输格式)是用于3D场景和型号的标准文件格式。

在网络上构建VR时,我可能会面临哪些挑战?

>一些挑战包括在3D环境中处理用户输入,优化性能以及确保在不同的VR设备和浏览器上兼容。此外,创建现实的3D图形和动画可能很复杂。

>在哪里可以了解有关在网络上构建VR的更多信息? Mozilla的WebVR文档是一个很好的起点。您还可以在三个和A框网站上查看教程和示例。此外,在许多在线社区中,您可以提出问题并分享您的作品。

>

以上是今天如何在网络上构建VR的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Python和JavaScript的未来:趋势和预测Python和JavaScript的未来:趋势和预测Apr 27, 2025 am 12:21 AM

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。

Python vs. JavaScript:开发环境和工具Python vs. JavaScript:开发环境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

JavaScript是用C编写的吗?检查证据JavaScript是用C编写的吗?检查证据Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C语言编写的。1)C语言提供了高效性能和底层控制,适合JavaScript引擎的开发。2)以V8引擎为例,其核心用C 编写,结合了C的效率和面向对象特性。3)JavaScript引擎的工作原理包括解析、编译和执行,C语言在这些过程中发挥关键作用。

JavaScript的角色:使网络交互和动态JavaScript的角色:使网络交互和动态Apr 24, 2025 am 12:12 AM

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C和JavaScript:连接解释C和JavaScript:连接解释Apr 23, 2025 am 12:07 AM

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

从网站到应用程序:JavaScript的不同应用从网站到应用程序:JavaScript的不同应用Apr 22, 2025 am 12:02 AM

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python vs. JavaScript:比较用例和应用程序Python vs. JavaScript:比较用例和应用程序Apr 21, 2025 am 12:01 AM

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C/C在JavaScript口译员和编译器中的作用C/C在JavaScript口译员和编译器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中