Hello @vedhant. I am developing p5.xr now. I want to finish up a few more basic features and organize the code before I make it public. Expect the initial relase of the code to be sometime in April but likely not before the GSOC proposal deadline. That said, I can try to shed a little light before then.
There are a ton of different features that this library could potentially support but the initial release will likely only have mobile VR and (hopefully) AR with ARCore/ARKit. The current library allows a user to simply add:
function preload() {
createVRCanvas();
}
to any WebGL p5 sketch and the sketch automatically creates a button for a user gesture to enter into a Google Cardboard-style VR experience that includes all of the elements from the rest of their sketch. This should be translated relatively easily to room-scale for computers with connected headsets, but that probably wonât exist in the alpha initial release.
As noted earlier, the goal is to have functioning AR sketches before initial release. This is what I am working on now but there is still a certain amount of uncertainty because of the current browser support for AR. Worst case scenario this will only be available to users that are able to load their sketches in Chrome Canary.
The current code base is modeled after the p5 repo as much as possible. All of the public methods such as createVRCanvas
are implemented as added prototypes added to p5. The development environment uses node/npm. The only major difference is that the code base uses ES6 standards, but p5 is transitioning there anyways.
After that initial release a lot of testing, stabilizing, and planning for the next feature set will need to happen. The WebXR API is also in really heavy development, and there will potentially be changes that need to be kept up with.
So the GSOC project really is to help plan the continued development of the library. Since the student would be jumping in on library in its infancy stage there would be a lot of room for design contribution. That said, there are also more straightforward tasks that we know will need to be completed. These include:
- Setting up a unit test solution (currently I am relying on manual tests)
- Develop strategies for adjusting performance to be device-specific (for example: scaling the framebuffer provided by GL)
- Introduces interactivity via gamepads (this would likely require access to a desktop VR headset such as Oculus or Vive)
- Create a 2D in VR option. Perhaps a plane situated in 3D with a 2D canvas being drawn on it?
- Gaze tracker implementation for controller-free interactivity (perhaps using the XRRay interface)
- Positional audio
- Interface for setting and releasing AR anchors
This is all to say that there will be a large number of potential features to work on. The student doesnât need to have a full understanding of the WebXR API going into it but the hope would be that some comfort and familiarity would be established early on in the summer. A decent understanding of the RendererGL implementation in p5 would also be helpful, but this is also something that can be learned as the summer progresses.
When writing your proposal I would take into consideration that a huge part of the summer would be devoted to stabilization and testing. This would also include project management such as helping with the work of overseeing and helping to respond to bugs. I know this can be a bit tricky to narrow down since the project proposal should be specific so that success can be objectively evaluated, so I would say that any proposal should include at least one major feature that you hope to implement. One from the list above or another feature of your own choosing. This feature should be something that you think is integral to the success of the library, and it should be feasible for the time frame. You should also include in your proposal that you will be helping with the initial stabilization phase. This is where the project management, testing, and debugging aspect of the project comes into play.
So to summarize, a successful proposal should:
- Name 1-2 major feature(s) that would be added over the course of the summer with help/guidance
- Explain how the above feature(s) would contribute to the goal of creating a simple and accessible VR/AR library
- Express a clear understanding of how the above feature implementation would occur alongside more general stabilization and testing
- Outline your demonstrated proficiency in the applicable knowledge sets (VR/AR, computer graphics, linear algebra, etc), or indicate a willingness to learn along with a plan for how to do so.
Hopefully this help! Sorry that I canât just show you the library right now but it is very near to a early-alpha stage and I want to get it there first so that the starting point is somewhat orderly.