Virtual Reality allows users to interact with objects and models much more intuitively than seeing a 2D representation on a screen. Our program utilizes that intuition to allow animators and content-creators greater freedom and control in their scenes.
What it does
AnimateVR allows a user to import a character model and manipulate it in 3D. It has a record and replay function that allows a user to record the model's movements and replay it both forwards and backwards. AnimateVR allows rerecording over timelines as well as recording object movements along the same timeline concurrently, letting the user create complex character motions using multiple limbs. Our program also features joint and rigidbody locks that allow the user to lock the rotation and movement of certain joints. Additionally, the user can resize the character model to correspond to their own body for first-person recording of movements.
How we built it
We used Unity and the Steam VRTK to build an interaction model and recording interface. We wrote custom scripts for functions we needed such as restricting the ragdoll physics engine and locking joints and objects. Extensive testing was done using the HTC Vive VR system to ensure that all the user interactions were valid and produced the desired results.
Challenges we ran into
Weird rigidbody behaviors from the Unity physics engine, manually having to put joints in imported models, deciding how to record and replay movements, configuring interaction options (fixed joints, concurrent recording)
Accomplishments that we're proud of
We have both linear time recording and concurrent modelling. That means we can both record a linear segment of motion AND 'go back in time' and move a different part of the model, resulting in complex, multiple object movements at the same time that wouldn't be possible normally with 2 hands/controllers (i.e. both legs and both arms moving at the same time). We are also able to lock joints and objects to the user's necessity. Everything is done in VR without the need for a keyboard and mouse. Complete joint freedom to manipulate the model as needed gives the user total control.
What we learned
Utilizing the VRTK to listen for button presses, using Unity's physics engine to manipulate objects through scripting, user interface in VR to allow for varied commands while using simplistic controller layout, making a record function with corresponding data structure and being able to rewind, rewrite, and resize as necessary.
What's next for AnimateVR
Functions for automatic import of models with rigidbody and joint interfaces, transitioning between multiple models in different scenes, exporting animations for use in other programs, importing existing animations and editing them, multi-user interface to allow animators from across the world to collaborate on the same projects in the same VR space.