People who prefer to transition to a healthy lifestyle are often presented with tough choices when it comes to picking up fitness activities. The year 2020 has presented a series of challenges, especially when it comes to outdoor activities as well as trying out fitness solutions outside of the home. While Yoga is something that could be learned and practiced in the personal space at home, the fear of learning the techniques wrong is a big letdown for a lot of beginners. InstaYoga tries to solve the problem by bringing a virtual yoga instructor in your living space.

What it does

InstaYoga is a World AR experience that helps users learn beginner yoga poses with the help of a Virtual Yoga Trainer. The trainer demonstrates various yoga poses that can be viewed from different angles, thereby improving the user's understanding of the posture to be maintained during each of the poses. Tapping on the screen allows the user to switch to a different pose. In addition to the learning experience, users can personalize the experience by customizing the outfit of the trainer allowing them to capture and share videos of them training along-side the virtual trainer.

How I built it

Modeling, Rigging, and Posing of the Virtual Trainer was done using Blender. Texturing was done using Substance Painter. The final animation was exported as FBX and brought in to Spark AR. Since its a World AR Effect, I started with a Plane Tracker. The first feature I added was to implement Tap To Change the Yoga pose. This was achieved using Screen Tap patch that would trigger a counter which would allow me to switch between animation actions in the FBX file using an Option Picker. To improve the visual impact, a particle emitter was added to the Yoga Mat on which the Trainer performs the different poses. An Animation patch was used to turn on the emitter by changing its birthrate from zero to an acceptable number. As I didn't want the particle effects to last beyond a few seconds, the emitter was turned off using a Delay patch that would trigger an Option Switch to turn off the same. Outfit selection was added using Picker UI as it felt like the most ideal place to give more choices to the user to personalize their experience. Since its a world effect, the ability to move and rotate the scene was added to assist users to position the effect in their living room better. Additional props like a spare Yoga Mat and a water bottle were added from the Asset Library(Sketchfab). 3D Text, which is a new feature introduced in the latest version of SparkAR was added, to inform the user about the name of the pose they were viewing. Finally, ambient music and additional feedback sounds were added when the user taps on the screen.

Challenges I ran into

Texture swapping based on picker UI selection was tricky as I could not find built-in patches to accomplish that(It's possible that I missed one that exists already). I had to get around the problem by creating a texture sequence and use an option picker to pick the frame corresponding to the user selection.

Accomplishments that I'm proud of

This was the first time that I built a character from scratch, from Modelling all the way through posing and bringing it inside Spark AR. While there was an option to download and use models, I thought of taking this as a challenge to self evaluate how much effort it takes to build an effect from ideation to publishing. Overall I feel I gave my best considering the pockets of time I got during my weekends.

What I learned

This is the first time I tried to finish a World AR effect. While I had practiced some of the techniques based on the developer documentation, this was the first time I tried to build something with a set target in mind. During the course of building this, I got more comfortable with bringing in skeletal animation as well as using the built-in patches along the way

What's next for Insta Yoga

The immediate updates that I would be working on would be to add animation for pose transition instead of snapping to the pose. While the current version includes the features I had initially thought of, adding more poses and more ways to personalize the experience would be something that would improve engagement. The current trainer lacks facial features, adding those would definitely improve the overall experience.

Built With

Share this project: