Low-poly Tips 3 – Game Art Asset optimization

These are 3D art asset modeling, rigging, uv-mapping and texturing tips. And not only for low-poly though it is where they are needed the most. See also other tip collections, the first and second set.

Minimize number of Draw Calls the Asset generates

Draw Calls are for game engine the number of separate objects, materials and textures that are loaded.  The less draw calls the better the game can run. Here are some ways to lower the number:
Multi-object texture optimizing art assets

  • Have each character as one single mesh. Characters that are made from pieces in-game cost in draw calls.
  • Combine separate static meshes to one. If you can have a collection of objects as one object, one file(the meshes can be unconnected), it is better than as several files.  But don’t combine a whole village to one object as the whole thing would get loaded to memory even though you may not need it. This trick is best for moderate collection of objects, say all items inside a shop interior.
  • Use only one material and texture per object. Or even..
  • Have several objects all use same texture and material. This means each has the same uv-map but uses only a portion of the whole – uv-map collects all textures together. See picture. Even though not shown in picture(for clarity) the sections different objects use can well overlap.

Optimize character rig, use 2 rigs – one for animation and one for export

The less bones your character has the lighter it is to run.  And less resources used for one character means more to use elsewhere – maybe even allowing more characters.

But very few bones makes animating difficult and prevents many motions. Of course we rather animate with the optimum amount – and with control objects as well to make work easier. Sure you can have control object in your game rig and just make sure not to export them to game, but having bones in a rig that you don’t export, like between one bone and another? That is asking for trouble.

Solution is two rigs, one for animation and one for exporting to game. Game-rig is linked to follow animation rig – you animate only with animation-rig and export only with the game-rig.
[clearboth] Character Rig optimization
[clearboth] [one_half]Animation Rig is the rig you build first. It has the bones and control objects you want to animate with. The rig can even have details, like fingers, which you can animate and later decide to use or not(via the game rig). Build your animation rig and then consider what parts of it are essential for moving the character. Every bone in a character only supporting other bones and not really affecting the mesh itself is a bone the game character does not need. So, do you really need the neck-bone if head and chest bone playing together can offer the same result or close enough?

[/one_half] [one_half_last]Game Rig is collection of helper objects(any type, also called nulls), one per every important part of character. The reason to use nulls instead of bones is that creating bones is intended to build hierarcies you don’t need and should not have, here. Create these objects, then align and parent them to follow the relevant bones of Animation Rig. They should relocate to pivot-points of the animation-rig-bones. Then skin your character mesh to these helper objects(nulls). In the end you animate with Animation Rig and the Game Rig follows and deforms the mesh.[/one_half_last] [clearboth]

That was the 3rd set of little tips for improving 3D (game) art assets. Cheers!

Low-poly Tips 2 – Game Art Asset Optimization

These modeling, uv-mapping and texturing tips apply to 3D art asset work for games and similiar media. While they are best matched with low-poly 3D, they are definitely not limited to it. See also the previous collection here and the 3rd one here.

Middle edgeloop optimization & UV-mapping a character

It is common to model an edgeloop running around the middle of a character. It allows mirror copying the torso – you uv-map and texture only half and duplicate to get both halves with same detail (see Low-poly Tips vol. 1 for futher explanation). However there are number of reasons why full middle loop and mirroring everything is often not the best choice.

Mirror-uv-mapping everything on a character mirrored makes it look more generic. For visual interest you want variation in at least the texture if not the shape and for this you can’t mirror everything. In a humanoid figure the places seen the most are where you want variation, usually top half of character torso, shoulders and face.

A middle cut running all through your character model means more polygons. There are places where you have to have it, namely the crotch/hips area for humanoids because this area receives lot of stretching – you need to separate the legs. But there are also many places where you don’t need it. See the image for example of middle edgeloop use.

For four (or more)-legged characters like dogs you can often forgo the middle loop at hips, too. Sure the area will bend and break in animation, but if it doesn’t show then does it matter?

Fake roundness with just 4 polygons – optimize asset polycount

A square can be made to look rounded in game. The trick is to use one smoothing group and turn a square so that polygons are not aligned to world axis, rather angular to them. This places the corners closer to where round objects would be and away from where square objects corners were. That and the smoothing group fools your eye. It is mostly the smoothing group – I don’t know the technicalities of this. Just that it works. See same tricks also with character legs.

Of course this only applies to the sides, the 4 polygons we are talking about. Looking at the top and bottom the objects square nature shows, but when you hide them it is another story.

Fake complex shapes with bitmap and alpha channel – optimize polycount

Any object with a mostly flat top, especially shapes like barrel and similiar where top is equally proportioned or larger than parts below it, can have a faked top: a single polygon and the shape of the top mapped on it with bitmap and alpha channel. This can save numerous polygons. However the top with alpha does take space from your UV-map since it needs some size to have enough detail to not blur and reveal its faked nature. So judge for yourself which one is more important with your object: texture/uv-space or lower number of polygons.

Texturing with seamless textures – re-using textures

Re-using textures is a core part of low-poly work. Characters don’t allow that too much, but props such as houses do. Say for a medieval building you might just have a texture with 1/4 stone, 1/4 wood, 1/4 roof, 1/4 window – see image used to texture a well, the idea is the same.

The trick is to place almost every polygon in your uv-map separately so that they grab the maximum texture area – AND also change polygon sizes, rotation and mirroring to add variation to the way it is displayed on your model.

Unlike ‘standard’ uv-mapping, where you map first and texture after, for this you better do the reverse. Make the texture – lay out the different material areas(preferably each tileable). Think what you need and what shapes you need, like longer varied strips of material, and add those bits to your texture. Then uv-map polygon by polygon, or few at a time, to get all you can out of it.

Texturing by re-using textures does become a balancing act: Do you use more uv-space for one particular area or more polygons? Say you have a long continuous wall. To cover it all with a single unique texture would take a large amount of uv-space. On the other hand repeating one seamless texture over and over would require more polygons. So you weight the pros and cons and perhaps go middle way. Usually my take is that few polygons does less harm than needing to use larger textures or more textures.

Remember MipMapping and Antialiasing when texturing – stop texture bleed

When the game creates a MipMap from your texture, or when the texture gets antialiased, it gets blurred. This is a problem at edges of the uv-island in your uv-map. Either the background color of your texture bleeds in or the alpha channel does(usually as black colour). As result the uv-edges become visible on your model in game.
To prevent texture bleeding problem, push the textures themselves well over the uv-seams. Then, when the blurring happens, you still have the correct colors at uv-seams.

Acknowledge uv-area repeating – optimize texturing

If a part of your uv-map goes over the uv-area, it will come out at the opposite end. This is not displayed visually in your program(not in Max or Modo at least), but knowing it you can use it to texture uv-parts that do not fit in your uv-space. Mind you this works only with seamless texture.

Have less seams in UV-map

Models that have their UV-map slipt to numerous parts count as having more vertexes as far as game engine is concerned – each split means more vertexes and so heavier to load. To minimize vertex count you should have your uv-map as continuous as possible – say a character skin could be one big open pelt like an animal skin. Of course uv-mapping and texturing poly-by-poly, like written above on seamless texturing, does the exact opposite.
Do note that going for less UV-seams is a fine-tuning type of optimizing – it is best used in addition to other tricks, where possible, and not to replace them.

Make textures details to fit size displayed in-game – optimize textures

The size that the objects appear in game, be it because of optimum camera distance or whatever, defines maximum texture detail you need. Say you have a character face that is 85×85 pixels on screen in game. You need no more than that for it in the texture map. Of course if your game offers free camera, modifiable resolutions and such tools for player, things get more complicated. But even in free camera games there has to an optimum to aim for – what is the size of texture detail at camera distance where the game is Designed to be played at?

This ends second collection of art asset tips, especially useful when working with low-poly 3D assets. I hope some of these come handy in your projects.

Interview for Intel

I was interviewed on INTEL’s ISNTV Digital Arts-show. (voice only for my part)

2013 UPDATE: Intel’s Digital Arts Show-pages have been closed for a good time now and this page had broken links, until now. I found the video interviews elsewhere on Intel’s site so the links should work, for now.

Digital Arts does many things, including interviews of people in the field of Arts.  One good example is musician Justin Lassen’s interview (from Intel booth at GDC).  Justin is an exceptional artist and a does well before the camera, too.
Reason why I got on Intel’s radar was winning their Digital Art Tutorial Challenge a few times in a row.  Other than that I’m guessing my blog and big projects raised a few eyebrows.

See the interview at ISNTV Digital Arts show.  Host of the show is man of many titles, including Intel Artist and Animator Community Manager, Steve Pitzel – a terrific guy.  We had a good chat, both on record and off.  I manage to sound reasonably sane most of the time, so I call it a success.

Go see and listen and leave some feedback below, if you like.

Low polygon 3D worth anything anymore?

What is good low-poly and what good are low-poly skills anymore anyhow?  Many years ago, when then current generation games had progressed beyond low-poly models,  I wondered if I should ever learn to do low-poly.  What use does it have?  But I did learn and am glad I did.

Good low-poly 3D does a lot with little

The limitations can be very strict, especially in the mobile and similiar platforms, so we play within the limits.  Clever placement of polygons gets the shape down with minimal polycount while still maintaining animation capacity.  Virtuoso-like uv-editing maximizes the use of texture.  Great texturing makes one texture serve the same role as many.  That’s good low-poly.

The low-poly I’m talking about in this article is really low-poly – work done with very few polygons.  Don’t confuse this with ‘low-poly’ models often featured on forums such as Zbrushcentral.  There, when artists model for games, they usually model for kick-ass consoles and strong PCs, and call the in-game model ‘low-poly’ even though it weighs somewhere above 7000 triangles.  In that use ‘low-poly’ is just an expression, just a way to say ‘in-game model’.

Low-poly is anything but dead as a field of work

The demand keeps on growing.  Mobile and similiar platform have recently acquired computing power to run low-poly scenes up to 1000 triangle-polygons and above, which could be full a scene with ground, a character and some props.  It could actually be a small scene from a game production I’m in.  Our game runs on game engine released in 2002 for PC.  Now similiar stuff rocks on mobiles.  Imagine that.

Other than on mobiles low-poly is used extensively in handheld devices and online-gaming – anywhere really where resources are limited and/or game features tons of characters at once.  World of Warcraft too is low-poly.

We’ve established that low-poly takes skill to do well and that it is still viable as a field of work, and growing.  Ok, so are the skills learned at low-poly useful anywhere else?  Hell yes!

What does low-polygon work teach?

  • Good 3D model is optimized for light-weight and for animation – polygons are placed only where needed to make shape or help animation deformation.  Good model also has an easily read profile and personal look, good design.
  • Good UV-mapping maximises the texture usage, re-uses parts of texture creatively so that you don’t notice it is the same bit repeating and weights important areas over others.  Low-poly restrictions force people to explore these things.
  • Low-poly texturing means painting everything to a colour-map: shadows, highlights – the works.  It’s not unlike painting a picture.  You need to learn about painting, how surfaces react to light, where shadows go and more.
  • Low-poly animating puts attention to intention and the big picture.  Small motions get lost with blocky models, and there will be no close-up of a facial pose, so it is better make clear and profilic motions and learn to get the message across using the whole body.  Very good to know.

I think my point is made.  If you don’t know how to do low-poly yet, don’t hesitate to learn.  Have you avoided low-poly work?  Or have you found it useful?  If you do low-poly, what platform is it for?  Please don’t hesitate to share your take and experiences.

Low-poly Tips

These are basic tips for optimizing and improving low-polygon work in the areas of modeling and texturing.

Core of low-polygon work is to do a lot with little; Do something good with limited number of polygons and with small textures. Limitations are set by the game engine and platform the content is for – these days low-poly is usually for mobiles and other handheld devices. One very good way of getting the most out of your limited resources is doing stylised designs. I recommend this: Start by designing for low-poly. One of the best examples of such styling is the look of World of Warcraft.

I learned low-poly working on the Ultima 6 Project.  U6P uses Dungeon Siege(1) game engine and creates a large world filled with low-poly models. You can view some of my U6P work here.

  • Using  edges in low-poly, exampleMake use of every triangle. Sounds simple but is easy to overlook when people are used to modeling with quads or n-gons(more than 4 sided-polys). Since every polygon is triangulated(divided to triangles) anyway when exported to game engine(or rendered), you could just as well divide the polygons yourself. That gives you one more edge to define the shape with. The example shows how shape is created by placing edges dividing the quad polygons and what the result would be if the edges were misaligned – something you may get if you let the software triangulate for you.
  • model volume on joint outside, knee exampleModel volume on the outside of the joints. This way, when the limb bends, the outside preserves shape even when bent ‘open’. The example shows setup you could use for knee or elbow and some others for fingers.model volume on joint outside, finger examplemodel  volume on joint outside, finger example
  • Model for profile and main shapes, exampleFocus in modeling the profile and the main shape landmarks. Polygons not used for better joint deformation or for defining general shape are extra – something you can do without. Create that extra detail with texture-map, instead.
  • detailing with texture, exampleAdd shape with texture by drawing some shadows&highlights into textures. But do it sparingly. Strong always present shadows or highlights look false.
  • Make holes with texture. Say you need a grate with lots of holes. Modeling them would mean a lot of polygons. Why not make plane and texture that with a transparent texture (if your game engine supports it)?  You could even have two planes, one see-through grate above and other below it with a well/whatever deeper place painted on it.  Simplest solution is of course ‘holes’ painted in the main texture.
  • Multiple textures exampleUse multiple textures on your object. Game engines(and other software) allow textures only up to a certain size. But if they allow multiple textures, you can get around the limitation. Of course don’t go adding textures beyond what the target device can comfortably handle. One main reason to use multiple textures is when your game engine allows replacing parts of geometry in game. Say you have a character with skin(texture1) and clothes(texture2). The latter texture(2) and the geometry it covers could be interchanged in-game to another version when character changes set of clothes or armor. Even if your engine doesn’t allow interchanging parts, using multiple textures is a good way to do many variations of one model.
  • UVW-map exampleFor more texture detail somewhere on your model make that part bigger in your UV-map. Sure this leaves less space for other parts, but some areas are more important than others (character face for one). Example has the gargoyle skin-texture with uvw-map overlayed.
  • Paint your texture in 3D-painting software and detail futher in 2D-software. Sure you could paint all in 2D-software like Photoshop but there is no comparison to 3D-painting. Simple thing like making a straight line around a character becomes a pain if you have only 2D-paint to work with. Here are several 3D-paint softwares listed. Tattoo for one is free for personal non-commercial use.
  • Colour your textures by hand. Painting in shades of grey, black’n white, and then overlaying colour on might be easier, but if you instead both choose and paint the colours by hand, the end result is more vibrant and alive. Same applies to gradients. They tend to be too mechanical, too perfect. Paint the colour-shift yourself.
  • Use duplicate-parts in your character/object. Hands can often be mirror-copies of each other, same with legs. This is how you can save in UV-space and hence make all parts bigger in the UV-map and so more detailed. This is ever more true with objects like buildings where you can use same textures over and over. Clever and creative UV-worker can create many variations from just one texture-map.

Low-poly 3D for Ultima 6 Project

I’ve finally compiled a video about my low-poly 3D work for Ultima 6 Project.  You can watch it below or in HD at Vimeo.  All shown in the video is low-poly to fit the game engine limitations and overall design.  These days low-polygon 3D, the likes of what I’ve made for U6P, is used more on mobiles and portable gaming decives than on PC.  Funny how fast things change.

Ultima 6 Project is  a soon to be published freeware role-playing game for PC(works on Mac, too, with some tricks.)  For me the project was first like a training ground for low-poly 3D game assets, though without a teacher, and later became a job just like any other.  I’ve been working on U6P part-time, on and off, since early 2006.

My contributions are items, creatures, characters and structures – most notable being the gargoyle race.  I’ve also done one cinematic and some 2D-stuff like the ingame-journal graphics(actual content, incl.images, is by our great team).

Ultima 6 Project is a remake of an old classic game, Ultima VI(by Origin).  Like U5 Lazarus, a remake of Ultima V, we bring a classic to modern computers – with a lot more than just visual improvements.  1.0 release is coming.  U6P is free to play, but you do need the game Dungeon Siege(1) to run it.  DS is an old game and should be available at a very affordable price.

Any comments or questions regarding low-poly 3D or Ultima 6 Project are welcome.