Back in May Oculus quest was released, it is a standalone device that allows you to use VR without needing to use any PC or wires. Until then you needed a high end computer to run games or experiences on VR so developers and creators didn't had to reduce as much when creating content or avatars for VRChat.
During 2018 Q4 Polygonal Mind's team made a challenge of making 100 characters in 100 days, you can check more about it here.
Me and my friend Alejandro Peño joined the studio as interns and were tasked with a project where we had to prepare, optimise and upload over 100 characters to VRChat for the Oculus Quest.
It was challenging workload but through consistent job, we were able to transform this characters into optimised avatars for VRChat.
Some characters have proven to be more difficult than others, so I will make sure to explain you what problems I faced when fixing non optimal characters and how I managed to solved them. Even though we used Maya in the studio, any of this knowledge is applicable to any 3D modelling software.
So I'll recap a series of problem I faced when setting them for VRChat.
Lets start optimizing
VRChat team provided the following rules to follow when it comes for Quest avatars:
Step 1 - Reducing Textures
This might be the easiest of all steps.
All the characters used 2048x2048 textures. So we had to reduce them to the desirable size.
In Photoshop, we created a new project with 1024x1024 pixel resolution. And then we imported all textures. Once they were all in and adjusted to the box, we exported each layer as an independent PNG.
Since they already had the appropriated name, we had 100 textures ready to go.
Step 2 - Polycount reduction
Most of the models had the right poly count, but some others didn't.
Franky's head is a clear example, it had 12572 triangles.
Here are some rules we follow when it comes to reducing polygons:
... wait... What if the maps seams are non optimal?
What can you do when there are map seams literally everywhere? That's what happened to the 50th character, Samuela.
We duplicated the model, and started deleting edges without thinking too much about the seams or texture, since we were going to make a new UV layout once the model is reduced.
Once in Zbrush with every mesh and the old texture imported, we took the old Samuela model, subdivided it and made the texture to be poly paint.
Beware, Zbrush applies color to the model's vertex, so you will need to subdivide your model until it reach a million of points so you can keep as much detail as possible of the texture.
Time for to project the high model polypaint into the new one by subdividing the number of polys of the new to match the old one and now simply project the old Samuela to the new one. Repeat this part for every subdivision you have until you get enough texture detail on the new model.
Note that projection might not be precise and you might have to improve the texture in Photoshop.
Adding mouth and eyes into an existing model for Visemes
This part is completely optional. But it really gives your characters life when they are in game.
For a quick turnaround what we did was:
For the rig, we used Mixamo. Mixamo is a web page that rigs and skins automatically given some variables like the position of the wrists, elbows, knees, chin and groin. For the most part, Mixamo did a pretty good job, specially for all the humanoid characters. But for the not-so-human, you had to edit the skin to have a great result. How to fix those is a topic for a different dayone .
We'll talk about this deeper in a future post.
Like many of you reading this we firstly uploaded the characters to VRChat thinking only for PC users so all the materials were left with the Unity's default shader, but Quest avatars requires a mobile diffuse shader, so we had to change them.
If you have followed a good naming convention, this will only take 1 minute. For example we add a mtl_ prefix to all our materials. In Unity type the material prefix to quickly select and change them all at once.
100 characters are a lot. But like I said earlier, with some structure and consistent work after 3 weeks, we made this happen. At Polygonal Mind, we use Notion.so to have all our projects and task organised.
With that being said There were a bunch of characters that needed little to no optimisation, but some others that needed almost a full rework. This stuff takes time. Especially if you count them by the hundreds.
I hope this guide helped you to optimise your avatar for Quest users, it was a challenging project for us, but the work pays off very quickly once you see players wearing them in game.
So sit back, put on some music, and start working. It's been really fun making these and the paid-off of seeing avatars you've been working on being used by other people is a great feeling.
Pedro Solans was an intern and now junior animator working at Polygonal Mind's in-house team.
Daniel García (aka Toxsam) is the founder and creative director at Polygonal Mind.
Having the avatars being featured by VRChat.
Unity's social media account reposting our content during the challenge.
Increase of the followers both on Instagram and Twitter.
It all started back in September of 2018. I wanted to start investing time into develop new game art styles using Unity, I was not sure how to start but then I found about the 100 days drawing challenge by Amanda Oleander on her Instagram.
Her challenge and commitment inspired me so much that I did my own version of it by doing 100 characters, 1 character a day for 100 consecutive days.
The condition for me was to make an Instagram and Twitter post with a moving character every day, so I had to create a steady workflow that could work for all the days of the challenge.
The challenge process
To succeed on a challenge like this you should try to define a process, and try to follow through it everyday, this will help you focus and will slowly reduce the time you have to dedicate to the challenge overtime, since your brain will be learning and adapting to the tasks.
If you don't know how to set up a process, is okay, most of the times processes are the result of repetition, so just start, do it once, and then write down the steps you made to get to the final result, then the next day try to repeat them. Over time, the process takes shape, evolves and improves.
During the 100 days a lot of people asked us how we managed to make 1 per day so we'll be taking a general overview of the character creation process. Most of the characters follow this scheme.
- Fixing retopology with MayaLT
- UVs and Textures
To create the texture, we like to use Adobe Color in the studio. Easily help us find color schemes that work for out characters.
- Rigging and Animation
- Unity scene set up
Finally we got to the point where I wanted invest more time at. Unity. The hole point of this madness was to force myself to use Unity as a quick tool to develop new visual concepts and ideas for future projects.
Not gonna dig into every detail of what I did with Unity, but there are a couple of tools that helped me to save time and get great results during the 100 days.
- Final steps
- BONUS: extra tips to iterate faster on a challenge like this one
Uploading them to VRChat as avatars
Halfway through the challenge we came up with the idea of giving a second life to all the characters by transforming them into avatars for the Metaverse. They were all already rigged with Mixamo so we knew by experience that they could be used, at least in VRChat.
Months later I decided to give it a go to the avatar idea with the help of 2 interns in the studio.
Initially we just wanted to give them simple rig and upload them into VRChat, but after a few days into the work, we got reach out by the VRChat team, they loved the variety of our characters, and they suggested us to give them some extra love, by adding visemes and optimising them for the new Oculus Quest release, this way they could be used by even more players.
So we improved them and created a VRChat World to gather them. I must admit that Investing some more time into adding visemes made the characters way more interesting and fun to use!
Here is a screenshot of our Notion.so board in the middle of the project.
There is a lot of documentation already about how to upload avatars into VRChat, so we wont be covering any of it on this post, but, we'll be releasing another blogpost with some tips for optimising avatars for Quest using MayaLT later on.
Next Steps for this project
As you can see in our roadmap for now our most closest goal is to keep uploading all the characters into VRChat with visemes, we're really close to have them all up and ready to use. At the same time we'll be improving the world too.
After this our next milestone is to tokenize this avatars using the blockchain, our final goal is to release all model files for free to download on our site, as "Open source avatars" so anyone can use our avatars in any virtual world platform or project they're developing.
During the time I was writing this post, the guys at LIV reached out to us to use the avatars for their platform, so you'll be able to use them for streaming Beat Saber soon.
If you have a VR platform or a project you might wanna use our characters at, feel free to reach out so you can have a test before we make the open source release.
If you want to see the characters during the challenge, you can check our Instagram and Twitter accounts.
Daniel García (aka Toxsam) is the founder and creative director at Polygonal Mind.