1
$\begingroup$

I was wondering if there's a way to only virtually rotate a face so it gets its light from a different angle, yet the geometry stays the same (like a normal map, but manually face per face) So in essence - rotate a face's normal (which kind of conflicts with the meaning of "normal")

It's a low poly style where I want to have some shading like in a bump map, only it's very low poly and I'd like to design it face per face.

So f.e. - I have a face along an edge where I know its "virtual" angle is slightly more upwards (like bevelling an edge) - but the geometry regarding that face and the ones connected to it did not change.

Especially a problem in a corner where some of those faces would meet and if rotated in geometry intersect and would have to have additional faces that also have additionally different shades due to the geometry.

Cheers and thanks a lot!

$\endgroup$
  • $\begingroup$ btw - simply coloring it doesen't cut it since it needs to rotate and accordingly change its lighting :/ $\endgroup$ – Wurzelfritz May 4 '17 at 10:57
  • $\begingroup$ Mathematically, a "normal" is a line that is perpendicular to a given object. In the case of a face, this results in straight outward (or inward) facing normals. Changing the orientation of a normal changes the definition of a normal and therefore it is no longer a normal. So I believe what you are asking is not possible in the way you are asking it. Have you considered painting a bump map instead of a color map? $\endgroup$ – CGEffex May 4 '17 at 12:52
  • $\begingroup$ @CGEffex - hence my quote >>which kind of conflicts with the meaning of "normal"<< :) $\endgroup$ – Wurzelfritz May 4 '17 at 17:55
1
$\begingroup$

What you are looking for are generally called Split-Normals, these are normal values that are stored independent of the geometry they belong to.

Blender has built-in support for them, and even has a modifier that allows basic editing. It can be found in the Properties Window > Modifiers > Modify and is called Normal Edit modifier.

It provides basic control, but as of version 2.78, as far as I know it can't be manually controlled as you desired. To best of my knowledge there is no builtin way to manually adjust per-vertex or per-face normals in Blender natively.

There may be third party addons that do allow this though.

One such example is Blend4Web's Normal editor. The addon's greater goal is completely different, but if you are willing to install its considerable size it does provide Normal editing tools among its functionalities. It can be dound under the 3D View > Toolshelf > Blend4Web Tab > Normal Editor.

enter image description here

EDIT Fresh from the news page, it seems that for GSOC 2017 there will be a project tackling Normal editng

$\endgroup$
  • $\begingroup$ aha aha.. might be what I need! Do you know if it can edit face normals separately? Or in the example you postet - could the Addon rotate the normals of only one face of the cube? $\endgroup$ – Wurzelfritz May 4 '17 at 17:58
  • $\begingroup$ I think so yes. If you select only a few faces at a time, only the normals of said faces should be affected. $\endgroup$ – Duarte Farrajota Ramos May 4 '17 at 18:18
  • $\begingroup$ Fresh news, seems like GSOC 2017 might bring some new goodies in this area, answer updated accordingly. Also if an answer solved your problem consider marking it as accepted, or if it helped you at least upvote it. $\endgroup$ – Duarte Farrajota Ramos May 4 '17 at 18:40
  • $\begingroup$ Already upvoted each one. Will mark as solved as soon as I try it out! Thanks a lot! $\endgroup$ – Wurzelfritz May 5 '17 at 11:02
  • $\begingroup$ I went through blend4web's description page and it seems it's exactly what I'm looking for, so I'll mark it as solved and also hope for the GSOC Version! $\endgroup$ – Wurzelfritz May 5 '17 at 11:13
1
$\begingroup$

Assuming you are using Cycles, you could use vertex colors as an input to mix between two different shaders where one of them has its normal slightly offset, like this:

Material setup

Here I am using pure white and black to control the offset, but you could of course use any value to get different looks per face (or vertex).

$\endgroup$
  • $\begingroup$ Thanks a bunch! I'll think about it - But since i'll need plenty of different offsets then I assume it'll be a tedious workflow too :/ Kind of like having a different light source for every angle I need and applying those exclusively to each face :/ $\endgroup$ – Wurzelfritz May 4 '17 at 17:57
0
$\begingroup$

I would use a normal map for that. Otherwise I don't know of any other option. I'm not an expert with normals but you could preview the normals and then make your own normal map but with different colors and just plug it into the normal map node.

$\endgroup$
  • $\begingroup$ hm.. after continuing to scour the internet I'm afraid I'm chasing ghosts here. It's just a more tedious workflow with normal maps. I'd love to not have to edit an image back and forth, have a complicated wrapping etc.. Maybe anyone else chimes in here with some huge revelation? $\endgroup$ – Wurzelfritz May 4 '17 at 11:56
  • $\begingroup$ Fully understand. $\endgroup$ – Nils Eisen May 4 '17 at 12:51
0
$\begingroup$

I created a Blender add-on for this exact purpose called TiNA which allows you to easily transfer normals between objects. TiNA basically turns the somewhat overwhelming Data Transfer Modifier into a set of more comprehensible operations.
There's a special branch for those using Blender 2.80 beta.

TiNA|

 Hotkey           | Operation 
------------------|-------------------------------------------------------------------
 Alt+N            | Transfer Normals from selection to active object
 Shift+Alt+N      | Transfer Normals from active object to all other selected objects
 Ctrl+Shift+Alt+N | Clear Custom Normals data for entire selection
 Alt+W            | Wrap Normals

In your case you could transfer the normals from a source mesh by selecting it and the target object, and then - with the source mesh as your active object - hitting Alt+N.

Example results

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.