Polygonal Mind
  • Home
  • Metaverse Builder
  • CryptoAvatars
  • MegaCube
  • Blog
  • Decentraland
  • Projects
  • Assets

Blog

Worlds in VRChat, uploading and doing cross-platform environments.

7/2/2020

0 Comments

 
Upload worlds to vrchat cross platform
The Mission

Uploading something to VRChat is extremely easy and it has made a new dawn for community content as the Unity Engine has a flexible editor that can help you create amazing worlds where to hang out with your friends.
​
Creating content is good, but better is to do it in a way that everyone can enjoy it!
Resources

  • Unity 2018.4.20f1
    • Android SDK installed
  • VRChat SDK
    • VRCSDK2 for Legacy Worlds and Avatars
    • VRCSDK3 for Udon Worlds (alpha)
  • Photoshop
Creators that think about optimization and user experience are cool meme
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."
vrchat choose your sdk wisely
https://docs.vrchat.com/docs/choosing-your-sdk
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:
  • Tweak and polish performance, learn to know how the Unity Engine behaves itself with the data you are giving:
    • "Static" gameObjects in scene help Unity improve framerate by freezing their render batching.
    • Use the less shader passes as possible. (Keep transparency usage low)
    • Bake lights and avoid real-time lighting for Quest
    • Use only one Directional Light in mixed mode to fake normals into bakes and to give Avatars detail and light direction (as it was a "sun" light).
 
  • Set up an Occlusion Culling matrix and optimize it to make the engine only render what it has to be visible on screen.
​
  • Keep the collision complexity as simple as possible, avoid using mesh colliders and instead recreate your scene with box colliders or other primitive shapes that grant fast-loading and good player interaction with it.


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:
  • Keep the build file around 30 mb. All worlds that exceed 50 mb won't run on Quest.
 
  • Texture size space should be kept the lower the better, pack atlas and keep it as a square 1024px texture when possible as they are read faster than higher texture sizes.
​
  • Keep the material list low.
Useful links:
https://docs.vrchat.com/docs/quest-content-optimization
https://docs.unity3d.com/Manual/LightMode-Mixed.html
https://docs.vrchat.com/docs/submitting-a-world-to-be-made-public
https://docs.unity3d.com/Manual/OcclusionCulling.html
https://docs.vrchat.com/docs/setting-up-the-sdk
Prepare Unity to be able to upload scenes to VRChat

Once you have created and optimized the scene for your first time upload (PC build), just click the Show Control Panel button to do all the work to test and upload.

This window will ask you for an account in order to start working, log in and you will be granted access to upload your content.

The tab "Builder" is going to be your bestie during the upload and preparing the scene, this tab will tell you whatever is wrong with your world and will give you instructions to avoid errors.

The first thing it will tell you is that you dont have a scene descriptor. Scene descriptors are gameObjects placed once in the scene as "directors" and managers of the scene content and the rest of gameObjects. They state general behaviours and manage the spawns of players.
​
Create an Empty gameObject on your scene, call it Descriptor and add the Component VRC_Scene_Descriptor to it. Then create another Empty Object, call it Spawn and make it son of the Descriptor. You can place more spawn points and add them to the array list. The gameObjects work as a transform point to place the player when entering the scene.
Picture
Picture
vrchat sdk show control panel
vrchat unity sdk builder screenshot
A common developer screenshot of the builder
Picture
You can customize the orientation of the player spawn, by default is the Z-Axis (blue) in charge of the forward direction.
Picture
Once you have this basic setup, you now can press the big button and upload your content for the first time!
Configure vrchat world 100 avatars
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.
Picture
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".
Unity build settings android
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...
Useful links:
https://docs.unity3d.com/530/Documentation/Manual/android-sdksetup.html
https://docs.vrchat.com/docs/cross-platform-setup
That's it, we hope to see your amazing world over VRChat!

Picture
Alejandro Peño
TECHNICAL ARTIST
Videogame and animation enthusiast. I aspire to become a great videogame artist and developer, providing enriching experiences for those who share my passion.
Linkedin
Picture
Kourtin
ENVIRONMENT ARTIST
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.
Twitter
0 Comments

Upload Avatars to VRChat Cross-Platform (PC and Oculus Quest)

6/3/2020

7 Comments

 
The Mission

Upload to VRChat a character to use it as an avatar can be a bit difficult or messy to do, even more if you want it to be Cross-Platform, here we are learning how to do it.
Resources

  • Unity latest stable version
  • Mixamo
Picture
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:
​
  • Maximum size of 5-8 MB.
  • Have less than 5.000 triangles.
  • Only 1 Skinned Mesh.
  • 1 Material for each Avatar, 2 only when neccesary.
  • Textures should be 1024x1024 at maximum.
​
For more information about what you can and can't do with your avatar visit this website:
https://docs.vrchat.com/docs/quest-content-optimization
Prepare Unity to be able to upload Avatars to VRChat

You will need these things to upload your own Avatars to VRChat:
​
  • A VRChat Account (The Steam account doesn't allow to upload custom characters).
  • Unity latest estable version
  • VRChat SDK

In the following link they explain the requirements and how to set up the SDK:
https://docs.vrchat.com/docs/setting-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).
Picture
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.
Picture
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.
Left Click in the circle between the square and Albedo. A new window should appear, showing all your textures in your project, you have to select the one you want for the model. Once you have done this, drag the Material from the Project Tab to the model of your character in the Scene Tab. If everything is ok the model will show now the texture correctly.
Picture
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.
Picture
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.
Picture
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:
https://www.polygonalmind.com/blog-posts/create-and-upload-a-vrchat-avatar-with-blend-shapes-visemes

TIP
Enable Legacy Blend Shape Normals in Unity 2018. Or your character will have weird shading when talking. It can also make your upload a lot larger and so, prevent you to upload since over 10 mb.
Picture
thanks to @franadaVRC for the tip
4. Fix the Rig

Click your character in the Project Tab > Rig and change the Animation Type to Humanoid.
Picture
Go back to the VRChat Tab.
Picture
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.
Picture
Picture
Picture
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.
Picture
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!

Still have doubts?

Reach us on Discord!
Discord

Picture
Alejandro Peño
Technical artist
Videogame and animation enthusiast. I aspire to become a great videogame artist and developer, providing enriching experiences for those who share my passion.
LINKEDIN
7 Comments

Create and upload a VRChat Avatar with blend shapes visemes

6/3/2020

2 Comments

 
The Mission

VRChat uses blend shapes to detect phonemes via a microphone, and adjust your character mouth to the correct shapes, giving the impression that you character is talking. Let's learn how to do it.
Resources

  • MayaLT 2018
  • Blender 2.79b
  • Unity 2017.4.15f1
Blend shapes visemes in vrchat turorial
Premise

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.
Starting

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:
  • ​Blink left
  • Blink Right
  • Lower lid left
  • Lower lid right
  • aa
  • ch
  • dd
  • ee
  • ff
  • ih
  • kk
  • nn
  • oh
  • ou
  • pp
  • rr
  • ss
  • sil (silence)
  • ss
  • th
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...
Visemes vrchat list
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.
eyes and mouth expressions visemes
3D model with different face expressions
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.
Maya 3D Deform Blend
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.
Picture
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.
Picture
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.
Picture
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.
Picture
Once that's done, export as fbx.
Upload

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.
Upload Avatars to VRChat Cross-Platform (PC and Oculus Quest).
With the character imported, we will add a new component called VRC_Avatar Descriptor.
Picture
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.
Picture
Like this.
Picture
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:
Upload Avatars to VRChat Cross-Platform (PC and Oculus Quest).
Conclusion

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!

Picture
Pedro Solans
3d animator
​Junior 3D Animator improving every day possible. Videogame and cat enthusiast.
Twitter
2 Comments

Fix and reset your Mixamo avatar rig

10/9/2019

0 Comments

 
The Mission
Creating avatars is really fun, all that 3D modelling can be very fulfilling, I know.
But after the fun part, comes the technical one, rigging.
On this post we'll explain how to use Mixamo to rig your characters in no time, and also solutions for some troubles you'll find along the way.
Resources
  • Mixamo
  • MayaLT 2019 or your preferred 3D software

VRChat summer hotdog avatar promotion
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.
Mixamo
Upload your character

Once you are logged in, press Upload Character and then drag the FBX you want to rig.
​
Note that the FBX file preferably should be in a 2013 or earlier, to avoid errors from Mixamo.
​
Make sure to orient the model to have the front face looking forward.
Mixamo upload character
Bone structure

After that it will ask you to indicate different parts of the body on top of the model.
​
You also can choose the Skeleton LOD according how many fingers of the hand do you want your character to be able to move.
Mixamo bone structure
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.
Mixamo skinning test
Skinning test makes you character make really exaggerated poses. Perfect to see if there could be any skin problem beforehand.
Mixamo typing test
Typing is really useful if you want to check if your avatar has all the fingers rigged, since it moves all the fingers individually you can see if there are any issues.
Download that avatar!

If everything looks alright to you, go ahead and press Download and choose T-Pose and fbx.
​
Remember to not have any animation loaded in right panel, this could modify the pose of our rigged character.
Mixamo download rigged 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.
Bone influences

At first glance, this Hot Dog boy looks normal. It is in T-pose and it's completely rigged and skinned. Yet, there are some problems that we need to look out to.

It wasn't until we tried it on VRChat that we saw the problem. As I said, we all lost valuable time for not checking the rig and skin.
​
Seriously, check what's given to you. Make sure everything is okay.
Mixamo hot dog T pose rig
Mixamo places a shoulder bone between the Upper arm and the Spine 2 bone. This bone doesn't usually move around much, but Mixamo still puts influence, leaving some nasty results, like this one.
​
Lifting up 30º the right shoulder leaves us with an horrible looking deformation.
Mixamo shoulder bone deformation
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.
Mixamo influence removed
Influence removed
Mixamo influence decreased
Influence decreased
Visemes issues

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.
Maya visemes issues blend shapes
To fix this we'll reset our character rig.
​
First, we will duplicate our original character.
reset character rig
Now bind the new mesh to the bone chain we have.

If an error occurs, right click on the Outliner and uncheck the "Show DAG Objects Only".
​
Scroll down until you see bindPose1.
Delete that, and repeat the bind.
bindpose1
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!
Maya blend shapes solution
Conclusion

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.
VRChat demon avatar
Post by:

Pedro @05predo

Pedro Solans was an intern and now junior animator working at Polygonal Mind's in-house team.
Animation film lover, Tekken player and animal huger .

Daniel @toxsam

Daniel García (aka Toxsam) is the founder and creative director at Polygonal Mind.
In love with videogames since he can remember, passionate about geometry,
​VR addict and energetic persona.

0 Comments

How to optimise VRChat avatars for Quest

10/3/2019

0 Comments

 
Premise
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.
The Mission
The Quest has proven to be a very successful headset so far so there're new Quest users on VRChat, we'll use our 100 Avatars to show you how we reduce and optimise our avatars so Quest users can use them in VRChat.
Resources
  • MayaLT
  • Zbrush
  • Photoshop
  • Mixamo
  • Unity (latest stable version)
Butter avatar in vrchat 7eleven
Before starting

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.
Skull avatar selfie into 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

Initially most of the models weren't created with VRChat in mind, and even less with the Oculus Quest.

Thankfully, all the characters were already modeled and texturized, so we only had to rig and upload them.


Or that's what I thought...
Cool Choco selfie into vrchat
VRChat team provided the following rules to follow when it comes for Quest avatars:
​
  • 1024x1024 texture
  • Less than 5000 tris
  • Preferably only 1 material
  • Around 5 or 8 MB uncompressed
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.
1024 textures edit into Photoshop
Export texture images as PNG
Since they already had the appropriated name, we had 100 textures ready to go.
100 texture files png
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.
It is tempting to use an automatic tool to reduce the polycount such as decimation, but we do NOT recommend this at any cost. It will likely destroy your edgeflow and also can destroy the shape of the model, also can break UV layouts, so please think it twice before using it.
Franky frankenstein avatar by polygonal mind

Here are some rules we follow when it comes to reducing polygons:
​
  • Always keep the shape intact. In this case the head must keep being a head with it's rectangular silhouette. After deleting an edge, zoom out and rotate the model to check if everything keeps looking good.
​
  • Don't delete edges where there is a texture seam. This will cause the UV map to go bananas, and that can take a lot of time to get it fixed, and even then, the results can look really bad.
​
  • It's crucial to reduce trying to keep the same edgeflow that the model already has, deleting edge loops left and right without paying attention to the edgeloop will lead you to sub optimal results.
Franky avatar high poly
Franky avatar low poly vrchat
... 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.
Samuela avatar polycount vrchat
As you can see on the left no matter what edge loop you tried to select, there was always a seam. We couldn't find a way to reduce the number of tris (7.5k) without having to re-do the texture again.
​
But, thankfully we learned a workaround for this model.
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 the poly count was around 4.5k, we made the new UVs. Now that's all done, we exported each separated part (eyes, hair, ponytail and hair) of both, the new and the old model.
3d files obj export
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.
Picture
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.
zbrush divide
Samuela textures UVs
zbrush project all
Samuela vrchat texture uv
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.
VRChat allows you to add facial expressions to your avatars so we had to add a mouth and eyes for every character so we can make them blink and talk using blend shapes.
​
Some characters already had eyes and mouth, but others, like Manuela had them embed on the texture, so we had to create them.
Samuela eyes and mouth add
For a quick turnaround what we did was:
​
  • Extrude the mouth inside to make a hole
  • Modify topology if needed
  • Adjust UVs maps to match the lips and the mouth's insides
  • Add some teeth and tongue to the insides
  • Please keep in mind the 5k tris limit.
Rig

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.
Materials

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.
Unity 3D textures avatars vrchat
Unity material
Conclusion

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.
Hot Dog avatar VRChat 7eleven
Post by:

Pedro @05predo

Pedro Solans was an intern and now junior animator working at Polygonal Mind's in-house team.
Animation film lover, Tekken player and animal huger .

Daniel @toxsam

Daniel García (aka Toxsam) is the founder and creative director at Polygonal Mind.
In love with videogames since he can remember, passionate about geometry,
​VR addict and energetic persona.

0 Comments

The challenge of making 100 Avatars in 100 days

6/6/2019

0 Comments

 

The Mission

Creating content on a daily basis and keeping the steady work for a long period of time is both daunting and exciting.
On this case study I'll explain how a silly summer idea evolved into a social media challenge and then into cool avatars that thousands of people are using in VR right now.

Resources

  • Zbrush
  • Unity
  • MayaLT​
  • Camtasia
  • Mixamo
  • Notion
  • VRChat
  • LIV

The impact

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.

Idea Background

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.

   - Conception

With the help if ZBrush and using Dynamesh we're able to quickly generate a "Shape Sketch" of our model without worrying too much about the final polycount.
The result of this doodling will serve as a good base to generate the final topology on top of it.
Face of a character
3d character model from different positions
I personally like using Zbrush Retopo with Zpheres, but you can use Maya, Blender, Topogun, or any other 3D software for doing retopo.
If the shape is easy , let's say a Square or a Circle, I just export it as a reference and I would make it in MayaLT.

   - Fixing retopology with MayaLT

I found over time that doing retopo with Zpheres can generate issues, so instead of trying to fix those with Zbrush, I just keep the mistake and fix it later on with a 3D modelling tool such as MayaLT.
Most of the work at this point is trying to reduce and remove triangles, and fixing animation loops
Even if you did the retopo on another software, I recommend to rotate the model around and try to find any issues on the model before starting the UVs.
Picture

   - UVs and Textures

To generate the UVs of a character, I like to make a planar projection of the model, then start making UV cuts on the most ideal zones.
Here you can see all cuts we made for the characters, almost every model follows somehow this pattern.
Once you have all the cuts done, you have to unfold the UVs
Picture
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

In order to save time we used Mixamo both for rigging and animation.
​
Mixamo is an online free tool that allows you to automatically generate humanoid riggings and it also provides you with a gallery of pre-fix animations that you can use on your project.

This tool is being used a lot when it comes to quick prototyping, so it was a no-brainer to use it for a challenge like this one.
Gif of our 3D character dancing

   - 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.
  • Toony Colors Pro 2 by JMO
I just love using it, making a cool looking material with this shader is extremely easy.
What I usually tweak with materials are colors and shadows and I also like to play a bit with outlines.
You can find a link to this asset here.
  • Post Processing Stack by Unity Technologies
This asset allows you to quickly add different post processing effects to your game scene.
​You can find a link to this asset here.
Trying materials and shaders with our alien

   - Final steps

Once you have a cool looking scene is time to add music. Sometimes when looking for music I found myself changing the animations to fit with the sound.
You can find tons of royalties free music online.

Once you have a music, we used Camtasia to record the Unity scene and edit the final video.
Now that everything is done, is time to post it on Instagram and Twitter.
Hot Dog avatar for vrchat dancing

   - BONUS: extra tips to iterate faster on a challenge like this one

There were some days that I used time tricks to cut time on different parts of the process so I could invest more time on others.
Keeping body parts, cloning and reusing them on different models, reduces a lot the iteration time.
On other type of models like the food and tools ones I duplicated the face, legs and arms so I had just to model the body part.
Picture

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.
VRchat promo image with Polygonal Mind's avatars
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.
Picture
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

Picture
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.


Conclusion

What started to be just a fun challenge to explore ideas, has become a larger project that is gaining interest in the VR community. Having 100 characters inside a hard drive felt like I wasted a lot of time just for a few Instagram awareness, but repurposing them for VR has been one of the most interesting things we've ever done in the studio. Walking around VRChat and seeing people having fun with your work, is just amazing.
Frog takes a selfie into vrchat with our Hot Dog
If you want to see the characters during the challenge, you can check our Instagram and ​Twitter accounts.
Picture
Picture

Post by:

Daniel @toxsam

Daniel García (aka Toxsam) is the founder and creative director at Polygonal Mind.
In love with videogames since he can remember, passionate about geometry, VR addict and energetic persona.


0 Comments
Forward>>

    Categories

    All
    Blender
    CryptoAvatars
    Decentraland
    Decentraland En Español
    Maya
    Metaverse
    Mixamo
    Morphite
    Substance Painter
    The Sandbox
    Totally Reliable Delivery Service
    Unity 3D
    Updates
    Vrchat

    Archives

    March 2022
    July 2021
    June 2021
    May 2021
    April 2021
    March 2021
    February 2021
    January 2021
    December 2020
    October 2020
    August 2020
    July 2020
    June 2020
    May 2020
    April 2020
    March 2020
    February 2020
    December 2019
    October 2019
    September 2019
    August 2019
    June 2019
    May 2019
    February 2019
    January 2019
    December 2018
    November 2018
    October 2018
    September 2016

    Picture
Home
Projects
Assets

Picture
Crypto
Friendly
Picture

Subscribe to get some 💚 in your inbox once in a while.

Follow us and your visit will never be forgotten!
Picture
Picture
Picture

 © 2015-2022 POLYGONAL MIND LTD. ALL RIGHTS RESERVED.
  • Home
  • Metaverse Builder
  • CryptoAvatars
  • MegaCube
  • Blog
  • Decentraland
  • Projects
  • Assets