Random Assorted Tips With Trixxed

Various small things I've learned over the years that'll probably help you!

Unity Tips

Various small and big tips for doing stuff in Unity

Unity Tips

UV Tile Discarding

This page could do with some revisions to better explain things. However still serves well as a guide.

UV Tile Discarding, AKA "the best thing that'll ever happen to you" is a method of optimization and a valuable tool for avatar creation at the same time.

It effectively allows you to use a secondary UV to align islands across a grid and discard those parts of the mesh as you please. Still doesn't sound exciting yet? This basically allows you to have extremely customizable avatars with fewer skinned meshes and materials.

The avatar shown in the video below only uses a total of 3 skinned meshes and 3 materials, it has 5 different pieces of clothing that can be mixed and matched at any time. Do I have your attention yet?

image.png

The best part about this method is that this isn't some trick that just tricks performance stats into thinking it's optimized, like using transparency masks instead, which really is not an ideal method for doing this. UV Tile Discarding allows the parts of the mesh that aren't seen to be not rendered, period; This is because the discarding happens before the shader fragmentation stage, which I will spare you the technical details of, just know that this is a good thing and that people much smarter than me can likely explain it better. In short, it means you get to use less skinned meshes and materials, which means less draw calls, less being rendered.

The Meat of This Page

"How do I do it?" you may be asking, don't worry I'm finally at the point of explaining it.

There are some general things you should keep in mind when using UV Discarding:

Blender Setup

Below you can see the outfits of the model, it's all merged into a single mesh and all onto a single texture.

(I could have included the coat on this atlas, but I wanted to preserve my sanity of having to redo the atlas and baking for everything)

image.png

I then use a second UV map as seen on the right in the Properties window to lay out the UVs I want to individually enable/disable. You can change the tile settings in the Overlay dropdown to make this easier to visualize. Keep your UVs within the bounds of each tile or it won't work. You can see how I have mine laid out as well as the overlay settings in the screenshot below.

image.png

In-Unity

Now in Unity, we'll be using Poiyomi 8.1+ for our UV Discarding, be aware that this works on any shader that implements UV Discarding.

In Poiyomi, this feature is located under Special FX, you need to enable it. Change the Discard UV to the tile UV you just made in the previous section. This would typically be UV1 (since in Poi, UV numbering starts at zero) for best results, leave Discard Mode at Vertex, there is basically no reason to use "Pixel" discarding and doing so virtually defeats the best purpose of using this method.

image.png

In Poiyomi, right-click the values of the tiles you're using and enable them to be animated. This allows you to use them for toggles.

Checked = Off (Discarded)

Unchecked = On (Not Discarded)

You then would make animation toggles exactly as you would for any other toggle animation, just now you toggle on and off your UV tile discards. You're basically done now!

Unity Tips

3.0 Avatar Menu Text Formatting

image-1655958302882.png

Avatar 3.0 Menus have support for Rich Text formatting! You can use pretty much any formatting seen in this page here.

image-1655958532124.png

You simply use the formatting in your menus as seen above.

image-1655958344211.png

Unity Tips

Recovering an Accidentally Deleted File

Have you ever accidentally deleted the entire folder for one of your avatars once? I have! And luckily, despite what Unity tells you, if you accidentally delete a file in the editor. It's still possible to recover it, the catch is that you can (probably) only recover files that you've just deleted. Sorry if you were hoping to get that file back you accidentally deleted a week ago. This probably may only work on windows too. It does definitely work in my case, I've had to do this an embarrassingly large amount of times.

What?? How do I do this?

Whenever you accidentally delete a file, you can right click in the project window where you deleted it and right click in the empty space and click "Undo Delete" and woah! It's back! Crazy right? If that doesn't work, check the trash bin on your computer.

Unity Tips

How to Easily Test Your Dynamic Bones / Physbones

This process works the same way for Physbones!

Tired of going back and forth tweaking your settings, then hitting play to see you still can't get those dynamic bones looking nice and having to repeat? Boy do I have a solution for you!

Step 1. Lock it Up

Navigate to whichever bone has your dynamic bone component attached and click the "Window Lock" icon in your Inspector.

image-1645836922452.png

Step 2. Tweak to Your Heart's Content

Locking the Inspector lets you test your dynamic bones much more easily by preventing it from changing whenever you switch to a different GameObject.

image-1645837102215.gif

"But wait!" you exclaim, "If I do it this way my settings won't be saved when I leave play mode!" I have a solution for that as well.

Step 3. Copy/Paste Component

When you're done adjusting your settings in play mode, select the three dots on your Dynamic Bones component and click "Copy Component" then exit play mode.

image-1645837309332.png

Then click the three dots again in your Dynamic Bone component and click "Paste Component Values"

image-1645837404234.png

And you're done!

It is important to note that you'll only be able to do one at a time via this method since you can only have one component copied at once. You can work around this though by creating an Empty GameObject in play mode and then copying your Dynamic Bones from your avatar to that Empty and then copy the Empty GameObject, exiting play mode, and then pasting the Gameobject, then you can copy the saved values from that onto your actual avatar.

Remember to unlock your Inspector window when you're done!

 

Unity Tips

Physbones: How to Grab Them in The Editor

You can grab and test physbones in play mode, how one may ask? It's pretty simple!

Step 1. Add a camera to the scene

image-1646691350252.png

Position the camera however works best for what you're doing, the shortcut Ctrl+Shift+F will align the camera with your current scene view.

image-1646691380357.png

Step 2. Change the Camera's Tag to "MainCamera"

image-1646691332654.png

Step 3. Go into PlayMode and Test!

image-1646691554867.gif


Unity Tips

Physbone: Angle Limit Substitution for Colliders

Learned this from this tweet by Tupper which has a video demonstrating it.

You can use less physbone colliders by clever use of physbone angle limits alongside the pitch, roll, and yaw fields.

This can generally be used to prevent things such as hair, skirts, capes, etc, from clipping into your avatar's body. It helps keep your performance ranking high by allowing you to eliminate some unnecessary physbone colliders on your avatar.

In Blender, you would enable "Axes" under your armature's viewport settings. This allows you to see the XYZ of each bone at it's head.

image-1662164888983.png

image-1662165229654.png


When done, XYZ axes should appear at the head of your bones, the one we want to pay attention to is the Z axis. (Note: I have every bone except for the hair bones hidden in this image so that it's easier to see)

image-1662165570173.gifWe want to use CTRL+R in Blender to rotate the Z axis facing either inwards towards the head (as seen above) or outwards facing away from the head, either will work.



Export the model to Unity.

Save your existing scene in Unity before exporting the model and then go to a different scene, reopen the desired scene after the model has been fully exported and is in your Unity project. Otherwise it may screw with your model in undesirable ways. Reconfigure the model's rig by resetting the pose and enforcing T-Pose in the configuration screen. You should be able to safely return to your avatar's existing scene. If your model ends up contorting, I recommend using Pumpkin Tools to reset pose.

In Unity, adjust your physbone angle limit to whatever how much you believe you'll need, then adjust the pitch so that the blue angle cone is pointed away from your avatar, enough so it won't clip into yourself as much. Test in play mode to see if it clips through your model.


If your model has longer hair, or a long cape, I recommend using curves for your angle limit and pitch to fine tune it.

image-1662166432461.gif

As we can (sort of) see below now, it helps prevent a great deal of clipping into the model! Especially when moving backwards.

image-1662166633630.gif


Unity Tips

Contacts... How Do They Work?

image-1646942815727.gifGive headpats to the shadow creature

In this semi-guide I'll explain how contacts work to my own limited understanding of them, great idea right?!

I recommend reading the official documentation for contacts for a more technical look at how they function! This page is just the utmost basics.

The Contact Receiver Component

image-1662169051741.png

I won't be going through every function of the component as the official documentation lists it all pretty clearly.

Collision Tags

This is where you choose what the contact receives signals from when touched by the corresponding contact. You can add pretty much as many as you want, including custom tags which are really cool! Those will be talked about in another page.

Reciever Type

There are three types of receiver types, Constant, OnEnter, and Proximity.

I may be slightly incorrect on some of these

Constant - When a sender (as determined by what is listed in collision tags) touches the reciever it'll change the value of a parameter. For Float values, it will be 1.0, for Bool values, it will be True, for Int values, it will be 1. It is recommended to use a Bool

OnEnter - When a sender touches the reciever, the value will reset on the next frame. For Float values, it will be 1.0, for Bool values, it will be True, for Int values, it will be 1. It is recommended to use a Bool. You can set a "Min Velocity" which dictates how fast that sender has to move to trigger the contact. It is recommended to use a Bool

Proximity - Gives a float value of 0.0-1.0 depending on how close a sender is to the center of the contact. When multiple senders touch the contact, it'll prioritize the closest sender.

Parameter

This is the parameter is updated when the reciever is touched by a sender. This can be used in your Animation Controllers to drive animations as you would with any other parameter.

These do not have to be listed in your expression parameters.


Unity Tips

Cross-Avatar Interactions with Avatar Dynamics

VRChat #AvatarDynamics enables Avatar-to-Avatar Interactions.

Have you tried the spray can in the Avatar Dynamics Hub world?

This is a Contact Receiver. It reacts to a Contact Sender from @Yash884's avatar lighter!

VRCContactReceiver / VRCContactSender: https://t.co/QNAfEriHQI pic.twitter.com/ss2ut2ZACT

— Haï~ (@vr_hai) March 7, 2022

Contacts allow you to have cross-avatar interactions such as the one above.

The lighter has a VRC Contact Sender tagged with "Fire".
The spray has a VRC Contact Receiver tagged with "Fire".

When the lighter comes in contact with the spray, the spray bursts into flames!
The spray enables its own VRC Contact Sender. It will light up other Receivers! 🔥 pic.twitter.com/FYBHPC7ROn

— Haï~ (@vr_hai) March 7, 2022

The tweet above explains it perfectly, by creating a custom tag as such, you can make a contact reciever that allows contact senders with the same exact tag to send signals to it.

Both tags must have the exact capitalization!

image-1662171033103.png

So if you were to create a Contact Sender with a the tag "Fire" you could interact with the avatar's spray can in the tweet seen above and set it ablaze! You can apply this idea to nearly every avatar to create special cross-interactions with avatars!

Unity Tips

Always Reconfigure Your Rig

If you make any changes to your rig, move a bone a little. Delete a bone, rename a bone. 

Reconfigure your rig in Unity.

Not doing so can create a myriad of problems, such as bones becoming long and contorted, or turning in odd ways.

Go to your model file, go to "Rig" in the Inspector window, then click "Configure" once you've done so, scroll down until you see the "Pose" button, click that and click "Reset Pose" then after that, go into Pose and click "Enforce T-Pose" then hit Apply. This should automatically fix any issues with the model. Note that if you have any animations that affect non-humanoid bones then you may have to fix them, this is just part of the process.

Unity Tips

Reduce Your Max Particles!!!

I'll be fully honest I am very inexperienced with particles, but this is one thing I know that a lot of people apparently don't.

Reduce the Max Particles in the main module to just what you're actually using, by default, it's set to 1,000. This will cause VRChat to count that Particle System as if it was actually using all 1,000 particles, while it probably won't actually affect performance, due to how performance ranking works it’ll mark your avatar as medium or lower.

image-1645655781357.jpeg

(The performance rankings from Excellent to Poor with the particle thresholds.)

Unity Tips

Nesting Parameters

You can nest parameters by naming it along the lines of "ParentParameter/ChildParameter" to nest parameters inside each other like so. Helps a ton when you have a large amount of parameters. Nesting can also be done on the Shape Keys of a model.

image-1645647556630.gif

image-1645647601124.png

Unity Tips

Don't Waste Parameter Space

Many avatar creators, including myself have made the mistake of putting VRChat's default parameters into their parameter staging file.

While this typically doesn't cause issues, it does take up unnecessary space you could use for other things. Default parameters are already networked and don't need to be put into the parameter list.

In short: make sure you don't have any of the parameters listed here in your parameter file, (animators are ok!)

image-1646862147696.png

Unity Tips

Open Multiple Scenes at Once

Have multiple variations of one avatar strewn across multiple scenes? Do you need to copy something from your main version of that avatar to all those variations? Tired of swapping scenes constantly? or want to have multiple lighting setups to see what your avatar looks like in various lighting? Do I have the tip for you!

You can have multiple scenes open at once by right clicking any scene file in your projects window and clicking "Open Scene Additive"

image-1646356897780.png

You'll now have two scenes open at once!

Note: If you have lights in both scenes, both will be used. If you have a Directional Light in each scene, the lighting will be very bright, turn off one of them in a scene to avoid this.

image-1646356927606.png

Along with this, I'll explain what these all do when you right click the scene name while you have multiple scenes open.

The Unity documentation explains all this too.

image-1646357288292.png

Set Active Scene

Whichever scene is set to active will be the scene new GameObjects are created in when you create a new GameObject from the "+" button in the Hierarchy.

Save Scene (As/All)

Saves the scene, saving the scene as will let you save the scene as a different one, save all will save all scenes open in the Hierarchy.

Unload Scene

Unloads the scene, but keeps the scene in the Hierarchy window.

Remove Scene

Unloads and removes the scene from the Hierarchy window.

Select Scene Asset

Selects the scene’s asset in the Project window.

Add New Scene

Adds a completely new scene to hierarchy.

GameObject

Shows a submenu for objects to create in that scene, works the same as if you were to click "+" in the hierarchy.

I typically like to use this to test different lighting setups on my models, like so.

image-1646692544461.gif

Unity Tips

Notes On Stations On Avatars

Don't Put Anything Into the "Enter/Exit Location"

This appears to cause the entire avatar to break and not load, I have no idea why, just don't do it. (This is possibly a bug?)

Don't Disable the Parent Gameobject

The documentation notes to not disable the parent gameobject of the chair.

Don't animate the stuff in the red box, you can animate the stuff in the green boxes basically.

image-1645649951702.png

Forcing an Animation

Don't put your sitting animation on the base layer! Do it on a new layer, make sure to add a Tracking Control state behavior to enable and disable what you want tracked or not by VRChat if your animation needs to animate any of those specifically.

image-1645650064054.png

 

Unity Tips

How I Test Weight Painting on Avatars

Typically most people (at least the people I know) often test their avatar using MMD worlds and such. This involves uploading the avatar which takes time and isn't really ideal. You could try converting an animation onto a character in Blender but that can be time-consuming and wonky, and it's a bit odd to do in Unity normally. I have a way that is significantly easier!

Prerequisite: Install Pumkin's Avatar Tools

Pumkin's Avatar Tools is a Unity Editor Script that adds a ton of useful functionality for avatar creation, I recommend it for everyone, I use it a ton.

I've been calling it Pumpkin's Avatar Tools this entire time and I only realized it now god help me

Using The Pose Editor

Once you have Pumkin's Avatar Tools installed, there should be a new tab at the very top of your screen of the titular name "Pumkin" then open the "Tools" dropdown and select "Pose Editor"

image.png

Once the window is open, drag in your avatar into the "Avatar" slot, or select the avatar in your Scene Hierarchy and click "Select from Scene"

image.png

You'll now have several sliders you can use to mess with your avatar! This should sufficiently assist in your goal to test weight painting, however you can go a step further and put an animation clip into the "Pose from Animation" field.

You must have usable HUMANOID animations in your project for this to work! You can find some around the internet.

Personally, I have a pack of Fortnite animations that I've had on my computer for a couple years now, so that's what I'll use to demonstrate.

HeartFortniteDefaultDanceExampleThisIsCompletelySeriousISwear.webp

With this, you can change the animation on the fly, and even use it in playmode as shown in the GIF above!  It'll also automatically loop.

Once finished, you can scroll to the bottom of the window to reset to the avatar's original pose.

OriginalPos.webp

Blender Tips

Various small and big tips for doing stuff in Blender!

Blender Tips

Various Useful Things to Know

This page isn't particularly about any "one" specific thing, but rather a bunch of small tips that otherwise don't have enough substance to them to really be their own page. This page will continue to be updated over time.

Use Quick Favorites!

Quick Favorites are incredible for shortcuts of any kind, and can speed up your workflow by a ton!

By default, Quick Favorites are bound to the 'Q' key, you can add to your quick favorites menu by right-clicking any button in basically any menu. You can remove options from your Quick Favorites by right-clicking them in the Quick Favorites menu to unassign them.

GIF of the Quick Favorite's menu in action.My list of what I keep in my Quick Favorites


Personally in addition, I like to have my Quick Favorites button set to the extra side button on my mouse for extra convenience, I recommend it for you too if you have a side button on your mouse!

image.png

Local View

Local View is a feature of Blender that allows you to isolate and focus your currently selected object(s), this is much quicker than having to go individually hide other objects that are in your way! You can click '/' on your keyboard with a selected object to enter and exit Local View.

LocalViewGif.webp

Viewing Textures in Solid Mode

If you're working on textures in Blender and need to see if it looks right, you may be annoyed with having to adjust each material to remove the specular from it where there doesn't need be. Well, do I have a good tip for you! There is two ways to go about this, you can just go into the viewport settings of material mode and change the render pass to "diffuse only" or whatever you need, but I personally prefer my method because it gives me a bit more control.

Note: You need to have your diffuse texture node selected in the material's shader editor, whichever texture node is selected in the shader editor is the one that will be displayed in solid mode!

showing.webp

Blender Tips

How to Import Addons for Dummies

Step 1. Download the addon

I recommend CATS as it has plenty of tools to use for creating avatars for VRChat.

Once you have the addon downloaded, it should typically be in a .zip file.

Do not unzip/extract the file or it may not work!

Step 2. Open Add-ons

In Blender, at the very top left of the window click "Edit" then "Preferences" click "Add-ons" in the new window.

Step 3. Actually Import and Enable It

Click "Import" in the top right of the window next to "Refresh" and select the addon .zip you downloaded. It may take a moment.

Once you have imported the add-on click the searchbar in the window and search the name of the addon, then click on the checkbox to enable it. You may have to restart Blender in some cases to ensure it works properly. Please remember to read the documentation of the add-ons to find out how to use it.

Blender Tips

Saving Startup Files

Are you tired of having to delete the default Blender objects when making a new .blend file? Do you like having Active Zero Weight on but hate having to turn it on each time?

Look no further because Blender has a button for that!

First, you're going to create a new .blend file of course, then set up all your settings exactly how you want them, any changes you want to make without having to go through and change them each time.

Then go to File>Defaults>Save Startup File!

image.png

Now whenever you create a new .blend file in Blender, it'll automatically open with whatever settings you have turned on in that saved startup file!

Blender Tips

Weight painting: Active Zero Weight Overlay

When weightpainting, everything that isn't weighted will be represented by blue, unfortunately this can cause issues as some parts will be ever so slightly weighted and hard to see. You can turn on "Zero Weights > Active" in the Viewport Overlays to turn all zeroweight to be black instead, improving workability.

image-1655186433839.png

Blender Tips

Texture Painting External Projections

In Blender, there's this pretty nifty feature that I quite literally learned about 10 minutes ago before writing this.

In Texture Paint mode, under the Tools tab, at the bottom under Options, there's an "External" tab with a few options. This right here will take a snapshot of your current view in your 3D Viewport and open it in your selected image editing software.

"How do I tell Blender which Image Editor to open?"

If you do not have an external image editor selected in Blender, go to your Preferences>File Paths>Applications and select the .exe of your preferred image editor.

image-1649970932720.png

image-1649970642878.png

I'm using Clip Studio Paint for this, however any image editor should work.

image-1649971081327.png

From here you can draw on top of the image project however you like, once you're done, save the image.

Overwrite the existing image or it won't work!

Once done, you hit "Apply" in Blender and the projection will be applied to your model!

image-1649971290548.png

Although be warned the lower res your texture is the worse quality it'll come out. I reccommend segmenting the part you're working on like so to minimalize potential issues.

image-1649971389346.png

Blender Tips

Armature/Rigging: Bone Groups

In Pose Mode you can create color coded groups of bones to easily make selections and make it easier visually to distinguish bones!

image.png

I highly recommend making sure that you keep your model in a .blend file to work on separate from the .FBX! It can help in preventing screw-ups and losing progress. Bone Groups won't be saved when exported and re-imported to Blender.

This can be done in Pose Mode by going to Armature and going to Bone Groups

image.png

Here you can create/remove new bone groups by clicking the + or - to assign a set of bones to a group, select all the bones you want, and click Assign with the group you want them added to highlighted. Typically, I keep the main rig that VRChat uses in one bone group, and group bones by what they're for. It makes it easier for editing and selecting a bunch of bones at once by selecting Select.

image.png

You can also assign colors by clicking the color dropdown and choosing whichever color set you like the most. You can also choose Custom Color Set to create your own preferred colors.

 

Blender Tips

Normals: Data Transfer Normals for Cel-Shading

Ever wondered how to get good looking shadows on your anime face? Well, look no further!

This is the "lazy" way of doing this. Doing it manually can look better, but it's good to use this as a basis if you plan to do it manually!

image.png

In 3D models, shadows are controlled by a mystical system called "normals" basically, each vert has a direction it points that tells it how shadows should look when cast on it. Below, we can see the normal directions of the top two models. The pink lines indicate where the shadows will "connect" if that makes sense?

image.png

You can view the normals on your model via the following settings shown before.

image.png

The Actual Meat of This Page

So how do we make our shadows look a bit nicer?

Firstly you'll want to use a matcap such as the one I've been using to see how your normals will look, I suggest playing around with it as you go along so you can get it exactly right!

image.png

Step 1. Make a Cube, Give it a Subdivision Modifier

image.png

This is what we'll be using to project our shadows onto our model.

image.png

Place it over the mesh you will be adjusting the normals of, in this case, the head! Make sure it completely encompasses it.

Step 2. Add a Data Transfer Modifier to Your Mesh

You can hide your "Cube" for this step, don't delete it yet!

image.png

Add your "Cube" as your Source, then turn on Face Corner Data then click Custom Normals then change Mapping to Nearest Corner and Best Matching Face Normal

As you can see, our face is looking a bit odd! This has adjusted how our shadows will look. I personally find this to be a bit much though, so I often mess with the Mix Factor to get a balance of smooth and defines the lines of the face.

image.png

I often go for 0.6-0.8 for mixing, it gives a good balance between the smoothness I'm looking for while keeping defining features such as the mouth and nose.

Step 3. Apply the Modifier and Export!

MAKE SURE YOU DELETE THE CUBE! OR YOU MAY ACCIDENTALLY EXPORT IT WITH THE MODEL AND HAVE AN EXTRA 49,152 TRIS!

image.png

Tada! Look how much better that looks! You can use this for more than just faces too! I use it for hair as well for a smoother look, I adjust and extrude the cube so that it fits the entire hair mesh, then do the same thing.

 

Blender Tips

Realtime Texturing with Clip Studio Paint & Clip Studio Modeler

This one isn't mainly about Blender, however, if you own Clip Studio Paint, you can use an app that comes with Clip Studio to texture in (mostly) real-time.

Texturing.webp

There are many pros & cons to this method of texturing things. Which I'll list below:

Pros

Cons

*You can use a large sphere with inverted normals to change the background color when texture painting.

image.png

image.png

While it isn't exactly a replacement for Substance or similar programs, it's great if you're unable to use them for one reason or another, or you prefer working in Clip Studio.

The Actual Guide

For this to work, you must have a particular material setup in Blender, Clip Studio Modeler is very picky about this. Luckily for us, it's just the default settings for new materials. You need the texture you're working on inputting into the Base Color of a Principled BSDF shader, this is important or CSModeler will NOT recognize your texture.

image.png

Once your materials have been set up properly, you can export the mesh into a folder.

Now let's open Clip Studio Modeler, you can open CSModeler by clicking the "Open Clip Studio" button in the top left of Clip Studio Paint

image.png

Once the Clip Studio window opens, click "MODELER" in the top left corner. If this option does not show up, you may need to download the program from Clip Studio's website first.

image.png

Once CSModeler opens, select "3D Character" and then click "Create 3D character"

Even if your model is not a character/avatar or such, select 3D Character anyway, as otherwise you will not be able to use the realtime texturing.

image.png

Once you've created the 3D Character file, on the right set of panels under the Character configuration window, click the "Body" tab on the top, and then click "Add from file" at the bottom, select your model from the file explorer prompt to open it.

image.png

Your model should now show up in the main viewport, it should have its texture applied to it from Blender, if it is untextured, make sure you followed every step and that your texture is saved externally outside of the .blend file.

Once your model is loaded and ready, open the folders in the Body tab, and go to the "Surface material information" folder and select the texture you wish to edit, then click the "Edit with PAINT" button at the very bottom of the screen under the "Character information" window.

image.png

A new window called "Editing Texture" will now open and the texture will also open in CSPaint, you can now texture it however you wish as you would with any other image in CSPaint! Make sure to remember to save when you're done. I'd recommend putting the Editing Texture window on a second monitor if you have one.

image.png

Helpful External Resources

There are many helpful guides and resources across the internet I'd love to share but I don't have the justification to just make a single page for each with just a link in it, so this is here as a list of various resources that have helped me in my processes! I'll be adding to this list over time.

Guides

General

Royal Skies (Youtube) - A great Youtube channel that offers quick and useful tutorials for Blender and various short tutorials on small topics, has saved my patience on more than one occasion.

Rigging

GuiltyGear Xrd Development Staff Talk: Modeling for Skinning - A presentation by Arc System Work's dev team on various professional principles for "skinning" to help with weight painting and rigging overall.

GuiltyGear Xrd Development Staff Talk: Bone Placement Tips for Action - A presentation by Arc System Work's dev team, goes over ideal bone placements and common mistakes for bone positions that result in odd pivots.

TexTools (Free) - Excellent for creating good UVs, it's absurdly useful and I use it all the time. It has saved me multiple times when default Blender has failed in UV tools.

Abormal (Free) - A tool for editing vertex normals, incredibly useful for creating precise stylized shading.

Retopoflow (Free) - A tool for doing retopology in Blender, is incredibly useful and high quality.

EdgeFlow (Free) - Great for making nice curves among other things, I use this all the time.

F2 (also known as Spider Script) (Free) - Incredibly useful for my style of modeling, allows you to select a single corner vertex with two connecting vertexes to create a full face. This one is included by default in Blender, no extra downloads, you just need to enable it.

(here's a gif below of me using F2 and EdgeFlow in action)

f2andedgeflow.webp

SKkeeper (Free) - Allows you to keep shape keys when using modifiers such as the mirror modifier, I should heavily note that you should not entirely rely on it, it does not always work all the time.


Good Practices

The following is a general outline of things you should/shouldn't be doing to make your life easier and avoid heartache! This will be a little more casually written.

Optimize as you go

Many people believe optimization is something you do last when creating something, this is far from the truth and you should be working on optimization all throughout your process. Always keep in mind of things you can do to reduce the performance cost of your avatar, such as atlasing.

If you save optimization for last you might feel overwhelmed, while if you spread that task out into other tasks while you're doing them will tremendously reduce the amount of work you have to do and you can even find things you can improve that you wouldn't have noticed if you saved optimization for later.

Keep a .blend backup of your avatar

You should also save a new .blend file whenever you make large changes to your avatar. You don't want to end up losing a day's worth of work—or potentially your entire avatar because you decided to import-export the same .fbx over and over. This is also helpful if you're using things such as Bone Groups to organize your model.

DO NOT UNPACK YOUR AVATAR'S PREFAB

I do not care if you think makes your workflow easier! Do not unpack prefabs! unless you are doing an extremely obscure avatar trick that absolutely requires it. DO NOT UNPACK YOUR PREFAB. This is primarily because, if you ever need to make changes to your avatar's .fbx, especially the rig, your unpacked prefab of your avatar can completely explode and be nearly impossible to fix in some circumstances. DO NOT UNPACK YOUR PREFAB UNLESS YOU KNOW WHAT YOU ARE DOING.

Back up your projects!

This is kind of obvious, but trust me! You'll never know what could happen!

Always use the most recent version of your tools

Generally, you should always use the most recent versions of any shaders, tools, etc. you use. It'll often help fix any issues you have.

When exporting a UnityPackage, do not export shaders with it!

I see this happen a lot, especially on paid models seen on BOOTH or Gumroad where the creator will include the shader it uses within the UnityPackage. This isn't good for a multitude of reasons, but primarily because it can cause issues for whoever has to import your package if they already have that shader installed. This can also be against the shader's license, especially if it's a paid shader! Generally, just make sure you only have the things that are absolutely necessary in your UnityPackage