Giter Club home page Giter Club logo

rosvr-client's Introduction

Redhat Open Virtual Reality - Client

ROVR(Redhat Open Virtual Reality) enables creating data generated, interactable, AR visualizations πŸ–²πŸ“Š
Build Status

Getting Started

To get started simply clone the repository and run:

yarn install
yarn start-server

and you are up and going!

Installing

We recommend working against the webpack development server by running:

yarn start-server

Note: The development server will watch for changes and hot-reload as required ✨

But if you want to statically build the code for development purposes, you can manually run:

yarn build

which will generate the requested /dist folder

Running the tests

In order to run the tests simply run:

yarn test

Tests Structure

Each component/entity is joined with a \*.test.js file which at least passes a smoke test on it's generation function and additionally verifies custom functionality it performs(component life-cycle functions)

For example, basicEntities.js holds are most basic entities(surprisingly😏)

.
β”œβ”€β”€ basicEntities.js
└── basicEntities.test.js

Thus basicEntities.test.js will hold a test suite for the entire file and sub-suite for each entity

import * as BasicEntities from './basicEntities.js'

describe('Basic Entities Suite', () => {
	describe('scene tests', () => {
		it('scene smoke test', () => {
			expect(BasicEntities.scene()).toBeDefined()
		})
	})
})

Tests Configuration

We are using Karma as our test runner and Jasmine as our test suite and assertion platform. By running yarn test, all *.test.js files will be ran on PhantomJS and results reported to the command-line

yarn test v0.27.5
$ karma start
clean-webpack-plugin: ./dist has been removed.
25 07 2017 23:42:27.026:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
25 07 2017 23:42:27.034:INFO [launcher]: Starting browser PhantomJS

.
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 SUCCESS (0.003 secs / 0.002 secs)
Done in 11.46s.

Code Structure

The code is structured such that components and entities are loaded from separate folders as designed by ECS and singularly loaded into the entry-point, procedurally loaded onto the DOM

.
β”œβ”€β”€ src - source files
β”‚Β Β  β”œβ”€β”€ components - A-Frame components
β”‚Β Β  β”œβ”€β”€ entities - A-Frame entities
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ basicEntities.js
β”‚Β Β  β”‚Β Β  └── basicEntities.test.js
β”‚Β Β  β”œβ”€β”€ index.ejs - autogeneration view template
β”‚Β Β  └── index.js - entry point
β”œβ”€β”€ ... README and licences
└── ... configuration files

Deployment

In order to deploy the project to production simply run:

yarn build-production

which will create a /dist folder with uglified, hot-replaced, concated and minified, production-ready project! 🏭

Built With

  • A-Frame - 3D assets visualization
  • AR.js - Augmented reality marker integration
  • LeapJS - LeapMotion controller API
  • Webpack - Module bundler and transpiler
  • Karma - Test runner platform
  • Jasmine - Test suite and assertion engine

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. Current version is

Authors

License

This project is licensed under the GPL-3.0 License - see the LICENSE.md file for details

rosvr-client's People

Contributors

abraverm avatar shakedlokits avatar xfencer avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rosvr-client's Issues

Integration with react

we should have an integration with react js in order to use redux for persistent server.

motivation:

  • persistent server.
  • object state.
  • easier files handling (config files).
  • api flexibility.

JSON to 3D entity

The client will receive JSON documents with information about the entities and it should present in 3D and update the world the user see.

"Can't access user media :()"

Firefox is returning the error "Can't access user media :()" when access http://localhost:8080/ after yarn run start-server.

Abstraction layer for hardware to action

Layer that translate any device input into actions, for example:
keyboard arrow right -> right
leapmotion gesture X -> right
Kinect body movement א -> right

Configurable 3D definitions for the received entities

After the client received entities (JSON format), it will add 3D meaning to them.
For example:

{
  "type": "file",
  "size": 231235123,
  "owner":  "abraverm"
}

Adding configuration, (AKA theme) will return:

{
  "type": "file",
  "size":  231235123,
  "owner":  "abraverm",
  "3d_size": "scale",
  "3d_type": "cube",
  "3d_owner": {
    "abraverm": "color_blue",
    "root": "color_red",
    "default": "color_cached_or_new"
  }
}

REST API - Action Handler

This ticket involves managing actions on client sent back to the target system using REST API. Hence this issue involves designing a modular, extensible REST API including webhooks. More information about REST can be found here.

Gestures with LeapMotion

Translate hand movements to unique gestures
Minimal set of actions should handle human basic actions: push, rotate.
Advanced set of actions: SQL commands

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.