---
title: WebVR API
slug: Web/API/WebVR_API
tags:
- API
- Experimental
- Expérimental(2)
- Landing
- NeedsTranslation
- Reference
- Référence(2)
- TopicStub
- VR
- Virtual Reality
- WebVR
translation_of: Web/API/WebVR_API
---
{{SeeCompatTable}}{{APIRef("WebVR API")}}
WebVR -rajapinta tarjoaa tuen VR-laitteiden — kuten Oculus Rift tai HTC Vive -silmikoiden — käyttämiseen webbisovelluksille, jolloin kehittäjät voivat muuttaa silmikolta saadun sijainti- ja liiketiedon 3D-skenessä liikkumistiedoksi. Tämä mahdollistaa useita kiinnostavia sovellusmahdollisuuksia aina virtuaalisista tuote-esittelyistä ja interaktiivisista treenisovelluksista immersiivisiin FPS-räiskintäpeleihin.
Perusperiaatteet ja käyttö
Metodi {{domxref("Navigator.getVRDisplays()")}} hakee kaikki tietokoneeseen liitetyt VR-laitteet; jokaista näistä vastaa {{domxref("VRDisplay")}} -tyyppinen objekti.
{{domxref("VRDisplay")}} on perusrajapinta WebVR API:in — sen ominaisuuksien ja metodien avulla voit esimerkiksi:
- Hakea tiedot näyttölaitteen tunnistamiseen, sen ominaisuudet ja siihen liitetyt ohjaimet.
- Hakea kunkin näytettäväksi tarkoitetun sisältöruudun {{domxref("VRFrameData", "frame data")}} ja toimittaa ruudut näytölle oikealla taajuudella.
- Käynnistää ja pysäyttää näyttämisen.
Tyypillinen (yksinkertainen) WebVR-sovellus toimisi esimerkiksi näin:
- {{domxref("Navigator.getVRDisplays()")}} -metodilla haetaan viittaus VR-näyttöön.
- {{domxref("VRDisplay.requestPresent()")}} -metodilla käynnistetään näyttäminen.
- WebVR:n omalla versiolla {{domxref("VRDisplay.requestAnimationFrame()")}} -methodista suoritetaan sovelluksen renderöintisilmukkaa näytölle sopivalla virkistystaajuudella.
- Renderöintisilmukassa haetaan ruudun näyttämiseen tarvittavat tiedot ({{domxref("VRDisplay.getFrameData()")}}) -metodilla, piirretään näytettävä skene kaksi kertaa — siis kerran molemmille silmille, ja sen jälkeen toimitetaan renderöity näkymä näytölle käyttäjälle näytettäväksi metodilla ({{domxref("VRDisplay.submitFrame()")}}).
Tämän lisäksi WebVR 1.1 lisää useita tapahtumia (event) {{domxref("Window")}} -objektiin, jolloin JavaScriptillä voidaan reagoida näytön tilan muutoksiin.
Huom: APIn toiminnasta löytyy paljon lisätietoa artikkeleista Using the WebVR API ja WebVR Concepts.
Ohjaimien käyttö: WebVR:n yhdistäminen Gamepad API:in
Useissa WebVR-laitekokoonpanoissa silmikon mukana on käytettävissä erillinen ohjain. Ohjaimia voidaan käyttää WebVR-sovelluksissa Gamepad API:n kautta, ja erityisesti Gamepad Extensions API:n, joka lisää mukaan ohjaimen asentotiedon (controller pose), tuntoperusteiset laitteet (haptic actuators) ja muita vastaavia.
Huom: Artikkeli Using VR controllers with WebVR selittää perusteet VR-ohjaimien käytöstä WebVR-sovelluksissa.
WebVR rajapinnat
- {{domxref("VRDisplay")}}
- Edustaa mitä tahnsa APIn tukemaa VR-laitetta. Siinä on mukana yleistiedot laittesta, kuten laitteen tunnisteet (ID) ja kuvaukset sekä metodit VR-skenen esittämisen käynnistämiseen, silmäparametrien ja näytön ominaisuuksien hakemiseen ja muut olennaiset toiminnat.
- {{domxref("VRDisplayCapabilities")}}
- Esittää {{domxref("VRDisplay")}}:n ominaisuudet — näillä voidaan testata, saako laitteelta esimerkiksi sijaintitietoa.
- {{domxref("VRDisplayEvent")}}
- Edustaa WebVR-kohtaisen tapahtuman tapahtumaobjektia (kts. {{anch("Window", "window object extensions")}} alempana).
- {{domxref("VRFrameData")}}
- Vastaa kaikkea tietoa, mitä yksittäisen VR-skenen ruudun renderöintiin tarvitaan; metodi {{domxref("VRDisplay.getFrameData()")}} hakee nämä tiedot.
- {{domxref("VRPose")}}
- Edustaa tietyllä ajanhetkellä vallitsevaa sijaintitietoa (johon kuuluvat suunta, sijainti, nopeus ja kiihtyvyys.)
- {{domxref("VREyeParameters")}}
- Tarjoaa pääsyn kaikkeen tietoon, joka tarvitaan skenen renderöintiin oikein kullekin silmälle, esimerkiksi näkökentän laajuuden.
- {{domxref("VRFieldOfView")}}
- Näkökenttätieto, joka on määritelty keskipisteestä katsottuna neljällä asteluvulla.
- {{domxref("VRLayerInit")}}
- Tämä on {{domxref("VRDisplay")}}-näytöllä esitettävä kuvan eräs taso (layer).
- {{domxref("VRStageParameters")}}
- Huoneskaalaa tukevien laitteiden kanssa käytettävissä sovelluksissa "näyttämöalueen" tiedot löytyvät tästä.
Laajennukset muihin rajapintoihin
WebVR API laajentaa joitakin API-rajapintoja lisäten seuraavat ominaisuudet.
Gamepad
- {{domxref("Gamepad.displayId")}} {{readonlyInline}}
- Palauttaa liitetyn {{domxref("VRDisplay")}} tunnisteen {{domxref("VRDisplay.displayId")}} —
VRDisplay
, jonka skeneä gamepad ohjaa.
Navigator
- {{domxref("Navigator.activeVRDisplays")}} {{readonlyInline}}
- Palauttaa taulukon, jossa on mukana jokainen {{domxref("VRDisplay")}}, joka esittää parhaillaan ({{domxref("VRDisplay.ispresenting")}} on
true
).
- {{domxref("Navigator.getVRDisplays()")}}
- Palauttaa promise-objektin, joka sisältää taulukon {{domxref("VRDisplay")}} objekteja, jotka vastaavat kaikkia tietokoneeseen liitettyjä VR-näyttöjä.
Window-tapahtumat
- {{domxref("Window.onvrdisplaypresentchange")}}
- Edustaa tapahtumankäsittelijää (event handler), joka suoritetaan, kun VR_näytön esittämistila muuttuu — esimerkiksi tilasta 'esittää' tilaan 'ei esitä' tai päinvastoin (kun tapahtuma {{event("vrdisplaypresentchange")}} signaloidaan).
- {{domxref("Window.onvrdisplayconnect")}}
- Tämä tapahtumankäsittelijä suoritetaan, kun yhteensopiva VR-näyttö on kytketty tietokoneeseen (tapahtuma {{event("vrdisplayconnect")}} ).
- {{domxref("Window.onvrdisplaydisconnect")}}
- Tämä tapahtumankäsittelijä suoritetaan, kun yhteensopiva VR-näyttö irrotetaan tietokoneesta (kun tapahtuma {{event("vrdisplaydisconnect")}} signaloidaan).
- {{domxref("Window.onvrdisplayactivate")}}
- Edustaa taphtumaa, joka suoritetaan, kun näyttö on valmis esittämään sisältöä (tapahtuma {{event("vrdisplayactivate")}} ),esimerkiksi kun silmikko aktivoituu virransäästötilasta tai puetaan päälle.
- {{domxref("Window.onvrdisplaydeactivate")}}
- Tämä tapahtumankäsittelijä suoritetaan, kun näytölle ei voi enää esittää sisältöä (kun tapahtuma {{event("vrdisplaydeactivate")}} signaloidaan), esimerkiksi syystä, että silmikkonäyttö on siirtynyt virransäästötilaan käyttämättömyyden vuoksi.
Window:n tapahtumat, jotka eivät ole käytettävissä
Seuraavat tapahtumat löytyvät APIn määrittelystä, mutta niiden toteutusta ei tunnu vielä löytyvän mistään selaimista.
- {{domxref("Window.onvrdisplayblur")}}
- Edustaa tapahtumankäsittelijää, joka suoritetaan kun selain, käyttöjärjestelmä tai VR-laitteisto on keskeyttänyt esittämisen näytölle jostain syystä (tapahtuman {{event("vrdisplayblur")}} johdosta) — esimerkiksi käytettäessä järjestelmän valikkoa tai selainta. Tarkoitus on estää seurantaa tai VR-kokemuksen menetystä.
- {{domxref("Window.onvrdisplayfocus")}}
- Tämä tapahtumankäsittelijä suoritetaan, kun esittäminen näytöllä palautuu edellisen tapahtuman jälkeen (tapahtumasta {{event("vrdisplayfocus")}} ).
Esimerkkejä
Näiltä sivustoilta töydät useita esimerkkejä:
Spesifikaatiot
Specification |
Status |
Comment |
{{SpecName("GamepadExtensions")}} |
{{Spec2("GamepadExtensions")}} |
Määrittää Experimental Gamepad extensions. |
{{SpecName('WebVR 1.1')}} |
{{Spec2('WebVR 1.1')}} |
Alkuperäinen |
Selainyhteensopivuus
{{CompatibilityTable}}
Ominaisuus |
Chrome |
Edge |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari (WebKit) |
Perus |
{{CompatNo}}[1] |
{{CompatVersionUnknown}} |
{{CompatGeckoDesktop(55)}}[2] |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
Gamepad -laajennukset |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}}[4] |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
Feature |
Android |
Edge |
Firefox Mobile (Gecko) |
IE Phone |
Opera Mobile |
Safari Mobile |
Chrome for Android |
Samsung Internet for GearVR |
Basic support |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatVersionUnknown}}[3] |
{{CompatVersionUnknown}}
|
Gamepad extensions |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}}[4] |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
[1] API käytettävissä (Available) kaikilla alustoilla lipulla, mutta tällä hetkellä toimii ainoastaan kokeellisessa työpöytäversiossa (experimental version of Chrome) (muut versiot eivät palauta yhtään laitetta metodia {{domxref("Navigator.getVRDisplays()")}} kutsuttaessa).
[2] Tällä hetkellä ainoastaan Windows ja Mac OSX tuki on oletuksena päällä.
[3] Nyt ainoastaan laitteella Google Daydream.
[4] Päällä Firefox Nightly ja Beta -versioissa 55 ja uudempi. Käytetään valinnalla dom.gamepad-extensions.enabled
.
Katso myös
- vr.mozilla.org — Mozillan WebVR:n aloitussivu, jossa on demoja, apuohjelmia ja muuta tietoa.
- A-Frame — Open source web-sovelluskehys VR-kokemuksien rakentamiseen.
- webvr.info — Ajantasaista tietoa WebVR:stä, selaintuesta ja yhteisöstä.
- MozVr.com — Demoja, latauslinkkejä ja muuta Mozillan VR-ryhmän tarjoamia resursseja.
- threejs-vr-boilerplate — Käyttökelpoinen mallipohja, jonka päälle WebVR-sovellus on helppo rakentaa.
- Web VR polyfill — JavaScript -toteutus WebVR:n toiminnoista.