Why is it that custom clothes are often just a bit... off? Like they fit just a little big on the character, or don't quite fold or (procedurally) animate well, or they look too simply textured compared to their own game. Where's this uncanniness come from?
Humans are really intimately familiar with clothing because we've been wearing clothes our entire lives. We understand subconsciously how the different parts of clothes are supposed to fold, deform, and fall - so much so that when clothing doesn't do that, it sticks out to us as uncanny. These kind of expectations are similar to other things we're extremely familiar with - food, human movement, human anatomy (especially faces), and so on. We're basically hardwired to notice these kind of differences and flag them as weird.
Clothing in video games is nothing like clothing in reality. The attributes of real clothes are determined by things like the strength and flexibility of the materials, the skill and style of construction, and the physical attributes of the person wearing the clothing. Video games don't have those kind of constraints - most of the time, clothing is either a texture painted onto a 3D model or it's a completely separate model with a separate set of textures that is swapped with the old parts of the body. As such, there's going to be seams and edges where things don't match up perfectly. Player-selected clothes tend to exacerbate these differences because they weren't assembled by professional artists who use a bunch of design tricks to make things look better together.
What is triangle count? If pokemon from Sword and Shield model has a different triangle count but looks exactly the same as in Sun and Moon model, is it the same model?
You’re probably thinking about a 3D mesh. Some people refer to it as a model, but the word “model” often carries other connotations with it. I said I wouldn’t write anything more about Pokemon in specific, but this is an opportunity to segue into a more general look at how 3D graphics work in general and I think that’s a worthwhile topic to cover, so let’s take a dive down that rabbit hole. We’ll start with the mesh. A 3D mesh usually looks something like this:
As you can see, this is a polygonal mesh for bulbasaur. It is comprised of a bunch of points in space called vertices that are connected to each other in varying degrees. These connections between vertices are called “edges”. Typically, edges are grouped into threes and called “triangles”, each of which represents a solid surface on the model. The general complexity of the 3D mesh is proportional to the number of triangles it is comprised of. As a point of reference, Spider-Man PS4′s various spider-suit meshes had between 80,000 and 150,000 triangles.
However, you may have gathered that this mesh isn’t the entirety of the 3D model. It’s is just the shape of the thing. You also need to know what it looks like, what parts are colored what, and so on. This means you need to add a texture map to it in order to see what parts of it look like what. A texture map is a 2D image that has certain established points “mapped” to vertices on the 3D mesh. It ends up looking something like this:
You can see how specific parts of the Texture Map in the upper left get applied to corresponding parts on the 3D Mesh - there’s a section of the Texture Map for the tail, the face, the body, the paws, etc. We can also have multiple texture maps for a single 3D mesh. Here’s another example - each of these guns uses the same 3D mesh but a different texture map.
Are these models the same? Well… they all use the same 3D mesh, but clearly they have different texture maps applied, each of which required somebody to create them. Let’s hold off on judgement for a moment though, because we’re not done yet.
This is a normal map:
It describes the heights and shape of a surface that isn’t smooth. It lets us make smaller numbers of triangles look like they have a lot more details without needing to break them up into significantly higher numbers of triangles. The two examples here are both using the same 3D mesh, but with different normal maps applied. Are these two models the same? Well, they both use the same 3D mesh and texture map, but not the same normal map. But let’s hold off for a moment again because we’re still not done.
There’s also specular maps…
… and ambient occlusion maps…
… and Shaders…
… all of which can be different while keeping things like the 3D mesh and/or texture map the exact same, especially between one game and another. This also is only discussing elements of the model and doesn’t go into things like the rig (animation skeleton) or the individual animations that can also be different.
There’s clearly a lot of work that goes into the creation of a 3D model. We obviously have to build the mesh but we also have to build things like the texture map, the normal map, the specular map, the ambient occlusion map, and any specific shaders. For a game like Pokemon, in some cases you might keep the old mesh and the texture map, but create brand new normal maps, specular maps, ambient occlusion maps, and shaders. So you end up with something that looks like this:
Clearly the specularity is different - look at how more shiny and reflective the Let’s Go version is. The shaders are also different - note how much better defined the lines are around the model in gen 8. The mesh itself is probably the same. The texture map might be the same. The normal map is definitely different - you can clearly see how the shadowing is different between the two, especially around the chin and lower torso. So is this a new model or an old one? My answer is “yes” - some parts of it are new and some are not. But is it the exact same model? They are clearly not the exact same model - there has definitely been work done between the two. Claiming otherwise would be foolish.
The other day, a friend of mine was going through the list of game options that adjusted various graphic-related settings, but didn't understand what all of them actually meant. Some of them should be pretty self-explanatory (texture quality - low, medium, high, ultra, for example) but there's also several other terms that are used that many people have a vague idea about, but aren't quite sure. Today, I'll try to explain what they are and how they work.
Bloom
Bloom is a shader effect that allows lighting to create a sort of feathered halo-ish effect around hard edges. It's what makes light sort of bleed out over and around corners on things, or when it is reflected on shiny surfaces.
VSync, or Vertical Sync
VSync forces your graphics card to synchronize its display at the same refresh rate as your monitor. This is supposed to guard against screen tearing - when your GPU is caught in between rendering two different frames. It doesn't always work, though. Turning on VSync will also force your GPU to output at a lower rate, which results in worse overall performance.
Depth of Field
Depth of Field is when the programmers use various shaders to simulate focusing on a specific distance, making things further or closer appear blurry instead of uniformly focused. It's a shader effect that gets run on top of what you should be seeing if everything were in perfect focus.
Motion Blur
When the camera moves faster than the eye can focus, the image gets interpolated with what has just passed to simulate speed. This makes things at lower frame rates feel better, though it will cost graphical computing power since it has to retain what it has just seen for the past few frames and use that data to interpolate what it is you see.
Anti-Aliasing
Anti Aliasing takes what you should see and smooths each pixel with the surrounding pixels. This helps keep edges from looking too jagged or pixelated. As a post-processing effect, it also soaks up graphical processing power.
Texture Filtering
Similar to Anti-Aliasing, it's used to make textures appear less pixely. As such, you can turn down the texture quality/size without making the textured objects look too blocky if upscaled. It does this by interpolating the pixels on a texture with nearby pixels. The important thing to note here is that texture filtering occurs on the texture itself, while anti-aliasing occurs on what you see on screen.
FOV (Field of View)
Field of View is the width of the camera's view angle. The wider the angle, the more you can see overall. Extreme width will, however, cause distortions in the proportionality of things.
God Rays
God Rays are when you have concentrated, visible light beams break through cloud cover or around/in specific areas.
Ambient Occlusion
When deciding how to draw a given pixel, the GPU will sample the depth/distance from nearby pixels to figure out how much shadow/depth the nearby pixels should affect the given pixel. This makes crevices and nooks darker than the surroundings.
And that's it for this blog in 2014. I will be on break and traveling for the next two weeks or so, so updates will be sporadic at best until the new year begins.
A lot of games with gender options have separate and often more poorly designed armour and clothing for female characters. Wouldn't it actually be more budget and development time considerate to just design and model for the male body and then cinch and mold it over female anatomy, essentially just reshaping it for a narrower and higher waist, breasts and hips? Are prominently showcased breasts really so important that they warrant more development resources?
So it looks like you’re sort of asking to further a specific agenda here - asking whether the sexualization of female character design is less inefficient from a development perspective. I’m afraid that my answer may not be very conducive to your argument.
To be honest, it doesn’t really take a significantly different amount effort to do so. Because of the way that development is set up, it takes about the same amount of effort to create a “heroic” male model, a “fat” male model, a “buxom” female model, or a “realistic” female model.
One of the issues is the creation of the models and the rigging (the animation skeletons). The base models are usually different - the vertices are in different places, the size of the arms, legs, bodies, shapes, etc. are all different. This means that texture mapping has to be tailored for each model. Similarly, each base model tends to have its own rig (animation skeleton). The bones for a man are usually in visibly different positions than for a woman, which means that animations played on one won’t necessarily work when played with another. Here’s an example of what can happen when you have mismatched animation rigs, even though the bones are in the same hierarchy:
It gets *really* bizarre when the bones don’t match up right. When that happens, It looks something like this:
Skeletons like this are the main reason you see a lot of reused animations in older MMOGs like World of Warcraft… if you change the animation skeleton, the entire library of animations needs to be adjusted to match the new skeleton, or you get weirdness like this. So you keep the skeleton the same, and just reskin or remodel it in order to not break all the other monsters that use the same skeleton, and not have to recreate all the animations for it.
Another common issue occurs when you’re trying to texture specific models. The lion’s share of the effort to make a texture work is done on the stress points - areas where there are a lot of joints in close proximity, like hands, faces, armpits, elbows, etc. When they look bad, you get a bunch of UV stretching - when the textures don’t line up right or end up stretched, and it looks funny. Like this:
The main issue is that these require careful edits to the texture map to fix… and a large portion of the time working on a texture map is fixing these problem areas. Even if you could somehow adapt an existing texture map to a new model, you’d have to make tiny adjustments to it anyway, since the character details you’re approximating would have to be adjusted to the new topology of the model you’re creating. The amount of effort to create a brand new texture map isn’t significantly greater, just given how much work you’d have to do.
You could make a greater argument that it’d be more efficient to make most models similar, rather than just bizarre and different, but it doesn’t really work for something like the way women are depicted in games compared to men. That, I’m afraid, is almost entirely up to the art directors themselves. It’s mostly a social issue, not a technical one, that’s been rather deeply entrenched due to the general lack of female art directors and of female developers in general.
This can work both ways, of course. It doesn’t require more effort to make it happen. All it takes is open-minded art directors and artists who want that sort of thing, and good-looking and practically dressed female character models are showing up more often. It just means that the fans need to send the message to the publishers that this is something they want.
You are using an unsupported browser and things might not work as intended. Please make sure you're using the latest version of Chrome, Firefox, Safari, or Edge.