Home 3D Art Showcase & Critiques

Seeking Low Poly/Faceted Style Advice

I'm a programmer by trade, but I've been creating low-poly 3D models for a couple of years for a game I've been working on.

I just published a demo of the game to reddit and got some feedback from other gamedevs, and the general consensus (4/4 people who replied) had concerns about the art style, but couldn't put into words what exactly was wrong with it.

So, I'm hoping you folks, with a more artistic bent, could give me some pointers on how to improve the look and feel of my current collection of creatures while keeping the polygon count low (they're for a mobile game and I'm expecting to have quite a lot of them animated on-screen simultaneously).

P.S. Please don't hesitate to be as brutally honest as you can. I'd only shown it to family and friends before yesterday and it seems none of them were willing to be totally upfront about the gameplay and art, so a stranger's honest perspective is very valuable at this stage.

Here's a screenshot as some of them appear in-game:

InfiniSiege1.png

[SKETCHFAB]41789e4b68314a5d93d3f5f3284d70d5[/SKETCHFAB]
[SKETCHFAB]f70c87aa3008467d9993de0d7179b437[/SKETCHFAB]
[SKETCHFAB]6d0cee8f9a0c4e858841df3854e0f0ee[/SKETCHFAB]
[SKETCHFAB]c0d628bfac7a440391b72ff7739129e5[/SKETCHFAB]
[SKETCHFAB]47a5c3333c514cb4bd08d51b4cd68130[/SKETCHFAB]
[SKETCHFAB]f659cc57961d4a688d73c96444fdfe2f[/SKETCHFAB]
[SKETCHFAB]c76d328f4e0a482dba6704fb20ebf781[/SKETCHFAB]
[SKETCHFAB]92929ae92a524ce2a31df6786709bef4[/SKETCHFAB]
[SKETCHFAB]4b016c45359b49b0a9d51492b0c9ea72[/SKETCHFAB]
[SKETCHFAB]2f48a9fddbe74882888300a419f72b2f[/SKETCHFAB]
[SKETCHFAB]133798c779654161a446e395f0f8c015[/SKETCHFAB]

Replies

  • Deathstick
    Offline / Send Message
    Deathstick polycounter lvl 7
    I'd probably try tweaking the colors and values/brightness of those colors specifically for these characters and the scene together. Everything currently seems to be around the same level of brightness, making the shapes all blend into each other rather noisily (hard to identify objects when they're near each other/overlapping).

    There's also things like maybe toying around with having ambient occlusion, shadows (though this is mobile so I dont know if that'll be possible?), color gradients, etc to try and help the models stand out a bit clearer in a 3D space. Having some baked Global Illumination could also help things greatly if whatever target platform and engine you're using supports it. The whole global illumination and lighting is really what makes the low poly style work in a lot of cases, due to it looking more like a paper sculpture or model would in real-life when hit by lighting.

    Anyways just my two cents to take from what you will, some of these things are subjective to what the final aesthetic will be (not everything needs shadows or global illumination to look good for example). My main suggestion from both a visual and gameplay perspective though is to make the characters and objects/environment more easily distinguishable from each other in color/value.

    Keep it up! :D
  • Wendy de Boer
    Offline / Send Message
    Wendy de Boer interpolator
    The main reason this style has become popular recently, is because lighting in game engines has finally become so good it can make a plain cube with a flat color look impressive through lighting alone. From these screenshots, it seems you only have generic top-down lighting with no shadows, which looks very oldschool. You will definitely need global illumination, ambient occlusion, proper shadows and overbrighting. The style absolutely depends on this to make it look good.

    The other thing that's missing is harmonious colors throughout the scene.

    Right now, each color area uses a single hue for highlights, midtones and shadows. This makes everything stick out as its own color island. The colors don't interact, which makes it look more garish than you intended. Better lighting may address this to an extend, but you could also try to set up your shaders in such a way that colors shift towards a cooler hue with less saturation in the shadows, and a warmer hue in the highlights.

    Also try to pick more toned down colors in general, especially for background elements such as trees and buildings. Having subtler colors in the background will allow the characters to stand out more, and be more pleasing to the eye in general.

    EDIT: Ninja'd by Deathstick, LOL. :poly136:
  • Bibdy
    Thanks, folks! I suspected that a lot of the charm of the modern low-poly style came from how lighting is used, but as you can imagine it's tricky to pull-off real time shadows and post-processing effects on a mobile device, especially when you've got quite a few of these guys running around.

    Characters

    I will admit I like the bright, jarring colors as it gives the world a colorful, cartoony feel. For instance, if I fiddle with the colors by making the background more pale, and the foreground characters stand out more, I get something like this:

    InfiniSiege1-After.png

    And, honestly, I'm not a fan...it feels like it's approaching the look and feel of a Battlefield/Call of Duty game with overly-stylized color saturation and contrast (or whatever you'd call it).

    I also intended to have the stark contrast between individual faces as, in the absence of being able to afford shadows, I felt that gives the characters a more real and dynamic feeling as they move around, but it doesn't seem to be well-received.

    However, my limitations are pretty severe on Mobile. I'm trying to keep all character textures to a single 1024x1024 texture atlas (below) to save myself tons of drawcalls, and as much space as possible.

    BandicootTextureAtlas.png

    I did some tinkering, by replacing one character's texture with a 128x128 texture with baked-AO (quick and dirty first draft) and here's what I get:

    Gorks_BakedAO.png

    It's not bad for a first draft, and I think there's an opportunity here to bake AO everywhere (Edit: This request is complete nonsense. See replies below) ", but is there a tool I can use to merge the AO of 50-something characters into a single texture? Anything that speeds up my workflow by preventing me from having to manually merge textures, and fix UVWs would be a godsend!"

    Environment

    I was already baking GI into the background, but I can try adding AO to it as well.

    I could introduce more real-time lights coming from the left-and-right to generate less contrast between adjacent faces, but the unfortunate side-effect is the extra draw-calls it costs. For instance, this:

    InfiniSiege2-Before.png

    Becomes this..

    InfiniSiege2-After.png

    ..just by introducing 2 additional directional lights coming from the sides. It feels a lot kinder on the eye and I like it, but it costs 50% more drawcalls, which is a major GPU hog and battery-life killer on mobile.

    So, I feel like what I've already created might be as much as I can get away with without breaking the bank on system requirements. But, I suppose I could always make that look the 'low quality' version, and add more directional lights for optional higher quality settings.

    Oh, and of course, thankyou very much for the advice!
  • Justin Meisse
    Offline / Send Message
    Justin Meisse polycounter lvl 19
    Does using vertex color instead of a texture save on draw calls?
  • .nL
    Offline / Send Message
    .nL polycounter lvl 3
    I think that's largely implementation dependent. Some engines instance assets better than others. But definitely much cheaper, as you don't have to send texture data to the GPU.

    The increase in draw calls caused by the additional lights should be simple enough to get around, if your engine supports deferred rendering. I know Unity 5 supports it, but I can't recall how I enabled the path, since I don't believe it's the default.

    EDIT: In Unity 5, you just go to player settings, and make sure that 'other settings' has 'rendering path' set to 'deferred'.
  • Bibdy
    Does using vertex color instead of a texture save on draw calls?

    Nope. It probably has a little less overhead, but I don't think its noticeable. What matters is the number of materials being used and whichever coloring style you use, it results in a single material (the benefit of vertex colors is consuming less space).

    The first real-time directional light is 'free' in terms of drawcalls (it costs one just to render it, and the first real time light is bundled into that first pass). But, then it costs one draw call, per material/skinned mesh (rigged) character, per additional real-time light.

    But, now that I think about it, I don't think atlasing my characters is actually saving me anything, since they're all skinned meshes. It certainly helps for any static background objects, but Unity can't batch animated characters since they'd each have unique animation states.

    I just did some testing, and each time I introduce a new character to the scene, it still costs me a drawcall for each realtime light in the scene, regardless of whether or not they share the same material.

    So, I guess I can get away with having one texture/material (with the baked AO) for each character. That sure makes file management easy!
  • Bibdy
    .nL wrote: »
    I think that's largely implementation dependent. Some engines instance assets better than others. But definitely much cheaper, as you don't have to send texture data to the GPU.

    The increase in draw calls caused by the additional lights should be simple enough to get around, if your engine supports deferred rendering. I know Unity 5 supports it, but I can't recall how I enabled the path, since I don't believe it's the default.

    EDIT: In Unity 5, you just go to player settings, and make sure that 'other settings' has 'rendering path' set to 'deferred'.

    Yeah, deferred rendering seems to help when you go from 2 to >2 lights, but the second light always seems to cost an extra drawcall per material/skinned mesh, and then additional lights after that are free.

    Not ideal, but at least makes the 3rd light in the scene above free!
Sign In or Register to comment.