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$
3
  • $\begingroup$ btw - simply coloring it doesen't cut it since it needs to rotate and accordingly change its lighting :/ $\endgroup$ May 4, 2017 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, 2017 at 12:52
  • $\begingroup$ @CGEffex - hence my quote >>which kind of conflicts with the meaning of "normal"<< :) $\endgroup$ May 4, 2017 at 17:55

4 Answers 4

3
$\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 found 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 editing

$\endgroup$
5
  • $\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$ May 4, 2017 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$ May 4, 2017 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$ May 4, 2017 at 18:40
  • $\begingroup$ Already upvoted each one. Will mark as solved as soon as I try it out! Thanks a lot! $\endgroup$ May 5, 2017 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$ May 5, 2017 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$
1
  • $\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$ May 4, 2017 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$
2
  • $\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$ May 4, 2017 at 11:56
  • $\begingroup$ Fully understand. $\endgroup$
    – Nils Eisen
    May 4, 2017 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$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .