All Projects → jbaicoianu → janusweb

jbaicoianu / janusweb

Licence: MIT license
An in-browser implementation of JanusVR

Programming Languages

javascript
184084 projects - #8 most used programming language
GLSL
2045 projects
HTML
75241 projects
CSS
56736 projects
shell
77523 projects

Projects that are alternatives of or similar to janusweb

MoonMotion
Moon Motion Toolkit - Free and open source toolkit for VR locomotion
Stars: ✭ 38 (-73.79%)
Mutual labels:  vr, vive, oculus, oculus-rift, virtual-reality
Aframe
🅰️ web framework for building virtual reality experiences.
Stars: ✭ 13,428 (+9160.69%)
Mutual labels:  vr, vive, oculus, virtual-reality, daydream
home-space
Startpage and WebXR home
Stars: ✭ 43 (-70.34%)
Mutual labels:  vr, vive, oculus, virtual
Viro
ViroReact: AR and VR using React Native
Stars: ✭ 1,735 (+1096.55%)
Mutual labels:  vr, oculus, virtual-reality, daydream
FireVR
Blender to JanusVR FireBoxHTML Exporter Addon (with IPFS support)
Stars: ✭ 25 (-82.76%)
Mutual labels:  vr, virtual-reality, janusvr
daydream-node
Quick Node.js module to connect to the Daydream controller and receive all the data
Stars: ✭ 17 (-88.28%)
Mutual labels:  vr, virtual-reality, daydream
WebScreenVR
WebScreenVR enhance your workspace while in Virtual Reality, allowing you to cast your screen and different applications around you in a 3D environment.
Stars: ✭ 53 (-63.45%)
Mutual labels:  oculus, oculus-rift, virtual-reality
Viveinpututility Unity
A toolkit that helps developing/prototyping VR apps.
Stars: ✭ 256 (+76.55%)
Mutual labels:  vr, oculus, virtual-reality
aframe-controller-cursor-component
A cursor for tracked controllers.
Stars: ✭ 30 (-79.31%)
Mutual labels:  vr, vive, oculus
Vrtk
*Beta* - An example of how to use the Tilia packages to create great content with VRTK v4.
Stars: ✭ 3,422 (+2260%)
Mutual labels:  vr, oculus-rift, virtual-reality
Hover Ui Kit
Create beautiful user interfaces for immersive VR/AR experiences.
Stars: ✭ 662 (+356.55%)
Mutual labels:  vr, oculus, virtual-reality
soundstagevr
virtual reality music sandbox built specifically for room-scale VR
Stars: ✭ 38 (-73.79%)
Mutual labels:  vr, oculus, oculus-quest
Relativty
An open source VR headset with SteamVR supports for $200
Stars: ✭ 5,544 (+3723.45%)
Mutual labels:  vr, oculus, virtual-reality
AnotherBadBeatSaberClone
This is a discontinued but perhaps helpful VR project created during my Master's degree at FH Wedel.
Stars: ✭ 22 (-84.83%)
Mutual labels:  vr, oculus, virtual-reality
zephyr
Mirror Android notifications to VR
Stars: ✭ 78 (-46.21%)
Mutual labels:  vr, vive, oculus
QuietVR
A Quiet Place in VR: Generate any 3D object with your voice. It's magic!
Stars: ✭ 17 (-88.28%)
Mutual labels:  vr, vive, oculus-rift
Ideaspace
😎 Create interactive 3D and VR web experiences for desktop, mobile & VR devices
Stars: ✭ 344 (+137.24%)
Mutual labels:  vr, oculus, virtual-reality
Remixvr
RemixVR is a tool for collaboratively building customisable VR experiences.
Stars: ✭ 129 (-11.03%)
Mutual labels:  vr, oculus, virtual-reality
UnityPlugin
Ultraleap SDK for Unity.
Stars: ✭ 447 (+208.28%)
Mutual labels:  vr, virtual-reality
lvr
👓 Augmented Reality for everyone - Out of the world experiences
Stars: ✭ 92 (-36.55%)
Mutual labels:  vr, virtual-reality

JanusWeb

A web framework for building social virtual reality experiences.

SiteVestaExamplesDemoDocs

Examples

Crystalball Augmented Perception Cinema Drag n' Drop Metacade Mansion

Features

  • Build immersive 3D environments for desktop, mobile, and VR devices using HTML and JS
  • Rendering functionality provided by Three.js / WebGL
  • Oculus Rift, Vive, GearVR, Daydream, and Cardboard support via WebVR API
  • Realtime collaboration across all devices via built-in networking
  • Import Collada, OBJ, glTF, and other popular 3d file formats
  • 3D positional audio
  • Gamepad support via the HTML5 Gamepad API
  • Supports hand tracking peripherals like Leap Motion, Oculus Touch, and Vive controllers
  • Support for 2d, sbs3d/ou3d, and 360 degree video textures using HTML5 Video
  • Scriptable client enables many customized uses

Using

There are several different ways to use JanusWeb, depending on how much control you want to have over the whole system.

Use our viewer

Our default viewer is always available at https://web.janusvr.com/. You can write an HTML page with your JanusVR Markup and host it anywhere you would normally host a static website. Any regular webhost, AWS S3 static sites, CDNs, or even more exotic locations like IPFS distributed filesystems will work. You can even put your mark-up onto sites like PasteBin or PiratePad. Then just load the URL in our viewer by entering the URL into the navigation bar, and you can link directly to it, share on social media, or embed our viewer directly into other webpages, blog posts, or articles.

See also Using a specific version of JanusWeb below.

Pull our scripts into your page

Using the above method, all of your links would go through our servers. If you'd prefer to link to your own servers, you can pull our JS into your page and use JanusWeb as a scriptable client via its API. This looks something like this:

<html>
  <head>
    <title>My JanusVR Room</title>
  </head>
  <body>
    <script src="https://web.janusvr.com/janusweb.js"></script>
    <janus-viewer>
      <FireBoxRoom>
        <Room use_local_asset="room1">
          <Object id="cube" pos="0 1 5" />
          <Text col="1 0 0" pos="0 2 4">My First Room</Text>
        </Room>
      </FireBoxRoom>
    </janus-viewer>
  </body>
</html>

The elation.janusweb.init() function can take a number of arguments, and returns a promise which receives an instance of the client. This client reference can be controlled via its API. See the sections on Arguments and Scripting below.

See also Using a specific version of JanusWeb below.

Install from ZIPs

(TODO - we will start shipping zip builds of JanusWeb once we release v1.0)

Install from NPM

(TODO - we will start shipping official NPM packages of JanusWeb once we release v1.0)

npm install janusweb

Build from source

If you'd like to build JanusWeb from source, you can check it out from Github and build using the following steps:

$ git clone https://github.com/jbaicoianu/janusweb
$ cd janusweb
$ npm install --only=prod
$ npm run build

This will give you a full build of the latest verson of JanusWeb in your build/ directory. You can then modify build/index.html however you see fit, and host it as suggested above.

Arguments

JanusWeb supports several arguments at initialization time to control how it behaves.

Name Description Default
autoload Load URL by default or wait for script true
crosshair Show player crosshair true
homepage Default page to go to when user presses home button https://web.janusvr.com/
networking Enable networking true
picking Enable mouse interactions true
resolution If specified, restrict the renderer to the specified size (none)
server Presence server to connect to wss://presence.janusvr.com:5567/
shownavigation Control visibility of navigation bar true
showchat Control visibility of chat true
stats Enable render performance stats false
url Default page to load (homepage)
urltemplate Optional template for generating URLs (none)
useWebVRPolyfill Enable WebVR polyfill for mobile phone compatibility true
usevoip Enable or disable VOIP functionality (NOTE - disabled pending browser support for Opus via WebAudio) false

Scripting

After initializing the client, elation.janusweb.init() returns a Promise which provides a reference to the client. You can programatically control this client to do all sorts of things. For instance, we can make the client load a URL, wait for the world and all of its assets to load, and then take a screenshot of the world after a specified delay:

var pageinfo = elation.utils.parseURL(document.location.href),
    urlargs = pageinfo.args || {},
    hashargs = pageinfo.hash || {};

var url = elation.utils.any(hashargs.url, urlargs.url, 'http://www.janusvr.com/index.html'),
    delay = elation.utils.any(hashargs.delay, urlargs.delay, 1000);

elation.janusweb.init({
  url: url,
  resolution: '1920x1080',
  showchat: false,
  shownavigation: false
}).then(function(client) {
  elation.events.add(client.janusweb.currentroom, 'room_load_complete', function() {
    setTimeout(function() {
      client.hideMenu();
      client.screenshot().then(function(imagefile) {
        // upload imagefile somewhere via XHR
        console.log('Screenshot complete!');
      });
    }, delay);
  });
});

Many other aspects of the JanusWeb client can be controlled this way as well. Our users are always thinking up new and inventive ways of using the JanusWeb client. Embed it in your blog posts, use it to render 3D content behind your 2d webpage, put a virtual security camera in your world and view a live stream of the virtual world from any web browser. Control the virtual world via a web interface. This is your scriptable live portal into the metaverse, to do with whatever you please. The possibilities are endless!

You can even run JanusWeb in NodeJS for headless server-side operations. Use it to write a bot that wanders the metaverse, or run your game logic and physics on a server to have one authoritative source of state for your world. If this sounds interesting to you let us know, we will be more than happy to help you through this (it's all very experimental right now!)

Using a specific version of JanusWeb

If you need to load a specific version of JanusWeb, all previous versions are stores on the same server, and can be accessed by construction a URL of the form https://web.janusvr.com/<version>/. This is useful if you have a room which you know works with a specific version, which relies on features which have since been deprecated or changed, or to determine whether bugs have been introduced.

JanusWeb versions follow the Semantic Versioning 2.0.0 spec, which follows the format <major>.<minor>.<patch> - for example, at the time of writing (March 2017) the current stable release is 1.0.15. So if you want to view this version, you could go to https://web.janusvr.com/1.0.15/ and if you wanted to pull this specific version into your page, you could do so with <script src="https://web.janusvr.com/1.0.15/janusweb.js"></script>. We also support aliases for the most current version - for instance, https://web.janusvr.com/1.0/ will always refer to the most recent 1.0 release, https://web.janusvr.com/0.9/ the final 0.9 release, etc.

Contributing

JanusWeb is open source, and we welcome any contributions! Please do report bugs using GitHub Issues, and all pull requests will be considered. We could especially use help with documentation!

Who is responsible for this?

JanusWeb was created by James Baicoianu, and is now an official open source project of JanusVR, Inc. The JanusWeb software and its API are published under the MIT license, and are free to use for whatever uses you can think of. If you build something cool, let us know!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].