An hour and a half ago, the submission window for Leap Motion’s #3djam closed.
I’ve named my entry PacketVR and it is one of the 188 entries. Here is the full list of entries, and this is my entry specifically: http://jameshagerman.itch.io/packetvr
PacketVR is my answer to the need for useable tools in VR. At its core, it is an SSH client with a custom terminal emulator that supports the bare minimum of the VT100/xterm standard ANSI control codes. I can load up multiple terminal windows, SSH into multiple different machines, edit files, run terminal based applications, compile code, and anything else I would usually be able to do inside of an SSH session.
But that functionality alone isn’t all that beneficial. After all, that doesn’t make it any better than a 2D terminal.
PacketVR’s real talent lies in it’s extended ANSI control code set. This is effectively a text based API that allows simple, ordinary terminal applications to programmatically populate the VR world around you with objects!
The API is simple to understand and easy to implement. If you can write a program that writes “Hello World” to the console, you can write applications for PacketVR. And the best part is, because you’ve got a full terminal, you can edit your PacketVR console programs INSIDE the existing VR environment.
Now, the rest of the VR/AR community is calling this sort of thing “live coding” and I feel like that catch phrase is absolutely absurd!
We didn’t dream of VR being a one-off spherical video, playing on a Google Cardboard, and hosted on YouTube. We dreamed of VR being a “Virtual Reality”! If you haven’t figured it out yet, “Reality” is the word everyone is forgetting about in the industry right now. We need VR to useful. If VR is not useful, IT IS NOT VR AT ALL.
There are at least 2 other submissions to the Leap Motion #3dJam that have a similar vision. One is vrwm by lhl: http://randomfoo.itch.io/vrwm and another is Lucidigital Virtual Workspace by Joshua Corvinus: http://jcorvinus.itch.io/lucidigital-virtual-workspace
Both of these projects have their pros and cons, and I would say the same is true about PacketVR. However, the underlying goal has been gaining the steam that really is required to move this idea into the limelight.
lhl is keeping track of ideas in this vein and has labeled them VR “Workspace Environments”. He has categorized many of these types of projects under the vrwm GitHub Project here: https://github.com/lhl/vrwm/wiki/Other-Projects
lhl and I have already spoken about combining efforts on a future project in this area and have similar opinions about keeping the work Open and free. He released vrwm under the MIT License and, at this point, though I have not officially released PacketVR’s source code, I plan on doing so under the MIT License as well. The only reason I have not yet released the source code is so that I can implement a workable API versioning scheme so that the PacketVR environment can stay sane as I add new API calls and programs.
We have also already spoken about our shared interest in focusing on the Linux community for this type of work. Currently, we are limited by the existence of solid VR SDK’s for Linux (since Oculus has dropped support for Linux at this point and for the foreseeable future, OSVR is still getting off the ground, and the HTC Vive is still, mostly, unannounced in regards to Linux support).
Furthermore, all three of us, lhl, Joshua, and I, wrote our respective projects in the Unity game engine due to the need to not reinvent the wheel by building out own individual engines. lhl and I have the shared dream of moving away from Unity if the opportunity comes up.
But, for now, if you’re interested in these ideas, I HIGHLY suggest checking out these three projects as well as the others lhl has listed on his GitHub wiki.
You can download PacketVR from: http://jameshagerman.itch.io/packetvr
And you can checkout the example Python scripts to interact with the API here: https://bitbucket.org/JamesHagerman/packetvr-apps
I will post again once I release the source for PacketVR itself. Until then, have fun!
PacketVR drawing.py script dropping dynamic cubes into the world:
PacketVR drawing.py more cubes:
PacketVR terminal window, cubes loaded by a script, and an .obj file with it’s .mtl texture loaded from an HTTP URL:
