Git Product home page Git Product logo

plumcantaloupe / circlesxr Goto Github PK

View Code? Open in Web Editor NEW
15.0 8.0 31.0 1.26 GB

A work-in-progress framework that aims to bring together multi-user XR experiences in learning using WebXR.

Home Page: https://www.anthony-scavarelli.com/portfolio/circles-webvr-education-platform/

License: MIT License

JavaScript 73.01% HTML 23.90% Pug 1.61% SCSS 1.01% CSS 0.47%
virtual-reality multi-user multi-platform webxr experiential-learning socialvr vr educational-technology

circlesxr's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

circlesxr's Issues

Create "Shoot and Drop" world

This world will contain the 'shoot and drop' experiment, where an object is dropped at the same time as an identical object is ejected horizontally (the objects hit the ground at the same time despite their different initial velocities).

This world can contain the experiment itself, as well as a portal back to the physics hub.

Mirrors are broken when using VR mode on an Oculus Quest

It appears that the recent standalone browsers (Oculus Browser and Firefox Reality) will only properly report world transforms ( aframevr/aframe#4626 ), and allow parenting to the camera node ( aframevr/aframe#4629 ), when in 2D mode, and not on immersive "VR" mode when using real-time mirrors. This appears to be due to creating a virtual camera for additional renders.

  • Need to test with a the recent pure three.js implementation from here ( mrdoob/three.js#19666 ) to determine if the A-Frame layer is responsible.
  • Need to explore why shadow-mapping virtual cams do not appear to result in a similar issue.

Move mouth with basic audio FFT

Should have someway to show someone is talking. Mozilla hubs uses a basic FFT to scale the head (last I checked).

  • Should we have an icon for when sound is on?
  • Can we move the mouth and.or head to signify talking
  • Extra: Maybe have basic blinks on eyes one in a while?

Sporadic error within A-Frame's text component

It appears that once in a while a "this.attributes. ..." error in the A-Frame text component. Often this only happens on the initial load and any reloads afterwards do not show the error. having trouble reproducing but want to note it here.

It appears to have popped up after making geometry that includes a text component to make buttons.

Capture

Inspect Objects Broken

It appears the most recent merge of costume switching objects broke other inspect objects (e.g. picking up a drill in the WIT VE).

Make physics objects networked

Each physics object in the experiments needs to be networked so that it is visible across all connected clients.

This will require designating one client (possibly the one who initiates the experiment) as the 'owner' of the objects. The owner could then send the position and rotation of each object to other clients.

Create "Shoot the monkey" world

This world contains the 'shoot the monkey' experiment, which demonstrates that a bullet shot at a monkey who is dropped at the same time of the shot is always hit if the bullet is aimed directly at the monkey.

The world can contain the experiment itself as well as a portal back to the physics hub.

See design doc here

Need a way to avoid duplicate Artefacts/Objects in scenes

Some thoughts (some are better than others):

  • Only have one user in charge of creating the objects. Perhaps a flags that generates them in a component when a "teacher" user enters. This could be problematic if more than one teacher enters however ...
  • Some wacky solution whereby we check if artefacts are already in. If not we create them. Otherwise we don't.
  • Come up with some sort of server-side solution that could be a start toward creating persistent layers whereby objects are mapped in the scene and saved to a database that is called and populates the scene during login. This is something we will need to eventually figure out to allow the creation of personal and shared spaces that will remain in a modified state even after logout.

Need to clean up Circles' components

Right now many of the components do not follow strict coding patterns in making sure they can be attached and removed without leaving a eventListeners lying around. Probably some stray comments and unused code lying around too ...

Fix scale of objects

Objects are currently much larger than anticipated.
.objs should be correctly scaled so that no scaling needs to be done in AFrame

image

Janus rooms not being emptied on disconnection

Currently, when using the Janus-gateway server and naf-janus-adapter rooms are not being emptied on disconnection and thus get full after a while. This results in no new connection being accepted and the janus server needing to be restart.

Create ability to swap objects

  • Buttons to swap objects
  • All objects listed in object array with params
  • Automatically adjust the hands so that both objects are vertically aligned at the bottom

Need to update Documentation

With some API simplification Circles readme needs some updating to highlight any changes.

Additionally, perhaps it is time to now consider having. docs folders with .md files for each component describing their purpose i.e., like the A-frame library does ...

Introduce a way to toggle "magic-window" on/off on mobile devices

Larger tablets can be tiring to hold up, but using the device to look around can be fun and practical. A possible solution might be to introduce a basic button that lets you switch between magic-window mode and non-magic-window mode (can only scroll left/right on iPad i.e., same as mode when we do not allow access to sensors).

We may even want to consider eating a new look-controls that allows users to scroll around left/right and up/down.

Create "Physics hub world"

The physics hub world will be a central hub with paths (portals) to the three experiments.

As guided by the initial concepts and ideas, this world can be some sort of a lab representing the nature of the physics experiments

See design doc here

Add indicator when objects hit the ground

The indicator will consist of a cube (or shape) that is coloured depending on the state of the experiment:

  • White: idle
  • Red: experiment running
  • Green: object has hit the ground

There will also be a timer on the indicator which will show how much time it took for the object to hit the ground. The timer will elapse as the experiment runs, stopping once the object hits the ground.

There will be two indicators in the scene: one for each object.

Create an art tool / whiteboard / messages

We need a way to allow creativity and allow users to create messages and/or art to be placed in worlds, while also being persistent i.e., leaving messages for others to find. Related to #88

Create "Free Fall" world

This world will contain the 'free-fall' experiment, where two different objects (of different mass) are dropped from the same height.

This world can contain the experiment itself and a portal back to the physics hub

See design doc here

  • Free falling objects
  • Drop and reset buttons
  • Ability to change gravity strength

Explore persistent layers and object-sharing (again)

Some questions to consider:

  • how can users place objects and have them remain where they were left after leaving and re-entering world
  • which worlds should support this ability (only the campfire maybe?)
  • Can there be levels of shared ownership with persistent objects i.e., some are only visible to the owner but can be flagged to be also seen by others?

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.