WebXR Frameworky, knihovny a nástroje

WebXR Device API

WebXR Device API je webový standard pro přístup k funkcím zařízení určených pro provoz virtuální (VR) a rozšířené (AR) reality přímo z prohlížeče. Pro projekty rozšířené reality WebXR poskytuje rozhraní pro použití kamer zařízení, zobrazení virtuálních objektů v reálném světě a interakci s prostorovými informacemi.

WebXR je navrženo tak, aby bylo široce kompatibilní s různými zařízeními s podporou WebXR v prohlížeči.

A-Frame

A-Frame je open-source webový framework pro vytváření zážitků z virtuální reality. Je spravován vývojáři ze Supermedium a Google. A-Frame je systémový framework entitních komponent pro Three.js, prostřednictvím kterého lze vytvářet 3D a WebXR scény s využitím html struktury.

A-Frame.io

V A-Frame se objekty vkládají a spravují prostřednictvím a-frame specifických html tagů s parametry. A-Frame má nativně i ispekční UI režim přístupný pod klávesovou zkratkou ctrl + alt + i.

Stereoskopická fotka v A-frame

Stereoskopický pohled, známý také jako stereoskopie, je metoda nebo technika pro vytváření nebo vnímání obrazu, který má iluzi hloubky, což vede k divákovi k vnímání třírozměrného (3D) zobrazení. Tento efekt se dosahuje prezentací dvou mírně odlišných obrazů samostatně každému oku. Tyto dva obrazy se obvykle pořizují z mírně odlišných úhlů pohledu, což odpovídá rozestupu mezi lidskými očima, čímž se napodobuje způsob, jakým naše oči vnímají scény v reálném světě.

<a-assets>
<img id="left" src="imgs/left.jpg"></img>
<img id="right" src="imgs/right.jpg"></img>
</a-assets>
<a-scene antialias="true">
	<-- eye: right Default camera for Web View -->
	<a-camera stereocam="eye: right"></a-camera>

	<a-image src="#left" height="0.75" position="0 1.5 -1" stereo="eye: left"></a-image>
	<a-image src="#right" height="0.75" position="0 1.5 -1" stereo="eye: right"></a-image>
</a-scene>
<a-scene antialias="true">
	<-- eye: right Default camera for Web View -->
	<a-camera stereocam="eye: right"></a-camera>

	<a-sky src="#left" rotation="0 -90 0" stereo="eye: left"></a-sky>
	<a-sky src="#right" rotation="0 -90 0" stereo="eye: right"></a-sky>
</a-scene>

Zvuk a pozicování zvuku v Aframe

A-Frame podporuje prostorový zvuk. A-Frame dokumentace pro zvuk.

<a-assets>
<audio id="parasail" src="sounds/parasail.mp3"></audio>
</a-assets>
<a-cylinder color="#0088FF" height="5" position="-2 2.5 0"
					sound="src: #parasail";on: click; volume: 1; refDistance: 4; rolloffFactor: 4>
	<a-entity sound="src: #parasail; autoplay: false" position="1.339 1.525 0"></a-entity>
</a-cylinder>
AFRAME.registerComponent('play', {
	init: function(){
		var myEl = document.querySelector('#yellow');
		this.el.addEventListener('click', function(){
			myEl.components.sound.playSound();
		});
	}
});
AFRAME.registerComponent('stop', {
	init: function(){
		var myEl = document.querySelector('#yellow');
		this.el.addEventListener('click', function(){
			myEl.components.sound.stopSound();
		});
	}
});
Nyní lze používat start a stop jako atribut v A-Frame elementech
<a-box id="yellow" color="#FFAA00" position="1.5 0.5 0.5" sound="src: #parasail">
	<a-sphere color="#00AA00" radius="0.25" position="-0.5 1 0" play></a-sphere>
	<a-sphere color="#AA0000" radius="0.25" position="0.5 1 0" stop></a-sphere>
</a-box>
<a-assets>
<img id="panorama" src="imgs/panorama.jpg"></img>
<audio id="park-ambience" src="sounds/park.mp3"></audio>
</a-assets>

// 360° Panorama
<a-sky src="#panorama" sound="src: #park-ambience; autoplay: true; loop: true; positional: false">

Video


<a-assets>
	<img id="play" src="imgs/play.png"></img>
	<img id="pause" src="imgs/pause.png"></img>
	<video id="standardVideo" src="videos/standardVideo.mp4" loop="true"></video>
	<video id="360video" src="videos/360video.mp4" loop="true"></video>
</a-assets>
AFRAME.registerComponent('play-pause', {
	init: function(){
		var video = document.querySelector('#standardVideo');
		var videoControls = document.querySelector('#videoControls');
		this.el.addEventListener('click', function(){
			if(video.paused){
				video.play();
				videoControls.setAttribute('src', '#pause');
			} else {
				video.pause();
				videoControls.setAttribute('src', '#play');
			}
		});
	}
});
<a-scene>
	<a-camera>
		<a-cursor></a-cursor>
	</a-camera>

	<a-video src="#standardVideo" width="8" height="4.5" position="0 3 -9">
		<a-image id="videoControls" src="#play" position="0 -3 0" scale="0.5 0.5 1" play-pause></a-image>
	</a-video>
</a-scene>
AFRAME.registerComponent('play-pause', {
	init: function(){
		var video = document.querySelector('#360Video');
		var videoControls = document.querySelector('#videoControls');
		this.el.addEventListener('click', function(){
			if(video.paused){
				video.play();
				videoControls.setAttribute('src', '#pause');
			} else {
				video.pause();
				videoControls.setAttribute('src', '#play');
			}
		});
	}
});
<a-scene>
	<a-camera>
		<a-cursor></a-cursor>
	</a-camera>

	<a-videosphere src="#360video" rotation="0 -90 0"></a-videosphere>

	<a-image id="videoControls" src="#play" position="0 1 -2" scale="0.2 0.2 1" play-pause></a-image>
</a-scene>

AR.js - Rozšířená realita na webu

AR.js je odlehčená knihovna pro rozšířenou realitu na webu, která zahrnuje funkce jako sledování obrazu, umístění založené na AR a sledování značek.

AR.js používá ke sledování jsartoolkit5, ale může zobrazovat rozšířený obsah buď pomocí three.js nebo A-Frame.

Poznámka: Na githubu je velmi nízká aktivita

MindAR

Open-source javascriptová knihovna, zcela zdarma k použití.