An animator on my team is currently working on a facial rig for our main player character, and we were wondering if it was more efficient to have blend shapes or joints. I know a lot of people use a hybrid between the two–ie, using blend shapes to correct things that didn’t look right from moving joints–and I’ve also heard that Unreal expects you to use them, anyway, so it will always be calculated for skeletal meshes (but just always calculated at 0 if you don’t have them). We’re working on an MMO game, so we need to do everything we can to help performance.
Sorry if this has already been asked before! I kept reading things about what’s better art-wise and I came up short on how performance is affected when I was researching. ^^;
Keep an eye on the GDC Vault for Natalie Bird’s talk this year on ‘Animating with Math’. It won’t be up for a couple of weeks but it includes enough info on how you could hack a simple shader-based corrective shape without the overhead of blend shapes.
You should talk to your graphics engineers and find out if they expect to be more bound up on memory, CPU or GPU. Blendshapes are usually memory hungry; bones are more efficient in general but they are non-linear : there will be a certain batch size for bone and exceeding that adds a big increment of cost, but what that batch size is depends on how the engine and the GPU interact. Shader based solutions are less general purpose but are usually cheaper than either – however they are less flexible because you can’t pack that many different shapes into color or UV channels.
[QUOTE=Theodox;29722]Keep an eye on the GDC Vault for Natalie Bird’s talk this year on ‘Animating with Math’. It won’t be up for a couple of weeks but it includes enough info on how you could hack a simple shader-based corrective shape without the overhead of blend shapes.[/QUOTE]
Hmm…I love that idea, but I was under the impression that doing vertex animation in shaders was expensive, so I didn’t even think about using that. (I’m kind of a noob, sorry!) We also might have a mix map for character customization, so I’m afraid of our character shader getting too complex and bogging us down. :3 I have a feeling it’s the kind of situation where we’d have to try it and see–but I also don’t want to spend a lot of time trying to implement a system I don’t know how to do off the top of my head because we’re trying to work as quickly as we can to get as much content out as we can to show things to potential investors as soon as we can. (Just realized you addressed this later and said they’re usually cheaper–so I guess the only way to find out for sure would be to try it!)
[QUOTE=Theodox;29722]
You should talk to your graphics engineers and find out if they expect to be more bound up on memory, CPU or GPU. Blendshapes are usually memory hungry; bones are more efficient in general but they are non-linear : there will be a certain batch size for bone and exceeding that adds a big increment of cost, but what that batch size is depends on how the engine and the GPU interact. Shader based solutions are less general purpose but are usually cheaper than either – however they are less flexible because you can’t pack that many different shapes into color or UV channels.[/quote]
To be clear, bones is usually the cheapest option, but the cost goes up in a non-linear fashion so it’s important to know where the batch boundaries are. Vert animation is more GPU load (usually not too bad) and generally less memory and CPU. Blenshapes is usually the highest quality, highest memory cost option. This is all super platform dependent though…
[QUOTE=Theodox;29725]To be clear, bones is usually the cheapest option, but the cost goes up in a non-linear fashion so it’s important to know where the batch boundaries are. Vert animation is more GPU load (usually not too bad) and generally less memory and CPU. Blenshapes is usually the highest quality, highest memory cost option. This is all super platform dependent though…[/QUOTE]
Aaah, okay. I think that’s still a good place to start, even if it depends upon our platform. I know for sure we’re targeting PCs, however, I’m not sure how old of PCs we’re going for, and I’m sure age will also make a huge difference.
IN PC space there will be a pretty radical difference in performance between ‘real’ graphics cards (basically, NVIDIA or ATI hardware) and the low-end integrated graphics chips. Valve used to maintain a big set of stats on the distribution and specs of different hardware in their market, it’s worth finding out if that’s still available.
[QUOTE=Theodox;29730]IN PC space there will be a pretty radical difference in performance between ‘real’ graphics cards (basically, NVIDIA or ATI hardware) and the low-end integrated graphics chips. Valve used to maintain a big set of stats on the distribution and specs of different hardware in their market, it’s worth finding out if that’s still available.[/QUOTE]
Valve does indeed still conduct hardware/OS surveys, and because Valve is cool like that, they make this information readily available. : ) http://store.steampowered.com/hwsurvey
Thanks, everyone! I finally got some info about the different computers in the office and, yeah, it is the computer with the integrated graphics card which is having performance issues.
Hmm, that Valve link is interesting…I’ll have to keep that in mind. :3