
Welcome to ChilloutVR!
I'm Shin, also known as Shinter!
I love creating tutorials for people to learn about Unity and Blender.
and I believe ChilloutVR needs more content for players to enjoy in public lobbies!
This guide is for individuals that are new to Unity, this is very beginner-friendly, and this should help you learn how to upload your first avatar, in this tutorial I will be teaching how to upload Unity's Space Robot Kyle, but you can upload your own character instead, I'm just using Space Robot Kyle as an example.
If something is very confusing feel free to DM me on Discord Shinter#6986 (Please Refer to this Guide before sending me a message!) or reply to my post and I'll gladly answer any issues you may face.
Requirements
ChilloutVR Content Creation Kit
Unity 2019.4.13f1 (Executable) (No Unity Installation)
or
Unity Hub (Recommended)
Unity 2019.4.13f1 (Unity Hub) (Recommended)
This guide is aimed at Individuals that are getting started with Unity for the first time, In this tutorial, I'll be teaching the Unity Hub version as this is the most recommended.
After installing Unity Hub, you can install Unity 2019.4.13f1 (Or supported Unity versions by ChilloutVR) by clicking on "Unity 2019.4.13f1 (Or supported Unity versions by ChilloutVR) (Unity Hub) (Recommended)" which is a part of the requirements on this post.
When Installing Unity, It is recommended to create an account for Personal Use (If you are not planning to create a Unity Game)
To create a Unity account visit Create a Unity ID
For further assistance, I'll also teach you how to create a Unity ID and even activate your Unity with Personal Edition.
When entering the page, fill in the details, and create your account, I recommend using Gmail.
This picture is for illustration purposes!

Upon creating a Unity ID, it will tell you to confirm your email.
Visit your email, and find the email "Confirm your email address" by "Unity Technologies" if you can't find this, you can check your Spam/Junk mail, and press "Link to confirm email"

It could tell you to do a captcha to verify, if so do the captcha and verify.

When you successfully created a Unity ID account, you can proceed to open up "Unity Hub" or if you had it open already, you could open it.
Sign in to the account that you just created.

Once signed in, this time, you press Manage License, so you can set your Unity to Personal Use edition.

Press "Activate New License"

Select the License Agreement that fits you, in my case, it's Unity Personal.

Upon activating your License, you should see that it has been activated and you now go back to the first page and begin creating your project!
Create a new Project with Unity 2019.4.13f1 (Or supported Unity versions by ChilloutVR)
Make sure you do not have Special Characters on your project name!

When you are done creating the Project, Unity 2019.4.13f1 (Or supported Unity versions by ChilloutVR) should open, if you had issues opening Unity, you should check if your Unity is in Personal Use Edition.

Now we can begin to start getting Space Robot Kyle from the Unity Asset Store, open up the Asset Store and in the search bar type Space Robot Kyle and click on the store page of Space Robot Kyle. (You can skip this if you have your own Model)

On the store page of Space Robot Kyle, press Import.

You will get a pop up to Import Unity Package, press Import

After the import process, Click on Scene to go back to the normal view, and right click your Assets window and hover over to "Import Package" and click on "Custom Package..."

Navigate to the Folder where you downloaded the ChilloutVR Content Creation Kit, and open it to Import it, In this example, I'm using the Experimental Early Preview, which later in the future will be the normal CCK!


Once you have everything Imported, you can now start navigating to the folder of Robot Kyle.
To do this, in the Assets Explorer, Navigate to "Robot Kyle" then "Model".

Click on Robot Kyle, and select Rig and change the Animation Type to "Humanoid", in general with any character/model you have to make sure it is set to Humanoid.

Apply the Animation Type.

After applying, you can now Drag and drop Robot Kyle to your Hierarchy to put Robot Kyle into the Scene.

Right-Click on the Robot Kyle you just put into your Hierarchy and Unpack Prefab Completely (Recommended)

In the Hierarchy, click on Robot Kyle, and press Add Component on the Inspector Window, and search for "CVR Avatar", and select the CVR Avatar script.

Adding this, will add the components "CVR Asset Info (Script)", and "CVR Avatar (Script)".
On the Character/Model, you will see there are overlapping texts "Voice Position" (Red) and "View Position" (Green)
You would have to align them to the character's head, which is as easy as dragging them up, and moving them to the side for perfect accuracy.
Voice Position is where you want your voice to be transmitted.
View Position is where you want your view point/camera to be.

To be extra accurate with everything, I recommend learning how to use Unity's Camera Controls,
Right-Click + W/A/S/D to Move
Alt + Right-Click to Zoom In and Out
Alt + Left Click to Move the Camera from your view
I went and accurately positioned everything to my liking by moving the camera closer to the character and adjusting it, this can be completely up to you how you set up your voice position and view position, but keep in mind these are what is recommended.

If you would like to use the same view position values and voice position values I've set, you can change them by filling the values in the CVR Avatar (Script) located in the Inspector when you select your game object (the model/character you've made).
View Position X: 0 Y: 1.686661 Z: 0.03189352
Voice Position X: 0 Y: 1.597085 Z: 0.1009962

You can now customize it to your liking, in this example I will create an Advanced Avatar Setting to allow for RGB Colors for Robot Kyle, you can skip to the Upload Process if you don't want to know how to set up the Advanced Settings.
Enable Advanced Settings in the CVR Avatar (Script) located through the Inspector, and Add an Input.

When an input has been added, fill in the name, In this case, "RGB" is what I would name it,
change the Type to "Material Color".

Add a Material Property

Drag Robot2 (Which is the Body Mesh) to the new Material Property you created.

Open up the Game Object dropdown, and Select the Property "SkinnedMeshRenderer: Color(_Color)"

Once you are done with this, you can now press "CreateAnimator" and it will create the advanced avatar setting to allow RGB, and then you can press "Attach created Override to Avatar"
Keep in mind, this will change your Animation Overrides to the generated one.

Now that you are done customizing your character to your liking, You can now Upload your avatar.
Minimize Unity, and open up a browser and Go to ChilloutVR Hub Website, and go to your profile settings, You can visit it through here: https://hub.abinteractive.net/my?cat=edit
Go all the way down to "Access Key Management" you will see "ABI Content Creation Kit Master Key" press "Copy"

After copying the Key, go to Unity and go to "Alpha Blend Interactive" > "Control Panel (Builder and Settings)" Select Content Builder, Put your Username, and the Access-Key is the Content Creation Kit Master Key you copied, then press Log In.

After you are logged in, Select "Settings & Options"
Set your preferred Upload Region, In this case it is defaulted to Europe which is also the best for me.
At of the time writing, If you use CCK v2.3 the Europe Region can only be used.
If you use the CCK 3.0 Experimental (which is the testing version), you can use Europe or USA servers.
Now go back to Content Builder and click on Upload Avatar and it should take you to the upload process.

Make sure to tag your avatar accordingly, If it is NSFW mark it NSFW, if it is suggestive (shows too much skin, like bikinis), if it is, nudity etc.
In this case, this avatar is already set to "Safe for Work", and everything seems to be okay!
after filling in the details press Proceed with Upload.
and you can check your avatar's list and see that your avatar has been uploaded to the game, If you get errors go to "Frequently Asked Questions"
In game, you can now check for your public avatars.
Open up your Menu, Select Avatars
go to "My Avatars" and you can find the newly uploaded Avatar there, and you can press Change Avatar.
In the future the User Interface will be different, and I will update this post when it is changed.

You should now be swapped to the model you just uploaded.
and since I made Robot Kyle have Advanced Avatar Settings to have RGB, you can open your Menu, and select Home and select "Adv Avtr"


You can now change Robot Kyle into whatever color you want!
Frequently Asked Questions:
Q: Upload stuck at "Encrypting File"
A: Wait for 5-10 minutes, If it does not do anything check your console for errors or swap your Connection Encryption to "http".
Q: Cert verify failed in Console
A: If you are using v3.0 CCK use the United States Upload Region, or the Upload Server is down.
A2: Old CCK version!
Q: Upload Failed. Response from API: The uploaded asset bundle is incomplete and has been rejected. Please make sure the asset bundle is readable
A: This can be multiple reasons, the full reason is Your avatar failed to build hence it has been rejected, it could be that your Unity Project has compiler errors, and doesn't allow your avatar to be uploaded, or your avatar/project has special characters on object names, and it can also be that the upload server is down, or you're using v2.3 CCK which you would need to change it to United States Upload Region.
A2: Old CCK version!
A2: You have installed MagicaCloth wrong, and you need to fix it, Go to Edit > Project Settings (Located on top of Unity's Window) Click on Player > Other Settings >
Make sure Scripting Backend is "Mono" and not IL2CPP
And this should fix issues related to uploading your avatar.
If you want to learn how to install MagicaCloth properly, I've created an installation guide here
If this guide helped you please drop a like below, or if you had trouble following this tutorial, You may DM me on Discord at Shinter#6986 or reply to this post.
