Avatar Creation for Social VR, Part 4: UV Layout
Note: This series is an ongoing work in progress, and the video tutorials in particular will be updated and published publicly after I have finished recording the entire series. For now, the visibility for the videos has been set to shareable link only – if you have feedback on their clarity, pacing, or even whether or not the jokes land, I would welcome it in the comments here or on Youtube.
- Part 1: Introduction
- Part 2: The Blender Interface and Project Setup
- Part 3: Character Modeling
- Part 4: UV Layout – You Are Here
If you’d like to follow along using the Galiote model I created in the last video, here is the project file for this video.
Avatar Creation for Social VR, Part 3: Character Modeling
Note: This series is an ongoing work in progress, and the video tutorials in particular will be updated and published publicly after I have finished recording the entire series. For now, the visibility for the videos has been set to shareable link only – if you have feedback on their clarity, pacing, or even whether or not the jokes land, I would welcome it in the comments here or on Youtube.
- Part 1: Introduction
- Part 2: The Blender Interface and Project Setup
- Part 3: Character Modeling – You Are Here
Welcome back! It’s now time to sit down and get your hands dirty, we’re going to spend a lot of time pushing verts and pulling faces. In this section we will run through character modeling, where we start from a cube, and finish with a character mesh.
The previous entry in this series focused entirely on the technical details of how to use Blender for polygon modeling, whereas now, we get into the workflow and thought processes involved in character modeling.Unlike the other parts of this series, poly modeling really makes the most sense when demonstrated, so I encourage you to watch the video first, even if you intend to work from this written walkthrough.
We’ve got our reference planes and the mirrored cube we set up last time ready to go. The process of modeling this avatar took about eight hours, so, again – be patient with yourself, take your time, and try to have fun.
Continue reading “Avatar Creation for Social VR, Part 3: Character Modeling”
Avatar Creation for Social VR, Part 2: The Blender Interface and Project Setup
Note: This series is an ongoing work in progress, and the video tutorials in particular will be updated and published publicly after I have finished recording the entire series. For now, the visibility for the videos has been set to shareable link only – if you have feedback on their clarity, pacing, or even whether or not the jokes land, I would welcome it in the comments here or on Youtube.
- Part 1: Introduction
- Part 2: The Blender Interface and Project Setup – You Are Here
- Part 3: Character Modeling
So! Welcome back! This is part two of the series, which introduces the Blender interface, setting up your project with reference image planes and your starting cube, and introduces the tools you’ll be using for mesh editing.
We’re going to create this avatar by manipulating edges, faces, and vertices individually, by cutting, tweaking, and extruding until we have a completed model – a process sometimes called poly modeling, or box modeling.
Later, I’ll be producing another series after this one that gets into the sculpting workflow, but if you’ve never modeled anything before, it’s probably best to start with an understanding of box modeling. It’s a process that you can do entirely with a mouse instead of a stylus, it will get you acquainted with the blender interface, and doing everything edge by edge, vertex by vertex, will help you gain an appreciation for your polygon economy, which is vital to have, when creating avatars with a decent performance rating.
Continue reading “Avatar Creation for Social VR, Part 2: The Blender Interface and Project Setup”
Avatar Creation for Social VR, Part 1: Introduction
Note: This series is an ongoing work in progress, and the video tutorials in particular will be updated and published publicly after I have finished recording the entire series. For now, the visibility for the videos has been set to shareable link only – if you have feedback on their clarity, pacing, or even whether or not the jokes land, I would welcome it in the comments here or on Youtube.
- Part 1: Introduction – You Are Here
- Part 2: The Blender Interface and Project Setup
- Part 3: Character Modeling
Hello! My name is Root, and I would like to talk to you about the process of creating an avatar for use in VRChat and other social VR applications. We will be making this avatar from scratch, primarily using the popular 3d modeling and animation software, Blender. But first let me take a moment to talk about why I am creating this series, who it is for, and what to expect.
Continue reading “Avatar Creation for Social VR, Part 1: Introduction”
Pillbox
After completing about four or five of Unity’s project-based tutorials in 2016, I wanted to try making my own very simple 3rd-person branching narrative game. I had a couple of goals for this project:
- Learn to use Probuilder (which at the time was still a paid addon and not part of Unity)
- Create a simple UI
- Integrate Yarnspinner and learn to use it for the basic Twine-style branching narrative of the game.
That was it, that was the MVP. I did my best to scope down but even then it turned out that that was a lot to bite off for my first tutorial-free solo flight.
Probuilder and progrids turned out to be super easy to figure out, especially if you have any prior familiarity with 3d modeling applications. Learning a new one is like cooking in someone else’s kitchen: you don’t need to learn how to cook all over again, you just need to figure out which drawer the spatulas are in.
Next I needed some NPC’s. I started calling the game Pillbox because I wasn’t going to attempt any kind of polished 3d assets, just the Unity capsule primitive. I gave each of them different colors and stuck some simple animations on each of them so they’d each feel like they had a different personality.
Then I needed the player. Another capsule, with a player movement function.
So – at the time I’d gotten really into Unity’s animation features, how you can animate literally any parameter of a gameobject, and decided that the player capsule should have a walk animation, and the walk animation should have particles, because I think I saw a Mark Brown GMTK video about game feel and decided that I should just have all kinds of it.
The dust cloud particles were configured to only activate while the player capsule was at the lowest point of the bounce animation. So it wasn’t just spraying dust clouds constantly, only when the pill hit the ground. I was really, really proud of this. (I still am.)
Next step was UI. I needed to signal to the player that the NPC’s could be interacted with, and also give the player a way to interact with them. To do this I created collision zones for each of them that would trigger a dialogue balloon the appear over each of them. I also looked up a chase camera tutorial that Brackeys did because needs more game feel.
Please take a moment to appreciate that not only does the dialogue balloon icon have a fun bounce animation to draw your attention but also? Also? The icon, is, itself, animated.
At the time I was working from the unity 5 animation cookbook and I think I was determined to apply every possible animation recipe in the book. I do not regret the effort spent. Animate everything, it rules.
Next step was adding the dialogue UI. This took wrestling with the UI canvas to make dialogue windows that pop up and could be interacted with, and would then close when dismissed.
This function was pretty straightforward, building it out so that each of the characters had distinct greetings and had character portrait icons took a bit more work. Please note: the NPC icons also wiggle. As does the ‘dismiss’ X in the bottom right corner.
At this point I was ready to add Yarn. And it turned out: adding Yarn was well beyond my ability as a programmer at the time. I think it would have made more sense to start with one of the Yarn sample projects and modifying it by adding my work to it, rather than trying to add it to my work. And the documentation at the time assumed a level of familiarity with c# that I did not have, so this is where I flamed out. Still, I learned a lot up to that point. Yarnspinner’s come quite a ways, I’m curious to discover if it plays nice with VRChat. Interactable NPCs in a VRC world that have branching dialogue and pull variables from world state would be interesting to see.
Watercolor Assets
So, lately I’ve been getting really into VRChat as a creative platform, because of how quickly and (relatively) easy it is to get worlds and models into a game space that is shared by and used by a lot of other people. I used to fool with Unity a lot, but making game prototypes didn’t quite have the same immediate feedback dopamine loop that furry art does (and, it turns out, that my pre-diagnosis ADHD brain needs), but VRChat’s creator tools do a great job of closing that gap: you can build a level, get it into labs, and invite friends to try it out with the same speed and ease of posting an image to an online gallery.
While I’m working on my first world, though, I wanted to dust off some of my older projects to show what I’ve already done with Unity.
I used to do a lot of watercolor painting and worked out a technique where I’d do the preliminary sketch digitally, usually in Clip Studio Paint, and then print it in pale cyan directly onto watercolor paper, then ink over the pale blue with a waterproof india ink. Then I’d stretch the paper as normal for watercolor: soak the paper til it’s saturated, then staple it to a piece of MDF to let it dry. This prevents the paper from warping too much when you get it wet, making the watercolor easier to control.
Once that was done, I’d finish the piece in watercolor and send it off to the client. Most of the watercolor work on this site was done this way. I have a pretty nice fine art scanner that does a decent job of capturing color fidelity.
I used this technique to do a webcomic for several years, and when I started playing with Unity, I got it into my head to try to paint textures for 3d objects in watercolor using the same method: printing the unwrapped UV layouts of objects onto watercolor paper, painting them by hand, and then scanning them back in, compositing the scans into a texture map and applying them to the models. I also painted several quick tufts of grass to apply to grass cards, modeled after the fact.
So far so good! Then I got them into Unity:
This was about as far as I got before I needed to put the project aside for paying work, but I’m looking forward to building out this idea further in a VRChat world as soon as I clear my plate of my current work. The idea of having friends walk around in a watercolor illustration is very exciting to me.
Morgan Wolf
The third solo Unity project started as a commission for my friend Morgan, of her fursona (also named Morgan). My goals for the project were these:
- 3d model a character and keep it under 100 triangles, for a mobile/retro spec style.
- Model with Maya’s modeling tools – I’d been using Silo for years and it was starting to show its age, and I wanted to get used to something more current.
- Use a very small texture map with no mipmapping or texture filtering, to keep the chunky hard pixelated edges on the textures.
- Learn to rig and animate with Akeytsu, which was a new tool at the time that was aimed at indie game studios.
- Get it into Unity, and get it playable
Started with in Clip Studio, drew a concept front/side view:
I box modeled the character and the final tally came in at around 800 quads.
Initially I did the UVs in Maya and then started painting the diffuse map in Photoshop but the further along I got, the less and less satisfied I was with the way it was looking. I did discover that it made more sense to paint portions of the diffuse map first, to get it pixel perfect, and then drag the UVs into place with pixel snapping turned on, rather than try to solve the UV layout blind, though.
So about halfway into painstakingly pixelating the diffuse map in Photoshop, I decided you know what, actually fuck this and then brought it into Silo to rejigger the UV’s for handpainting in CSP, which is much more fun. You can also see that I ditched the armor. Usually the way it goes is the more work I put into a project, the more work I look to eliminate.
Once the diffuse map was done, I was ready to start rigging. Akeytsu is a very interesting little application that is to rigging and animating what Silo is to modeling – it’s not trying to be a fully featured software suite, it’s trying to do one specific thing very well, and to do it in a way that is painless and intuitive. I’d already had some prior experience with rigging and weight painting in Maya, and Akeytsu didn’t make me waste a lot of time looking for where they keep the spatulas, letting me get to cooking right away.
And, similarly, once the character was rigged in Akeytsu, the animation functions are also very streamlined while also being very similar to Maya, so I was able to create a couple of idle animations, and a walk and a run cycle in a couple of weeks. Looking at it now, I could have spent a bit more time tightening up the walk and the run cycles because they both look kinda swimmy, but still. Character animation is a discipline I’ve got the least amount of experience doing.
With idle, walk, and run animations done, the last thing to do was import it into Unity. I’d done enough of the project-based tutorials and had been working out of the Unity 5 Animation Cookbook that I was confident I could dummy up a functional character. Importing from Akeytsu to Unity was painless, though it did take some googling to figure out how to stick the diffuse map into the shader, because that was new. But all of the animations showed up where they should be.
From there it was pretty easy to create a player gameobject with some simple player controller movement and oh wait whoops lol it needs an animator controller too doesn’t it
Once it had an animator controller, the state machine needed a bit of script to tell it which animations to play for which state and all the transitions had to be set up – rather than having a separate ‘run’ button I just had her build speed the longer she stayed in motion, so in the course of a couple of seconds she’d gradually transition from ‘walk’ to ‘run’.
I exported the project as a web-playable demo and put it up on itch, if you’d like to try it yourself.
Morgan passed in 2020, and she was a tremendous person and a bright point of light in the lives of everyone who knew her. I’m very grateful to her for the support she showed my work and for her friendship. I learned a lot from this project and I was very fortunate to have a client who was willing to throw money at me to do something so personally enriching.
How to Draw
I need some lorem ipsum to set my blog up, so here’s an essay I wrote a year or two back. I was asked how to get started drawing, and I gave this answer:
1. Identify the thing about drawing that interests you – a specific subject matter, telling stories, making art to make friends happy, etc, and start with that. Find the fun, because fun is what keeps you interested, even when it’s hard and nothing you draw looks as good as you want it to and nobody’s paying attention to your work. I think a lot of beginners get discouraged when they approach artists they look up to for advice, who then immediately begin barking about fundamentals, gesture drawings, drawing from life and so on. All of that can wait.
There’s a lot to be said for just having fun drawing whatever you want, in whatever way that you like, because that initial exploratory scribbling is going to build hand-eye coordination and help you overcome the fear of a blank page. Drawing as a creative habit has a very low barrier to entry – all you need is a paper and a pencil, after all – and the temptation among experienced artists to immediately turn that initial spark of interest into a tedious chore is, I think, a fantastic way to scare people off of it.
Continue reading “How to Draw”