Published: June 18th 2025, 11:12:58 pm
So something I've been doing for like a year now is working on learning Unity, Blender and Substance Painter by working on VR Chat avatars. I think these skills are going to be valuable especially since I've gone from being afraid to touch Unity to having opinions about it. Some things being discussed include developing VR Chat avatars with Jonas, but also building worlds and environments for VR Chat as well as perhaps future game projects?
As it is though I find it a little difficult to write this post because of how, mm, tangential it feels to most of my other projects. It's definitely skill training, don't get me wrong, but a lot of this so far is essentially kitbashing. Of course, I kitbash all the time; using 3D models for comics and the like is itself a kind of kitbashing, and kitbashing effectively is a skill in and of itself. But I do want to share this stuff because at the very least the Substance Painter jobs, and learning how to manipulate shaders, and editing (sometimes drastically) various models is still part of my craft, dangit, and sometimes I just wanna show it off.
While I don't recall the source for everything I've picked up I'll at least try and name everything I can. I apologize profusely for the Gumroad links. Please encourage anyone you know doing this to list in Jinxxy instead.
This model is based off of X-Doggo by Tosca. This was my white whale for several months as there weren't really any kangaroo avatars that clicked with me, so I took one with a body and expression set I liked and turned it into one. This was one of the more difficult ones to do, as I needed to get very familiar with Blender's mesh manipulation tools in order to not only get the muzzle the right shape, but also give him those kangy feets. It's very important.
Most of my avatars I kinda want a gimmick to them, and in West's case that's being able to shapechange on the fly--a judicious use of material swapping in this case, but also becoming familiar with Blendshapes is crucial, especially if I want shapes not originally supported by the model.
Also based off of X-Doggo, I made him before West. He was also my first crack at manipulating normals--normals being the data that tells the renderer which direction a given pixel is facing for purposes of casting light on it. It's very useful for making low-poly meshes seem higher-poly.
Based on Chibi Mammal by Skip4D. This was before I made the full-size West and was a lesson that settling for feels right is much preferable to looks 100% correct. Oh, and the robot arms are the MechaBappers by violentpainter.
Based on Jinxed Dog by dont jinxit. It's always kinda funny that when I see a model by someone else my brain immediately goes: okay but cats and dogs are way too common, what it if it was a different species. And I immediately make it a different species. This does... not always work out well, but when the shapes are simple enough I can usually manage. The Legally Distinct From Nerf Gun is the Plastic Toy Gun by Pointless Creations.
Based on the extremely popular Hyenid by alber. I had the hardest time getting her look together, but the Fluffy Sidepart by snyderdragdire really gets her look together. I've also just kinda like... played dress-up with her like she's a barbie doll. I feel like I'm being a fashionista. "Who are you wearing?" well in this case it's the Croptop Hoodie by Cheekii, Hyenid Harness by Thine, Chaps and Bodysuit (minus the Bodysuit) by Myranda Woof... she's also got the Fire-Breathing & Flame Sneeze by violentpainter.
But probably more importantly is that, where possible, I use the model-specific muscle textures by Mos. Like I said, this is kitbashing; Mos's technique is currently a lot cleaner than mine and I still have a lot to learn about baking normals and ambient occlusion and depth maps and etcetc. This gets super complicated.
Something else that's a bit hidden about all this model work is the stuff I have to do behind the scenes for further customization. Almost every creator has their own solution to gesture mapping, which is the VRC way to showing expressions without face tracking. I, personally, have my own preferences for this--I prefer quick snappy emotes, and the vast majority of what I want are just various eye positions, so sometimes I have to rebuild these animations from the ground up--this was especially the case with the Hyenid, which has slower and more deliberate expression animations. I think this might count for a credit in a college course somewhere.
You may have known that I first got into VR Chat using Ghostblaze by QuaggyCharr. While I did love it enough to make a new character based on it, after some time I found it simply wasn't sufficient for me anymore. It's cute, yes, but the facial shapes weren't what I was going for, and I really wanted something with more modability. Well, turns out QuaggyCharr also released the Waggan which is so much like a typhlosion I could swear they used Ghostblaze as a stepping stone to a much more complete avatar kit. It's so comprehensive that most of the clothes that Pyr 2.0 is wearing comes with the base model kit--and of course, I'm using the muscle textures by Mos because why wouldn't I, he looks fabulous with them.
The past few days I've been tinkering with presentation a lot more, part of which you can see with the ghost form shader I put on him; while a lot of this has to do with the robustness of Poiyomi Shader, this is not a simple toolkit. Getting multiple separate meshes to render transparently on top of each other seamlessly without resorting to raytracing is basically an unsolved problem in computer science thus far, but there are techniques to fudge it until it's Good Enough.
I have many other characters I've put together as well, though with many of them my pickiness for the process had grown increasingly finicky, so I'm often searching for new models that feel good and for which I have a character who could be applied. But of course, it'd be so much easier to have a model custom from the ground up, and slowly, bit by bit, we're getting skills together to do just that...