We usually write about what we learn,
so hopefully you can learn too!
With the continuous rising popularity of VRChat and its standardisation as a virtual meeting point, Polygonal Mind contributed to its growth by creating 100 avatars available in the platform. This took the team to think about a "room" in the virtual world of VRChat where you could hang out with friends and change your avatar to one of our creations.
Background of the issue
Creating a visually impressive scenario need the use of a high dose of creativity. And so Laura Uson lead the visual development of the scene, taking the impressionist painter Gauguin as the main inspiration for our environment. The vivid colors of the paintings and the simplicity of the shape direction and vague definition is one of the main highlights of our environment.
In this project I took the lead in general composition and technical development, this meant to be in charge of all the optimisation and general look alike by compositing and creating a good looking environment by level design, lighting and colour harmony. And one of those tasks to perform was to have a water flowing among all the static-ish environment.
To do so we heavily relied on Seamless textures getting animated to simulate water flowing.
#01 - Seamless textures can create flowing rivers
It is true that seamless textures are a great way to achieve massive texture distribution without feeling that there is some kind of repetition grid and everything looks overall uniform. This type of textures also work great to make flowing rivers or fluid movement. Said so make shape direction your main ally for flow movements, think about a "starting quad" and an "ending quad" where water will flow along the loop.
The 3D quad adaptation to an square texture also gives you the ability to shape the “stress” of the water flow by enlarging or stretching its area in the UV space. If you stretch the quad in the UV space you will get a quicker and stressed water flow. On the other hand if you enlarge its length, you will get a calm and slower flow of the water path.
This technique can be applied to a wide range of standard water flows like broken pipes or waterfalls.
In order to achieve this, we created a seamless square texture along the Y/V axis so the river would follow this pattern vertically, and so the animation goes from a Texture tile offset from 0 to 1 during X time. This way your "simple trick" animation will be always flowing seamlessly.
Although in the previous texture tile preview you can notice the "square" repetition due to small details in the texture, this cannot be appreaciated in the river mesh, as its quads only match the X/U vertical straight boundaries, while the horizontal edges mantain an unfolded freedom. This makes the texture to not necessarily match the whole square as its texel density is uniform along all the mesh. Of course this was our desired approach, you can always match the full square for different visual appealing results.
#02 - Seamless textures can create flowing oceans
The river came firstly, as its a simple UV animation logically made and thought, but we faced that the ocean couldn't be animated the same way as its flow doesn't behave the same way. The main issue was to "imitate" and do a visual ressemble of the ocean waves in a calmed way, without creating wave meshes. The attained look was inspired by the following Gauguin painting:
From the picture from above we can already see how the ocean shape and look a like was made, each "wave" was made by creating a river that went along the shore to the limits of the map, creating a water flow that ressembled to the sea.
At this point you can already guess that you cannot animate it the same way as it is animated the river, in this case the animated axis is the X/U axis, moving the foam closer to the shore.
This could be achieved by doing a seamless connection between all the faces, this time each quad occupies the whole UV region, creating a seamless mesh deformed by its own mesh. The stress points now are made when there are more (and smaller) polygons instead of smaller UVs.
And that's all about the project breakdown regarding this particular environment effect and animation. The next two points are going to be focused on creating this effect step by step.
#P1 - Ok I made a river, How do I create proper UVs?
Once you have the initial River mesh you will probably have a UV mess. Because how Maya behaves, UVs get deformed as the Maya engine performs the commanded operations. My recommendation is to delete all the UVs and select the path loop the river will follow, you should get something like this by using a contour stretch:
As you can see, with the Maya History deleted and the shape Frozen, an one-opened loop will be displayed like this when performing a Contour Stretch. You can say that it still doesn't look right (because the whole mesh has been stretched to the coordinates 0,1 in the UV axis) but it has the water flow direction already. From this point the best forward step to do is to scale in the V axis the whole UV shell until finiding the desired texture stretching.
Remember rotate the sheel and align the last quad of the river as the highest point in the UV coordinates, this way the animation value towards a positive axis will get displayed properly. Otherwise the river would be climbing up the waterfall.
With the UV length expanded along the V axis you now have a proper seamless water flow in a river, good job! Now let's take a look to the next point.
#P2 - Now I want it to flow, Animation.
One of the many benefits of Unity is its simplicity when it comes to animation. Unity is an engine capable of animating through its animation engine almost any public property or value displayed in the inspector of a gameObject in scene. All you need is to create an Animation Controller in one of your Assets folder, create a default State and create an Animation clip assigned to it.
Once you have done this, you can start to create and edit your water animation in the Animation Window (CTRL+6).
With all these Unity basics you will have a beautiful (and maybe simple but effective) water flow. From this point everything is ad-on and there are infinite ways to keep experimenting and improving this workflow, it will always depend on the artistic and visual approach you are trying to get.
With all the things said, I will pack my tools and do my last paragraph as a farewell. This was my very first time doing a river flowing, sea waves approaching and a waterflow being alive, but I have been already experimenting with texture offsets for a wide range of other applications. Because it's more important to know the useful basics and tech tricks instead of very particular cases of technology and graphics applications. Experimentation is key in this world!
That's all you need to start experimenting with simple water flows, there is no real need to use Particle Systems or complex Shaders, with the correct texture and clever usage of UVs you can achieve amazing results that at the same time will do a less impact in performance.
You are more than welcome to drop any question or your try-out and results!
I purr when you're not looking. I'm passionate about environments and all the techie stuff to make them look rad. Learning and improving everyday to be a better hooman.
Bringing 2D into 3D
Momus Park was the first time we tried this with surprising results. For those who don't know, the majority of the textures used are based on the The Starry Night from Van Gogh. Trying to imitate the spirals and the brush strokes from the sky and the city on the models.
In this project, we took these ideas and methods a step further, by not only trying to recreate the texture but also the looks inside the painting. Creating in that way a world in which wherever you went or looked, you experienced the sensation of being inside a painting, uniting 2D and 3D.
Actually, this is not a new concept, however most of the 3D works that try this method are static images or videos, an impressive technique and design without a doubt but it's a shame that you can't go around the world they created.
Where to start
Once we have limited what we want to do and the feeling we want to get, it's time to gather references and styles.
In this case, we were looking for artists that had painted open aired spaces and gardens, since the main theme of this world it's called Avatar Garden. Meaning that the player have to have places to walk throught, select the different avatars and relax zones where the players can meet with other people.
The other condition that we put ourselves was that it had to be a classical painting, since we were connecting the 3D and the 2D, we thought it will be interesting to join a classic art medium with a new one. Putting this two things together inmediatly gave us the thought of the impresionist movement, with artists such as Claude Monet or Édouard Manet.
This style has a lot characteristics that make it ideal for this, the textures have a lot of personality with a strong presence of brush strokes and spots of colours, making it really easy to create tileable textures. Finally after reviewing a few artists, we decanted ourselves for Gauguin and his tahitian landscapes.
Once we have an artist selected, it's important to take notes. Each artist has a particular style that took years to develop, and if we want to recreate their paintings or artworks, it's a must to try to imitate these details. In this case we can pinpoint a few things from the get go that will helps us in order to recreate it:
When we have these main points clear it's time to prepare the props and the assets. To get started, we created some of the most basics props to fill a simple scene. That way we can define more details and polish the models even more.
This also helped us to develop a pipeline that allowed us to work more efficiently, which more or less consists of this:
Finally, in the spirit of Gauguin, we decided to change the world to an island instead of a garden.
Improvise, Adapt and Overcome
Creating this pipeline gave us an idea about what we will need to make, however it's not as easy as that. As always happens in these kind of projects, we found a series of problems. Especially when adapting some of the assets into the paintings style.
There were times when we had to reject some models because even though the final result may look impressive, the time spend on it, the resources it took or the number of tris, made the process not worth it.
For example this tree below (reference on the left), to recreate it we put a base on the leaves with a green texture, and them we recreated the yellow strokes with transparent planes. On the right you can see the tree in the process. Sadly we had to drop it because of the reasons stated above.
Other example comes from the vegetation, in particular from the bushes, since the forms are not very detailed, if took a lot of tries until we achieved a satisfying shape, it was a difficult time to make because a lot of times they resembled deformated spheres. Since this was a necessary model, we repeated the model until we achieved the desired result.
The most important lesson from this point is that not everything comes as one imagines it, so when you arrive to this, is important to stop and think about it. It is necessary? it is taking a lot of your time? how can I change it? This is normal, so it's important to improvise, adapt and overcome.
If you keep going you can finally obtain the desired results, as you can see:
While working on this project we discovered that it was a good way to test our limits, and what we can do inside an enviroment project. We tried to recreate a paradise that Gauguin viewed when he first traveled to Tahiti. All in all, I hope to see you there.
Before doing anything, let's keep some important stuff in mind:
Of course, first of all you need to have the SDK imported into the project in order to upload your content. Never mix the SDK2 or SDK3 in the same project, do clean uninstalls of the sdk prior to uploading or migrating the projects as it can corrupt your data. Currently (22/June/20) the most stable SDK is the VRCSDK2 as it contains the legacy inputs and triggers for worlds.
As the official page says: "Choose wisely."
Worlds with cross-platform support share the same "seed" or "world-id" provided by VRChat once you upload the world for the first time. There is no real limitation for the PC version more than having a thought on lower pc machines and not to overload the scene with RT events or graphics that require real-time processing.
To start the port to the Quest version, first of all duplicate the project as a way of back up and also to make the convenient tweaks you think you have to do to match the hardware limitations of the platform. The Unity profiles is a great help to know what is loading and how much is taking to render each frame of the camera.
As a creator, you should keep an eye on the performance of your world:
For the Quest version (which is the version that is going to run on an Android platform with graphical limitations), keep in mind the following hard specifications:
Prepare Unity to be able to upload scenes to VRChat
Once you have this basic setup, you now can press the big button and upload your content for the first time!
Once the SDK packages all your data and makes it ready to upload, prior to start it will ask you to put the name and other descriptions to your world (Unity will go play mode). Do a thumbnail, state tags or mark specific content and check the box prior to upload.
If you want your World to be public you must have at least "Known User" to be able to send it to Community Labs and let VRChat review if your World is good to be Public.
My PC build is live, what now?
Next steps are important, first of all duplicate your project, this way one project (development ended) will be the PC version and the other will be the Quest/Android version. I usually make use of the PC version as the master and the Quest version a semi-automatic downgrade.
Once duplicated, open the project with Unity. We are going to need the project in Android, once its open, go to File > Build Settings. You will see a list of diferent platforms to build your project with. Click on the Android platform and next click "Switch Platform".
Click on Switch Platform and wait until the process ends. It may take some time, depending on the size of your project. Once ended the platform switch, the Unity environment will be set with Android.
With the change of environment, you will no longer be able to do local tests so keep in mind to do "core" stuff on the pc build prior to duplicate the project. Use this project as a downgrade on texture sizing, high level compression and low-near-zero dynamic or real-time events being displayed on screen. With the same scene, the descriptor will be mantaining its World ID and with the upload the World will be updated with Quest support.
During the upload keep all info input the same as the PC version: name, tag, description...
That's it, we hope to see your amazing world over VRChat!
Before doing anything, is my character compatible
to be a Cross-Platform Avatar?
For a character to be able to be Cross-Platform it requires to be optimized for mobile devices:
For more information about what you can and can't do with your avatar visit this website:
Prepare Unity to be able to upload Avatars to VRChat
You will need these things to upload your own Avatars to VRChat:
In the following link they explain the requirements and how to set up the SDK:
In my personal experience It worked when I didn't installed Unity Mitigation Tool, so I don't recommend installing it. Maybe it's just a coincidence. To import the SDK you have to go to Assets > Import Package and select the SDK in the folder.
CAUTION: Importing the SDK will only affect the current Unity project. You will need to import it in every Unity project in which you want to upload something to VRChat.
If its the first time you log in with an account in the SDK you will have to wait until you are able to upload anything to VRChat.
Setting up the Character in Unity
Once you have the Unity Project with the SDK and your rigged character its time to put it on a scene.
To import the fbx model go to Assets > Import New Asset.
You will have to do the same to import the texture (Another way to import them is draging them into the Project Tab).
Once you have imported both, drag the model into a new Scene. To create a new Scene you can go to File > New Scene; Right Click on the Project Tab > Create > Scene; or simply type Ctrl + N.
1. Change the Scale
To be able to see how big is your character with respect to the world, go to GameObject > 3D Object > Cube. A cube of 1x1x1 will appear in the Scene so you can compare it with your character.
If you need to change the Scale of the character DON'T DO IT ON THE TRANSFORM COMPONENT OF THE CHARACTER IN THE SCENE, this could create unwanted errors in the future.
To modify this parameter the best option is to click the character in the Project Tab and in the Inspector Tab > Model change the Scale Factor value until you have the size desired. You will need to Apply to see the change in the Scene.
2. Create a Material
To create a new material in the Project Tab, Right Click > Create > Material. Left Click in the New Material and in the Inspector Tab should appear the configuration of the material.
Another option is to click your character in the Project Tab > Material and there click in the circle in the list of materials and choose the material you have created previously.
Quick Tip: If you want to change the name of something in the project, for example, a material, in this version of Unity you can press F2.
3. Add the VRC Component
Now you click the parent object of your character and look at the Inspector. Click in Add Component, search VR and add the VRC_Avatar_Descriptor.
In this component change the parameters of View Position to align it in front of the character. This is where the First Person Camera will be when playing with this character. In theory this would be enough to upload the character, but for caution lets check that there isn't any big problems.
Go to VRChat SDK > Show Build Panel Control, popping up a small window. You have to look at the messages below the button Build & Publish.
If you want to add Visemes to your character so it can move their mouth when you talk I recommend you to check our Visemes Guide:
4. Fix the Rig
Click your character in the Project Tab > Rig and change the Animation Type to Humanoid.
Go back to the VRChat Tab.
If you have this problem you have to click on Rig > Configure and select None in the UpperChest box and change the Chest bone to Spine2. Make sure that you have at least 3 fingers rigged:
Thumb, Index and Middle to have Full IK and Tracking later.
If there is no Red Errors it should be fine. Then click Build & Publish. The build can take some time depending on your computer and the model you are uploading.
This should appear in the Game Tab. Here you can name the avatar, give a description, indicate if there is any content warning and if you want it to be able to be shared. Make sure to check that you own the rights of the characters. If for some reason in the future you upload a character you dont own you can have legal problems later.
To change the preview image you have to go to the Scene Tab and move the new VRCCam in the scene.
When you are done, click Upload and wait for the process to end!
Isn't it great when you talk with somebody online and you see his mouth moving while he talks? It really add ups to the experience, specially in Virtual Reality.
That's what this is about. Creating different shapes so you can see yourself talking when you look at a mirror.
It's the little touches that makes something good to something better.
Let's say you already have your model done, it's also rigged and skinned so its ready to go. But, you want to make some blend shapes because in-game they look neat and funny.
Well, let's make them!
First, we need to know how many blend shapes we need to make. VRChat uses 17 different blend shapes. These are:
It's important to know that these shapes that we are going to make will need to have a very specific name. For example, aa is called vrc.v_aa; ch is called vrc.v_ch; etc...
The only exceptions to this rule are the first 4 of the list. Their names will be vrc.blink_left, vrc.blink_right, etc...
As you can see in the image, there is no "." in any of the names, and that's because Maya doesn't let you write dots in the names. We will roll with it for the moment.
Duplicate your character and move it to a side. Hide what is not necessary and show what it is.
Use an image of reference to know how to shape the mouth depending on the shape you need.
This gives you a general idea of how I made the different shapes of the mouth depending on the viseme.
You can see that there is not any vrc.blink_right or vrc.lowerlid_right, but I will talk about that later.
Another thing to keep in mind is that even if vrc.v_sil doesn't change the shape whatsoever, you must change something regardless. When we use Blender later, when exporting, if Blender detects that "sil" it's the same as the base form, it will remove "sil" from the blend shapes. Move a vert a little bit, one that no one will see, on the back of the mouth, for example.
Now that we have every shape done, we will use the Shape Editor.
Open the Shape Editor in the sculpting tab in Maya. Or going to Deform>Blend Shape.
Now, select one shape that you created and then select the original model. Go to the Shape Editor and click on "Create Blend Shape". Repeat this with all the 17 shapes.
Before, I said that I didn't have any blink_right nor lowerlid_right and that's because you dont usually need them. If the character is symmetric, you can duplicate your blink_left, select the new target and in the Shape Editor go to Shapes > Flip Target.
This will create a mirror effect and making the right eye to blink. You should change the name once it's done.
Export and Import
We have every shape ready, so now we will export all the package. Select all the shapes, meshes and bones and go to export.
Be mindful of checking in the box of Animation and making sure that Blend Shapes is activated too, because if it's not, it wont export correctly.
Write the name you want and export it.
Now we will open Blender, where we will change the names of the shapes to the correct one.
Open a new scene and delete the objects that get created all the time. Camera and light too.
Then, import the file we made earlier.
Navigate through the menus to find the Shape Keys sub-menu.
Here you can change the names of all the shapes. Delete the first "_" and replace it with a "."
The last thing you have to do is to re arrange all the shapes to be in order. The order is the same as the list that I wrote at the beginning.
Once that's done, export as fbx.
You should have your Unity latest stable version already set up. If you don't, check this guide out made by my friend Alejandro Peño where he explain how to set it up.
With the character imported, we will add a new component called VRC_Avatar Descriptor.
We will draw the mesh into the "Face Mesh" section. All the visemes should appear below there.
Now just click on each section and select the corresponded viseme.
Once it's finished, you can upload the character like you usually do. Again, if you don't know how, you can check this guide:
Blend shapes visemes are a great way to give life to your avatars in VRChat.
I would 100% recommend using them in your future avatars.
Depending on the model it takes around 30 min to an hour to create all the shapes needed, and they look great.
It's a lot of fun making these, so give them a try!
Rigging our character in Mixamo
Mixamo is an automatic rigging website tool that allows you to create quick humanoid for free.
As long their shapes are not complicated.
If you are already familiar with this tool you can skip to the next part.
To log in you can use your Google Account.
Upload your character
For a VRChat avatar you want to use at least 3 Chain Fingers because is the minimum that the game needs to detect correctly all the basic movement of your hand.
If Mixamo doesn't detect 3 "fingers" it will create less chains and you will have issues later.
Once everything is placed correctly just click Next and the autorigger will do his work. If you are satisfied with the result, click Next again. Now you can see the character in different animations to ensure the quality of the rig.
Don't trust, test
Before downloading your character from Mixamo, we strongly encourage you to run the following animations to test if there is going to be any problem with the avatar beforehand. Some of these problems can be solved after downloading the rig, but others cannot.
Download that avatar!
Having trouble yet?
Mixamo's automatic skinning and rigging can work. But more often than not, your characters will encounter different problems that only can be fixed manually using a 3D software.
What went wrong? What do I do? These are questions that I made myself while working on these characters and I hope I can answer them here. Not all models are the same. Some have special characteristics and you have to look out for those.
These next examples will help you to identify and fix problems that could happen.
This is the kind of stuff we should be aware of. For this particular case, removing all the influence of the shoulder bone will be enough to lead to some better results.
Removing all the influence sometimes is not the best idea so you can also reduce the amount of influence the shoulder makes on that part of the body for different results.
In this pictures you can see how the bone influence should look for both cases.
One particularly annoying problem that I personally found while making visemes for the avatars with Maya LT, was that even when the character was in T pose, if I tried using the blend shapes, the model will return to its original pose before the rigging. You can check what I'm talking about on the gif below.
Select the old mesh, then the new one. Go to Skin > Copy Skin Weights.
You can delete the old mesh, since it has no use.
Now all the blend shapes will work perfectly!
Like any automatic tool, Mixamo is a great time cutter that provides an easy way to go with decent results, but problems can arise, we covered some of the most annoying ones and hopefully this blog post helped you somehow.
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.
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.