With the rapid growth of 3D development applications such as virtual reality (VR) and augmented reality (AR), there is a huge need for tools to help streamline the iterative design process with remote teams. Project and asset files for 3D applications such as Unity can be messy, and we wanted to allow the 3D designer to connect directly with the developer.

What it does

We built a file upload web application where a 3D designer can drop files which get piped and loaded directly into a VR Unity scene on the computer of the reviewing party, enabling the reviewer to manipulate and inspect the model directly using his own hands (or the VR tracked controllers, rather). The web application also renders the models, which are comprised of .obj, .mtl, and image files, and displays them within the webpage.

How we built it

The 3D designer interfaces with an HTML5/JavaScript web application to upload 3D files and their mapped textures to a RESTful server interface. Uploaded files are streamed over the web socket transfer protocol to a Unity3D program (C#). This program de-serializes the byte-stream and generates Unity3D game objects by programmatically generating 3D meshes and mapping the corresponding textures at run-time.

Challenges we ran into

When building the web socket transfer, we encountered incompatibilities with various web socket libraries (C# on the VR client, javascript on the backend). To deal with this, we had to throw away the networking abstraction layers and deal with the web socket directly. We also found a lack of consistent texture mapping formats and a lack of consistency between 3D file formats in general. On the side of Unity, we found there to be a total lack of native support for importing 3D assets at runtime.

Accomplishments that we're proud of

Upon completion, we are impressed by how seamless the interface is. Files are easily selected for upload and are almost instantaneously loaded into the Unity3D project's scene on the remote machine. We are also proud to have successfully tied together 3 very different pieces of software: a web application, a javascript server, and a Unity3D program.

What's next for DropView -- View, Edit, Repeat

This application concept has a lot of potential for growth. It should include:

  • User authentication
  • Support for team collaboration
  • Session invites through email
  • Bidirectional object interaction
  • Built-in voice chat
  • Support for more 3D file formats and VR platforms
Share this project: