VR Haptics Platform for Rapid Prototyping
Software: Unity (C#), Meta VR/XR Interaction SDK, Rhino/Grasshopper (C#), Node.js (JS)
Hardware: Meta Quest 3, Nova Senseglove 2
Description: Research project to develop an immersive virtual reality platform for lattice‑structured products for additive manufacturing that allows users to rapidly prototype products while able to receive visual and haptic feedback.
Overview: This research project proposes to develop an immersive platform specifically through a pipeline between Rhino Grasshopper and Unity for lattice‑structured products that unifies the following capabilities:
Main Innovations: Initially, the Unity Asset Transformer Toolkit (formerly known as Pixyz) was used to import complex models. One advantage of the toolkit was that it was able to decimate and optimize complex models. But, it was quickly determined that decimating or reducing the model complexity took significantly more time than necessary for the fast iteration that the platform required. It was found that this method of importing was not realistic for real time loading, especially coupled with Grasshopper’s computation time of up to several minutes. Normally, STL files are the easiest way to export Grasshopper models. However, they are very complex, large in file size, and often corrupted, since they brute force storing millions of repeated triangle vertices. Thus, it was necessary to convert the model to FBX or GLTF binary for fasted loading, but took additional time within Grasshopper for conversion. Thus, building upon research of Junichiro Horikawa’s Grasshopper to Unity pipeline, a pipeline using several C# scripts and a Node.js server was made for a communication loop of data transfer between Unity and Grasshopper, which will be discussed in the next section. This allowed mesh loading to be practically instantaneous, which was infinitely better than all other methods previously tried such as Unity’s toolkit. This meant that Grasshopper was the only bottleneck in the whole platform.
Platform Design: The main design process needed was for the data pipeline, and the platform’s interaction. To transport data, the system implements a bidirectional data loop between Unity and Grasshopper to enable interactive parametric modeling. User interactions in Unity, such as modifying lattice size parameters, trigger a script that writes the new numbers to a JSON file, causing the parametric definition to be recomputed in Grasshopper after another script reads the JSON file. The updated geometry is then converted into a triangulated mesh, serialized into a compact binary format containing vertex and triangle data, and written to disk. Unity continuously monitors this output using a server, and upon any changes, it deserializes the mesh, and replaces the existing geometry in the VR scene with the updated model. This workflow allows complex Grasshopper definitions to be integrated into an immersive design environment while maintaining responsive visualization. A flowchart describing the process is to the right.
Credits: Jason Chen, supervised by Henrik Kruse (DAP RWTH Aachen)
Github: VR Github