AuthorTopic: Realtime Rendering of 3d Meshes as Pixelart  (Read 67808 times)

Offline Ai

  • 0100
  • ***
  • Posts: 1057
  • Karma: +2/-0
  • finti
    • http://pixeljoint.com/pixels/profile.asp?id=1996
    • finticemo
    • View Profile

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #30 on: September 22, 2015, 01:22:26 am

Ai: Ahh, yes. I'm very familiar with the GGXrd's art style and methodology. I'm actually directly using their Vertex AO > driving lighting ramps. Its a great idea, and I'm a huge fan of everything they did. I'm glad you like the improvements - I'm still pushing it more!
Anything you'd like to see?
In technical terms? No, I don't have enough relevant experience to say.
In artistic terms? Something with very thin  (<=1.5px) features.

Can I digress for a little?
Auto hinting. I've recently been investigating pixel font rendering, and found that the autohinting that OTF fonts are normally treated with, totally curbstomps the manual hinting that TTFs have*. There is some loss of identity, especially at smaller sizes,

*using freetype2-infinality, which is a tweaked freetype2 supporting things options like stem->pixel snapping, etc.

I brought that up by way of saying: 'autohinting' of 3d models for the purposes we're discussing here. Has such a thing been tried before? Is it feasible?
If it is, it seems like it would go some way to mitigating the problem of making a model for 64x64px and then finding yourself in a situation where you need a 24x24 render of it that still reads.

(which ties back to 'very thin features', of course.)

Quote
Conceit: I'm being incredibly sarcastic. :P I knew what you meant, and I was just trying to be humorous. I'm already doing a ton of the stuff they're talking about in the GGXrd technical papers - but I'm doing them with mobile devices and sheer speed in mind. Things like the specular levels and material presets - all of that's done with the ramps. Need a large specular hit? Push the lightest bar in on the side. It really is quite versatile. :D
Ohh, dynamic gradient mapping. Now this is more familiar territory. I guess that means that multiple lightsources are a pain to do. I worked out an option for that previously which basically adds a blending factor between two or more ramps (with the caveat that the ramps are ordered and you can only blend between ramps with adjacent indices). Perhaps that's an idea that might be usable here.
If you insist on being pessimistic about your own abilities, consider also being pessimistic about the accuracy of that pessimistic judgement.

Offline Conzeit

  • 0100
  • ***
  • Posts: 1448
  • Karma: +3/-0
  • Camus
    • conzeit
    • View Profile
    • CONZEIT

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #31 on: September 22, 2015, 02:02:12 am
oh, internet sarcasm, you foiled me again!   *angrily shakes fist*

alright! I just really like the idea of the drawn in shadow bias. I get that may not be practical for your personal uses, but do you think it would be hard to implement? when I get into ( read: if I ever do get around to...:p) messing with lowpoly and try to recreate this stuff, I'd love to do shadow bias, possibly the scaling bones and maps the maps that indicate how to deform the model as the camera moves. do you think it would be hard to implement?

I think if you're familiar with the Xrd stuff, you probably know about this as well, but I just love their style so...
https://vimeo.com/22844101 rigging of Meindbender's Duplicator
https://vimeo.com/7980975   duplicator


as for crits, I think everything is mostly working fine, very stylistically consistent...the one thing that does really bug me is the way the fire's glow is blending on everything else, it's very noisy and messy and it clashes with the rest. if you could somehow handle it by changing the ramps that the lights shine on it would ring a lot more true to pixelart, as that is often how we handle glows.

this is in concept not that different from what you're doing, but notice the well defined and far less noisy edges, and notice how when it goes over him it just switches his body to one brighter purple ramp. You could even just keep blending but try to make it less noisy, ideally draw it by hand. Could possibly a billboard you know?



brighter ramp+a little gradient...could work
kinda hybrid aproach
a different lightsource, backlit maybe or even just a black sillouethe for the part being shun on could look awesome
sometimes fire with dark edges that doesnt even blend
or just fire with flashing dark frames can look great
love how lit up her legs are but they dont completely lose definition

oh man, you have to do the explosions like with the ape thing you did before, AND have them fade by generating smaller and smaller ones ad infinitum to give it a real Metal Slug feel. please? :p

Also, dunno how you're doing the windows but if you were to do it like drift stage...damn.
the way you do it where the brightness changes with the angle is great, but I really like the way the lines here are not fixed to the ship but to the screen, makes em feel tied to lightsource. Maybe could work for mapping specular intensity as well? I'd try to do as many versions of fake lighting as I could if I were you, gives a far more 2D feel. Fake second lightsource by way of outlining one side of the model with a bright line for example?

I'm not sure what to say about the models...I avoid AA so I have nothing to say there, and I'd focus more on more general feeling stuff than pixel perfect stuff. I'd add another dark shade to the woman's skin...she doesnt feel...fleshy :p maybe a reddish one. I would also probably exagerate her face features, face feels very very blank right now. Either go total blank like Flashback or do a small pixelly face
« Last Edit: September 22, 2015, 03:02:44 am by Conceit »

Offline RAV

  • 0010
  • *
  • Posts: 293
  • Karma: +0/-0
    • View Profile
    • Blackbox Voxel Tool

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #32 on: September 22, 2015, 04:42:16 am
Quote from: Howard
"There are little to no margins for mistakes in real pixel art." That is...not actually a viewpoint I hold with. At all. In fact, I have no idea how you'd ever quantify that! What's a "mistake", and what's a thinking artistic choice? Dithering is a choice - how much it's dithered is a choice - color ramp hue shifting is a choice...in fact, I'd be shocked if there's pixel art anywhere that would completely fall under the "no mistakes" label. Everything someone does as an artistic choice may be a different choice than another artist would make.
I don't like arguing it too much, but having a better understanding of the problems you're dealing with is important for any success in finding further improvements to the shader. So this is not to stop you, but you need to be aware of these things for your work. That's how Pixelation serves you best in your quest.

While there is some truth to what you say, if "anything goes" were truly the case, there were no need for a critique section on this board. Art is no nilly-willy subject. It's serious as science.

There are clear mistakes in pixel art, as wrongly set pixels can make the object less readable as well as less satisfying. Not all of this the model can solve, as it is the rendering that decides the pixels in the end, and in the wrong conditions gives a less readable and satisfying depiction of the model. So as we found out now, the right conditions are important to consider in making the model. That is why I pointed it out. You now have a clearer idea of use case for it. That might have been forgotten over the awesome power 3d promises otherwise.

Pixel art rendering has so much less margins for mistakes compared to regular 3d, because each pixel is given a more prominent role in visual importance, and thus a wrongly set pixel disturbs more obviously the image. When you had a bit more interpolation earlier, as 3d usually does, it stabilized the picture quality much more in its errors, which is not just a matter of taste. I take a less truthful pixel art that's easier on the eyes, over a "real" one that hurts the eyes, because it's not made well enough given a situation. That is the very reason 3d went away from being pixel art a couple decades ago for FPS, since the drastic scale changes inherent would make for a disturbing image quality. So that's another case to consider in how to use it. It could also be useful to have finer option settings for more choice in the degree of how strictly the shader tries to be pixel art. The ability to adjust the degree of interpolation to make it "more or less pixel art" can stretch the use cases. Don't just run after a holy grail of supposedly faithful pixel art, it holds you back in utility as well. Consider that for the problem you had at the beginning: turns out maybe it wasn't a bug but a feature.

Quote from: Howard
Heh, you might be surprised. I'm actually exerting a lot of control on everything visible.
The measure by which to judge your control on the pixels is not the code, but the image we're looking at. It is obvious, not surprising. The shader controls the pixels, not you. And the shader's use of techniques in this control is very simplistic and often less than ideal to a given need compared to how pixel artists use the same techniques. A pixel artist knows how to get the best out of a technique on a given piece. The most important limitation you should consider to work on as was pointed out, is giving the artist more selectivity options with which a certain technique is applied. That is give back at least some control over the pixels to the artist by having some more control options on the shader, in the ability for more selectivity in application of a technique on the model. An on/off toggle for a technique is far away from pixel art control. Finding out which control sub-options on each pixel technique make sense and are useful could be your next best goal in searching improvements from here on out. The level of control you allow the artist to still maintain over the image manually, despite the dynamics, is in the end most what decides how close you can make it useful as pixel art, less how smart you would try to make the shader by itself. It's important to remember that.

« Last Edit: September 22, 2015, 06:37:11 am by RAV »

Offline Seiseki

  • 0011
  • **
  • Posts: 915
  • Karma: +1/-0
  • Starmancer
    • OminuxGames
    • http://pixeljoint.com/p/35207.htm
    • StarmancerGame
    • View Profile
    • Starmancer Patreon

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #33 on: September 22, 2015, 09:08:15 am
Seiseki: Thanks! On the "too realistic" front, I'm curious precisely what you mean. Texture? Details? Clean lines? All of this can be... tweaked. For instance, here's a shot with some noise introduced and no shadows.

I think it's the opposite.. It's mostly just about how accurate and smooth the rendering is, which is inherent to 3D rendering.

So I'd rather go with less noise, more simplistic and clean lines. Simplified shadows.
I'm curious how it would look with a more limited palette and no dithering.

I think the biggest hurdle for you to overcome, is that it looks sorta like pre-rendered 3D saved in a low res and limited palette format.
As pointed out, the AA is a double edged sword, it hides some of the jarring edges, but also makes it look less like pixel art.







Offline Howard Day

  • 0010
  • *
  • Posts: 205
  • Karma: +0/-0
  • Hey, I'm a doofus.
    • View Profile

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #34 on: September 22, 2015, 09:32:00 am
Ai: Okay, like this? MADE A DRONE.

Thems some thin lines, son! the object line width is totally controlable - you use the vertex alpha value to multiply the width.
...and as for "AutoHinting"... yes, that's completely possible. Even easy! You run into the problem we did last time, though - your assets need to then be built on a grid...and that will only really work at a single zoom level. Zoom in and out, and your exact pixel positioning goes away. :(
And multiple lights with lighting gradient maps... totally possible as well! I know because I've done it. Here's a test I did for a tribute to the Star Trek 25th Anniversary art style. As you can see, the lighting is ramped, there's multiple colors, and they all play nice together.
http://www.hedfiles.net/STMobile/STMobile.html
 
Conceit: Oh. Oh? Okay, so the shadow bias stuff is in there already. :D it's already working - and I'm using the same vertex values to do workable ambient occlusion.
That short is just unbelievably awesome. Great stuff!
On the notes for the skin, and glow...I agree. I wasn't a huge fan of the existing glow, and was looking for a way to fix it. You showed me the way, thank you!
Here you go - I went with the hybrid approach:


And the skin shader + enhanced facial features:


I'm working on explosions and that screen-space Drift Stage cockpit glass. if I recall correctly, I'm one of the guys that showed them how to do that...I think? It was a while ago.

Thank you, Conceit and Ai - your feedback is extremely helpful and I'm loving the challenge to improve that you're setting for me!

RAV: I wasn;t suggesting that in pixelart "anything goes" at all. I was simply pointing out that any pixel art you care to point at, no matter how skilled and polished, would have parts to it that would be reasonably considered to be "wrong" to other pixel artists. I also don't agree with or accept your proposition that "Art is no nilly-willy subject. It's serious as science." That...that statement is fractally wrong. I'm obviously not the end all authority on anything, but stating that the pixel art done by artists is the same level of seriousness as cancer research is utter nonsense. We're just not going to see eye to eye on that one. Sorry.
As for having less room for error in pixel art vs regular 3d artwork...nope, I just can't agree with you there, either. There's plentiful sloppy examples of both, and they both require skill and time to learn how to get right. I'd argue that it's harder to do highly-detailed, high res 3d artwork than pixelart - there's a reason many Indiegames with limited budgets and time/resources choose to use pixelart as their medium. It's not that it's harder than 3d artwork.

"The measure by which to judge your control on the pixels is not the code, but the image we're looking at."
Hmm. No, the measure that I judge my control over what's shown on screen is by how much I actually control it. As I've said, I control all aspects of color, lighting, shape, shading, outline thickness, surface detail, dithering, and indexed palette. The only aspect I'm missing total control over is exactly how the shadow maps fall on the surface of the 3d object. Please don't make the mistake of thinking that since I've exposed several On/Off toggles for various effects that that is the extent of the controls in the system. Those are simply the ones I've shared for demonstrative purposes.
The end goal of this is to deliver a demo project and a tutorial that clearly explains the workings of the system, in a way that can quickly have new assets dropped in, or, alternatively be imported into use in an existing project. I'm still very much on the path to that goal.

Seiseki: Oh, gotcha. Here's the scene with Dawnbringer's 16 color palette with no dithering. :D

And yes - I still need to tweak AA settings - but again, part of the problem is that the level of AA used by different pixel artists varies wildly. It's a definite headache. :D
Latest build has also been updated!
www.hedfiles.net/PixelShader/PixelShader.html


Thanks, guys!

Offline RAV

  • 0010
  • *
  • Posts: 293
  • Karma: +0/-0
    • View Profile
    • Blackbox Voxel Tool

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #35 on: September 22, 2015, 09:56:40 am
Howard, the problem we have now is I feel that there is too much an impulse to disagree than to be fruitful any further.
The usefulness to you of my participation and critique is questionable if the disagreement is seemingly so fundamental.

I felt that you were trivializing too much the ability of art to be judged for improvement, and that this is relevant to the decisions you are making.
And you feel I am taking art too serious and supposedly absolute like natural sciences, and in that close yourself off to my suggestions.
I am well aware that there is much intangible taste in the arts, but that is not what I was meaning to talk about. It's not just about taste.
Don't forget there exist "softer" sciences, like Psychology as well, which has relevance to the arts, and that allow for certain statements of usefulness in appliance.
The problems I pointed are not just a matter of art aesthetics anyway, but visual processing of the brain, which can be evaluated better than a gut feel.
Art also is methodical, so it has scientific aspects, in its success and popularity, as well as sciences have artistic aspects in inspiration for practicality.

Discussion with me will be unproductive from here on out though, as my critique will not get more useful as it has.
I think then that I overstayed my usefulness to you, as I do often here. What contribution I had to make, I did.

And yet I look very much forward to seeing your progress, on which the others will support you better than I can.
It's your thing, and you got it. It will get somewhere good, and stays an interesting endeavor no doubt.


« Last Edit: September 22, 2015, 10:07:12 am by RAV »

Offline Ai

  • 0100
  • ***
  • Posts: 1057
  • Karma: +2/-0
  • finti
    • http://pixeljoint.com/pixels/profile.asp?id=1996
    • finticemo
    • View Profile

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #36 on: September 22, 2015, 10:16:20 am
Ai: Okay, like this? MADE A DRONE.

Thems some thin lines, son! the object line width is totally controlable - you use the vertex alpha value to multiply the width.
Yeah, that's pretty good. The only issue I can spot seems to be at the ends, where variation in line width due to varying pixel alignment becomes a bit apparent.
Quote
...and as for "AutoHinting"... yes, that's completely possible. Even easy! You run into the problem we did last time, though - your assets need to then be built on a grid...and that will only really work at a single zoom level. Zoom in and out, and your exact pixel positioning goes away. :(
That just sounds like.. manual snapping. Autohinting is more like dynamic snapping, so that whatever scale you're rendering at, it's snapped to those pixels, not whatever pixel scale you started out with.
I'm not super well up on 3d but I think the 3d equivalent would basically involve projecting in advance (that is: calculate where the corners would be in the render. Now snap those to whole pixels in render terms. Now do the actual rendering with the adjusted vertex locations. ) I think it might fix the issue where those aerials are kind of stairstepped towards the ends. Anyway, that's obviously beyond the scope of a shader, so...

Quote
And multiple lights with lighting gradient maps... totally possible as well! I know because I've done it. Here's a test I did for a tribute to the Star Trek 25th Anniversary art style. As you can see, the lighting is ramped, there's multiple colors, and they all play nice together.
http://www.hedfiles.net/STMobile/STMobile.html
Can't see shit, cap'n. Blank white rectangle on top of a blank white page.
(not surprising, Unity has never worked on this system or any other Linux system I've had. Maybe I'm missing some dependency, dunno.)
 
Quote
Seiseki: Oh, gotcha. Here's the scene with Dawnbringer's 16 color palette with no dithering. :D

Looks pretty clean.
If you insist on being pessimistic about your own abilities, consider also being pessimistic about the accuracy of that pessimistic judgement.

Offline Howard Day

  • 0010
  • *
  • Posts: 205
  • Karma: +0/-0
  • Hey, I'm a doofus.
    • View Profile

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #37 on: September 22, 2015, 10:41:41 am
Ai: Hahahahahaha! Wow. First test of AutoPixel snapping. It totally works.

Now I just have to get it to play nice with the AA. :P

Offline Ai

  • 0100
  • ***
  • Posts: 1057
  • Karma: +2/-0
  • finti
    • http://pixeljoint.com/pixels/profile.asp?id=1996
    • finticemo
    • View Profile

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #38 on: September 22, 2015, 11:26:47 am
Lol.
I guess the snapping code is using units 8x too big than it should? it seems to be going in 8px chunks rather than.. well.. 1.
If you insist on being pessimistic about your own abilities, consider also being pessimistic about the accuracy of that pessimistic judgement.

Offline Conzeit

  • 0100
  • ***
  • Posts: 1448
  • Karma: +3/-0
  • Camus
    • conzeit
    • View Profile
    • CONZEIT

Re: Realtime Rendering of 3d Meshes as Pixelart

Reply #39 on: September 22, 2015, 01:47:25 pm
ok now you just have to have some kind of hologram glitch level or something just to show that. fukn awesome

Also I kinda like the white mech with the dawnbringer pallete...I was missing those kinds of hues

do you have separate maps for the shadow bias thing that we can see?
« Last Edit: September 22, 2015, 04:50:06 pm by Conceit »