也非常有趣
开始您的发展冒险进入虚拟网络,有三种潜在的方法可以做到这一点:> 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>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流中。
要将此项目从头开始,您要拥有的文件是: >
但是,我们在这种方法中不会通过这种效果呈现。相反,我们通过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>
VR Manager
effect <span>= new THREE<span>.StereoEffect</span>(renderer);</span>
>
effect<span>.setSize(width, height);</span>
webvr样板在动作中的外观
> 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中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇

10款趣味横生的jQuery游戏插件,让您的网站更具吸引力,提升用户粘性!虽然Flash仍然是开发休闲网页游戏的最佳软件,但jQuery也能创造出令人惊喜的效果,虽然无法与纯动作Flash游戏媲美,但在某些情况下,您也能在浏览器中获得意想不到的乐趣。 jQuery井字棋游戏 游戏编程的“Hello world”,现在有了jQuery版本。 源码 jQuery疯狂填词游戏 这是一个填空游戏,由于不知道单词的上下文,可能会产生一些古怪的结果。 源码 jQuery扫雷游戏

本教程演示了如何使用jQuery创建迷人的视差背景效果。 我们将构建一个带有分层图像的标题横幅,从而创造出令人惊叹的视觉深度。 更新的插件可与JQuery 1.6.4及更高版本一起使用。 下载


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具

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

SublimeText3 英文版
推荐:为Win版本,支持代码提示!