Blender Extended Expressive Rendering (BEER): Extending Blender Internal

Hello fellow stylized render users. Currently Blender Internal is in a bit of a development standstill, despite a vast user base. Many would love to see some enhancements, which occur occasionally, yet there is much room for improvement and new features.


Myself and few other artists, proposed to fix current toon shader and ultimately introduce a new kind of shader that is not yet available in other render package. X-toon. It has many great abilities that open to wide shading area not possible before.

Link to paper and video demonstration: http://hal.inria.fr/inria-00362888/en

The main idea of eXtended-Toon (X-Toon) is to allow users to add 1 more dimension to the 1D color ramps to produce 2D color map (either vector or raster), extending the capability of the standard shading process. 2D map is a map of colors, extremely lightweight, making it possible to run in real time preview and be used in Blender Game Engine.

Quote: “The main question to answer with this technique is: What should I put on the vertical axis of the X-Toon texture?” [Pascal Barla, X-toon researcher]

The vertical axis of the 2D color map can be assigned to almost anything, extending pynode in an intuitive manner.


We have been hard at work researching different toon styles and have formulated some conclusions of parameters and use cases. A draft proposal has been compiled for your reading pleasure.

Draft proposal: http://wiki.blender.org/index.php/User:LightBWK

Old proposal with few use cases: https://docs.google.com/document/d/1D1fuDh964WNb2Yrkh9249hSxZLzmuTfheRzgf4DILoo/edit

We have also branched out to #blendercoders IRC channel to inquire about the viability of the coding:

http://blendernpr.org/ton-says-yes-for-better-and-possibly-the-best-toon-shader-for-blender-internal/

The essence of the conversation (kaito is Ton):

“<kaito> this depth-based toon control is very easy to code
…<kaito> also a good reason to keep blender internal working https://lh3.googleusercontent.com/JAXyPhTCxbFWfZLAPCS63Gx-IrzHLa_6kzfCpp3wcYPA8F3CwEC56Z06YmP8OWrlQu9sfcE1--6KYvq_bgzZ8hQHsVaKbMmNmet7LeFwX-YSPR7Gy8wGOK9E

With that, we would love to see this feature added to Blender’s already decent arsenal to help make it more of a stylized/NPR powerhouse, especially with Freestyle finally merging. We are seeking coders who can run with this idea, as it has already been given a green light by Ton. In the grand scheme, this will help keep BI alive by advancing its already capable yet neglected features.

Bonus, an early hacked X-toon for you to play.
https://www.dropbox.com/s/hdjf5g7w28f8z9n/X-ToonLandscape.blend

UPDATE: May 17 2013
This thread has evolved quite nicely, and we would like to rename the feature set to…
Blender Extended Expressive Rendering (BEER)!!

We realized that “Toon” was a bit exclusive of other styles, so in order to be Inclusive, I think this is a much better term, and funner!! Thanks @Light BWK for that!

Also Please check out the WIKI:
http://wiki.blender.org/index.php/User:LightBWK

Jikz, I welcome your efforts. We need more artist friendly choices within Blender. I would enjoy being able to generate “watercolor” style renders, along with the choices you have outlined. One of the things I would also like to be able to do is generate a hand drawn shader effects. I currently do this in Lightwave, using a Gradient Ramp and using three(3+) hand drawn shading patterns for different levels of darkness, which are then applied to the render. This can be with cross-hatching aspects, or contour following lines. It is applied to the objects, not applied globally to the final image, so they can be treated individually. I had been talking to David Maas in Germany some time ago, who was working on some very interesting software, current status, unknown. http://wiki.animationsinstitut.de/doku.php?id=aqtree:generalinfo:aqtree
Best to you in your efforts.
Paul

Other than allowing more advanced toon shading together with more realistic capabilities, what will this offer users that they can’t do in the Freestyle engine that just got into trunk?

I agree that there would still be a use for BI, but my personal opinion on that puts it more in line with regular non-physical rendering than 2D shading (which would include a major expansion in legacy-styled features such as what is seen in Renderman). This would ensure a clear enough difference from Cycles for it to find its own market.

watch the video, that one shows another very important part of the xtoon-shader: Simplifying shadows.

Right now, if you use the toon shader on a realistic face, you get all these awkward dents. Hell, even feeling a non-realistic face will result in strange shadows when comparing it to actual 2d work. Let alone if you actually animate it.
The solution to this is stylised shadows: The silhouette is protected, but the shadows are more like the shadows on a sphere or cilinder.

Xtoon is more or less an improvement of the existing Toonshader, and combined with improved Free Style(TK is still working on it, after all) I think it could become very powerful.

Blender internal should not get any upgrades, and Imho freestyle was a bad move.
All upgrades/man power should go towards Cycles. Expecially speed improvements.

I’m sorry but did you just forbid a completely unaffiliated group of people to work on an aspect of Blender that they want to use and condemn years of hard work by people who gave the Blender community tools that didn’t exist before for free?

ALL because it just happens to not be an interesting area for YOU?

Jesus christ man, there is a limit to how ignorant and self-centered a person can be and I am really struggling to hold back a mountain of bad words I want to say to you right now.

@Freemind
Aside from the part where I deeply disagree with you because I think it’s really important to have powerful NPR functionality, I don’t quite think you understand how opensource development goes. I mean, you really don’t think that Freestyle’s inclusion took away from Cycles development somehow, do you? Because you’d be deadwrong. (More likely, it would have meant there was just less included in Blender if the freestyle intergrator didn’t contribute, because he wouldn’t have contributed at all)

Good work and cool idea, Jikz.

If one watches any cel animation cartoon closely, you’ll see that there are usually only two distinct colors - the primary and then the shading. And because I’ve been building models based off the old Batman cartoon, I was frustrated at BI’s Toon Shader’s ability to replicate this. I started a thread here seeking assistance, but the issue was never fully resolved. (The best solution seems to be to use just one Hemi Lamp, incidentally.)

So anyway, for the purpose of truly replicating old cel animations, such a shader would be very helpful, even mandatory.

@Therahedwig- This idea has been added to the proposal, thank you for the insight!

@paulhart2- That is a nice bunch of NPR info! Maybe you can nudge your contact to do more work? :wink: I feel that ATS can only help with watercolor. That is a huge new discussion, but from my research would involve Region aware rendering combined with voronoi stippling and stroke rendering…<–too much for this thread :slight_smile:

@Ace Dragon- as @Charblaze points out, Freestyle should not be synonymous with “shading”. It is only edge detection and stroke rendering. (“Inking” if you will)

@DavidBrennan- Yes, Blender Toon shader is very limited. In fact I never use it. I use Lambert and color ramps for simple, and turn to material nodes for anything more complex than simple 2Cel shading. One thing ATS will do, is allow one to essentially interpolate shading between simple cel (hard edge) and blended cel (soft edge) based on another parameter, IE distance or surface curvature (proposed data inputs).

Here is another simplistic view of how ATS is proposed to function:


This method is using simple Blending in Gimp to achieve the rudimentary resulted 2D map. My personal vision would be to use a form of vector possibly to create these maps in a cohesive fashion within Blender. Still, a simple 256x256 raster will suffice in most situations, keeping it light weight.

This method still will allow explicit shadless results, or as in the above demonstration, will allow it to be utilized as a factor in a material, like the standard color ramp can be (by remaining greyscale).

just wanted to +1 this, I too learnt that the toon shader is pretty limited try to use it on flat surfaces with more than a single light and you have issues, normal maps will also completely fail, Lambert with ramps is the way to go, toon specular seems to work well though.

Can I just point out that cycles is very good at doing this.

that said, I’m in favour of anything that add options and variety to render options. Good luck with this. I’d offer to help but I don’t know the first thing about programming:(

Good luck!

Could not this be implemented within an OSL framework? I mean, it’s all about the math, right? Has something similar been coded in RSL that could be adapted? I’ve nothing against improving BI, though, I’m just curious…

@daveleitz- I am sure OSL could provide this functionality, however, it is fairly well accepted that Cycles is not as optimized or as fast for the type of rendering NPR/Toon renderers are trying to achieve, although I had explored its possibility. We (Ton included) feel that ramping up the material interface to a more usable/functional form for the BI will be the best option.

@Lockal- we have worked on node setups similar to this. You are on the same page I think. Regarding the 2D mapping, I feel this is the weakest link as far as Usability is concerned. I envision an internal way of doing it–Blender already uses Curves for mapping other data, I feel that if one could assign colors to vector nodes, and then interpolate between those points, it would closely result into something useful for this application. Here is one idea to venture with:
http://tavmjong.free.fr/SVG/MESH/Mesh.html
I do not think we need THIS much capability, but a way that is similar to editing current color ramps, expanded to 2 dimensions would be very useful.

Here is one of my early .blend files adopting the principal of using simple distance from camera to interpolate between soft and hard edge shading:

Attachments

X_Toon Test_Log.blend (734 KB)

This is not about me.
I choose a renderer that is best for the job. So I use BI too.

The two renderers are kept in Blender because Cycles can do what BI can’t and BI can do what Cycles can’t. However, this difference in features is closing as Cycles is getting more developed. In the future Cycles will probably do everything better then BI (including speed, I believe), which would render BI absolete and will have no good reason to stay in blender, just nostalgia or habit. Cycles is the future. Cycles replacing BI and becoming the new blender internal is Brechts goal, but that can’t be done till Cycles can do everything better or as good as BI.

The whole point of what i said is that all work done towards BI right now is going towards a render engine that is destined to dissapear from blender. And when BI dissapears, the feature will have to be ported into Cycles anyway, so why not do it for cycles in the first place? Working on BI is like painting walls in a house that is going to be taken down the other day. So no, instead of making improved toon shaders or other upgrades for BI, it’s far more logical to go straight for Cycles.

Don’t get me wrong, Having freestyle is AMAZING.
And it’s not a big deal, because it’s not BI, but a seperate renderer that just works on top of BI and probably can easily be made to work for both BI and Cycles. I don’t really know how it works exactly, but I guess it’s something like that.
I think freestyle started before Cycles was even anounced, I am not sure, but as soon as Cycles was anounced, freestyle should have went for cycles instead of putting all that work to make it work stable on top of BI.

freemind as said before- you are entitled to your opinion. The way you word it makes you sound like you are ordering around. :smiley:

It’s pointlessly stirring flame wars and delairing people from the topic, which is how would an ideal NPR material work.

I would love to see blender internal grow in the direction of NPR. Cycles is not ideal for everyone, as much as we like it to be.

You say BI is “destined” to dissappear, but your voice seems to be a minority right now. People are more interested in getting a useful new feature in blender.

It’s like someone saying- hey we should make a new type of ink! And you saying- no, dont make it, the pen technology is destined to die!

I would like to contribute by pointing the comunity to Pencil + rendered for 3ds max. Its an industry standard and currently used in the majority of mainstream animes.

@Freemind yeah you can go on all you want about how path-tracing is the future and how you think that Cycles is going to be able to do everything that BI can but faster and better. I already know what your vision is about Blender’s future and I can tell you that, that vision is unrealistic. The entire nature of path-tracing versus rasterizing makes your dream almost impossible to implement (I say almost because nothing is certain these days)

Still you can go on believing that the day will come when Cycles truly surpasses BI in every way possible. I have no problem with that but when you try to hinder development on “old tools” because you think they will become obsolete in the future and try to dictate what people want to do, that is where you start to piss me off.

This is one of the reason that i dom’t like Cycles and it users base, they think that Cycles is the best and Blender need to stop everithing for it, and if you use another render engine as LUX or BI, you hate Blender and you must be burnt in fire.

That’s sad

Let us try to focus on the needs and advancement of Blender Internal rather than the destruction of the opposed parties. This is useless banter on those who have fan-boy tenancies. We, the Expressive Renderers, the ones who will use BI as a tool, will keep enhancing it in a way that compliments Blender usability.

Cycles VS BI? It is a no contest. They both have there strengths and weakness. For the NPR crowd, Cycles will not likely ever be an optimized option. One major bottle neck is the calculation of BVH, which can take considerable time on large scenes. In that time, I may have already rendered my frame with Blender Internal.

Users of either, let us simply enhance Blender in any way that allows the broader userbase to express ideas and render our visions in whichever way we choose.

I don’t think everyone is like that though, I for one could see Cycles becoming a state-of-the-art pathtracing engine with the ability to do some cheats and other non-physical things while BI becomes a feature-complete legacy engine that can pretty much do anything you need it to do outside of physical accuracy like NPR and artistic rendering. (in other words, you add raster-based features and make it more like Renderman instead of trying to turn it into something based on raytracing, which really slows it down to begin with).

In short, differentiating the engines for different markets, thereby increasing Blender’s installed userbase. Additionally, there could also be future development of a bridge between the engines that would be designed to simplify and optimize workflows that involve compositing elements from one engine into the results of the other.

i’ll hold my tongue about the cycles vs BI part
ooommmmmmmmmmm, ooommmmmmmmm :smiley:

that aside, anything that increases my options as an artist is welcome :slight_smile: and i’m sure most will agree
personally, i’m a big fan of npr renders and i’v always felt that blender’s toon capabilities are limited compared to c4d’s sketch and toon for example.
this seems like a great idea and i hope it gets into blender