Welcome to the SimMix Project Webpage!

ABOUT SIMMIX

Goals and Motivation

SimMix is a collaborative 3D modeling software for virtual reality. It provides an intuitive interface for 3D modeling where the user easily gains an understanding of the entire three-dimensional object being modeled. It also allows multiple users to work on the same object and see each other's changes in real time, making collaboration effortless.

SimMix aims to remove some of the everyday frustrations of expert modelers, as well as to provide an intuitive entrypoint for novice modelers. Virtual reality is a natural choice for displaying three-dimensional objects and makes modeling as natural as drawing in 3D. The collaboration feature lends itself well both to teams of experts and to teachers with students.

In the scope of this project, we have developed a prototype 3D modeling tool with a few select tools. However, the project is open-source, allowing anyone to build on top of this tool to create a full-fledged 3D modeling program with all the tools an expert modeler might want.

Technologies

Unity
SteamVR
HTC Vive
GitHub

Contributions

The main graphics contribution of our project is the custom mesh system. We created a custom mesh data structure allowing us to conduct low-level operations in real time. We then added bindings from our custom data structure to Unity’s Mesh Structure. Operators include scale, translate and rotate as well as more advanced mesh modification operators such as extrude, inset and duplicate. In addition, the user may change the material of the objects. These steps all required an understanding of low-level graphics concepts and geometry.

The interaction contributions of our project includes a new interface for 3D modeling, relying on hand controllers and movements rather than a mouse and keyboard as in traditional modeling software. We have considered and tested all aspects of the interface, from using a tool, to switching between tools, to navigating in the space. Some tools have additional novel interaction methods, significantly the material picker. Throughout the project, we have taken collaboration into consideration, thinking not only about how a single user might prefer a feature, but also how it will appear to their teammates.

Challenges and Obstacles

The biggest obstacle we faced during the project was the networking. We couldn’t use the built-in Unity networking tools out of the box as we had custom data structures and classes. We had to heavily modify the tools just to show something over the network.

The second obstacle was designing the interaction methods of the tools. It was very different from the programming challenges we are used to facing. We couldn’t just write some code and be done with it. It was an iterative process with lots of user feedback with a foundation of known methods.

A more practical challenge we faced was the availability of VR hardware. Most of us don’t have VR headsets at home, which forced us to visit the VIC-studio to test our implementations. At first, this was not a problem because most code could be tested on a monitor but as the focus changed from graphics to interaction this became a bigger problem.

Related Work

- Blender:

- Communication Behavior in Embodied Virtual Reality
Harrison Jesse Smith, and Michael Neff
2018

- UI design for high learning performance in VR-based architectural applications
Chengyu Sun, Wei Hu, Diqiong Xu
2019

Lessons learned

The biggest lesson we had to learn was to prioritize among tasks. In a creation tool like this one, there are countless features that would be great to have, and many that we even considered essential. However, after an early demo we found that users much preferred a small number of well-polished tools, and rarely requested additional ones. We had to narrow down our mile-long list of features to just a handful, and focus on making those work really well.

We also learned that networking is something that should be built into the application from the very beginning. Any data structure and program flow should be designed with networking in mind. Adding networking at a later stage in the development made this already difficult task even harder.

ABOUT US

Natalie Axelsson

I am the 3D-modeling expert. Together with Rodrigo, I have implemented the 3D-modeling backend, including all mesh modification operations. Our work includes designing a data structure to represent 3D-meshes, adding functions to modify them, and converting them into Unity meshes for rendering.

Rodrigo Retuerto

My main role in this project was working with mesh creation and modification algorithms together with Natalie. I worked with this in both an abstract and practical capacity. For example in the implementation of the mathematical formulas and data structures required for mesh modification tools such as extrude, subdivide and scale. But also with the iterative method of how the tools should be used in VR to make them feel natural and intuitive.

Alvaro Ortega Mattsson

I am the project leader and the one responsible for the networking implementations of the software. My job is to make sure collaboration between two users works seamlessly and effectively. I also developed the first version of the circle menu and the additional spectator camera.

Tom Axblad

I am the expert when it comes to VR, so I am responsible for most VR related code and work. However, my responsibilities in this project are a bit wider than just the VR-implementation. Some other implementations I did was for example:
The code foundation, function states, tools system, input systems, finalization of the menu, global variable system, and some of the tools and functions, such as; user scaling tool, and teleport function.
I also made the website you are looking at right now!

MEDIA

MAKING OF

DEMO REEL

In this video, Tom shows some of the core functionality that exists right now in the SimMix project. Tools such as translate, rotate, copy, inset, and extrude can be seen. Another feature displayed is the combination of user scaling and translation, which lets you take an object up into the sky!

FEEDBACK