Anisotropic shading in Cycles

I submitted a patch to the ML, but I wanted to give you all a heads-up that there was something available for the brave until Brecht can review the patch. Here is anisotropic shading in action for Cycles. More info at the blog.

For those confused (e.g. myself), read this: link

Looks spectacular. Yet another facet of shading about which I was unaware. Was this implemented in BI? And, if so, how were the tangents calculated then? UV based tangents seem a little contrived. But then again, I’m no shader programmer.

[Edit] Went home, thought about it, and realized UV based tangents is duh. It’s just too bad about seams.

I don’t know if BI really implemented an anisotropic model, but by checking the “tangent shading” option it seems to do something similar. I have no idea how the tangents are calculated for that case.

I can tell you that UV-based tangents are not only common, they are essentially the de-facto standard. Automatically generating tangents is problematic in that the artist cannot control them very easily, and they cannot hide the seams/sinks as intuitively. With UV-based tangents, it is abundantly clear what the tangent direction will be.

I think combined with the interactive viewport for adjustment the UV method will work just great.

Awesome work Mike! Have you thought about starting up another Chipin, seeing as it has ended? Maybe just a paypal donation address?

You did it! Amazing! The guy who not only talk the talk.

The existing one was open-ended, but the paypal donation button still works on the blog as far as I know. Honestly, I got more donations than I expected, so I’m not going to harass people for more money. I feel like I’m still catching up (morally speaking) in submitting patches to justify the donations I’ve already got. :eyebrowlift:

Heh, it wasn’t too bad. I just had to figure out how to generate another corner attribute on the mesh (the tangents), and then get the SVM nodes to actually trigger a read of them and stuff them into the shading data. The other tricky part was that I had to find all the tangents around a vertex that share UVs, and average them all for those corners, or else there was still a slight faceting to it.

The first reply on the ML is funny…he went and used the smart UV project method for the UVs, and it created a bunch of discontinuous islands of UVs. That jacked his shading at the island borders of course. As I said in the post, it’s UV layout based. Buyer beware. :wink:

Any plans on what you will be working on next Mike?

Mike, is it possible to specify which UV set to use? This would be handy because laying out UV’s for tangent direction is not necessarily how you want to lay them out for textures. Also, as cekuhnen asked in the Cycles thread, is it possible to bend the tangent direction additionally on top of the UV’s to get radial effects etc.?

i didnt even know that you can use textures to tell teh render the direction. amazing.

how does a texture look for anisotropic shading?

From the other thread:
But I’ve also seen it done with black and white textures.

Yeah, as far as I remember, in Maxwell Render you can use b/w textures for anisotropic shaders, for example with a black and white radial map you could achieve the “metal spinning” look.

its important that the renderer supports black/white textures. its very easy to paint them.

Thanks for the work on this Mike, after reading the mailing list I really like where your head is at in terms of how things should work on the artist’s side.

thanks for the hard work MikeFarny!

that looks gorgeous, as far as i can tell this would not be possible (or rather hard to achieve) by just laying out the uv’s? could the anisotropic bsdf be extended to input a texture into it for the shaded directions? then we could just make a custom brush and texture a model in texture paint mode with the shaded directions? that would be realy awesome!

Thanks again for this wonderful contribution, Mike! I’m swamped with work these last days and couldn’t follow the mailing list, and what a nice surprise I found when looking today! I hope I find time soon to try your patch.

Thank you!

I think it’s possible to allow shaded directions to be determined by a map, but currently it will deliberately ask for the tangents to be calculated on the mesh. I’ll have to think about it, because that would certainly be pretty slick.

Well, I would hope I have an eye for what the artist gets to deal with, because I am surrounded by them at Tippett Studio, and they’re constantly reminding me of the implications on the workflow side of the tools I write. :eyebrowlift2:

Currently there’s no control for setting which UV layer to use. That’s a broader change where you would need to be able to select the UVs for all image maps as well, and I haven’t the foggiest idea of how to make the UI do that for me. Maybe DingTo would know how to get that specified in a node?