5
$\begingroup$

I watched this video about the art style of popular fighting game Guilty Gear Xrd, and something which really interested me was the method that the artists used to get rid of ugly automatic-normal artifacts. They would manually mess with the normals so as to make parts of the model that are round shaded as if they were flat.

The example shown in the video is of a character whose face's normals are grouped on each side, on the chin, and under the eyes so as to make the toon shader look more like a traditional 2D anime.

With modified normals:

Without modified normals:

Notice that this sort of ugly artifacting happens when a toon shader is applied to Suzanne; look at her right eye and nose.

This would be very easily fixable if there were a way to group the normals on the left and right sides of the face.

$\endgroup$
4
  • $\begingroup$ It's not technically artifacting, as it is accurate to the mesh. This effect is usually done by transferring normals from a different, simpler object. Blender's Data Transfer modifier can transfer normals to some extent, but it does not give good results due to glitches and crashes, and strange behavior such as marking all your mesh's edges as Sharp. $\endgroup$
    – Ascalon
    Jul 25, 2016 at 6:43
  • $\begingroup$ You may have a look to the 'normal edit' modifier $\endgroup$
    – lemon
    Jul 25, 2016 at 8:58
  • $\begingroup$ i would really like to know the answer to this too $\endgroup$
    – A guest
    Sep 3, 2018 at 8:16
  • $\begingroup$ Are you talking about the shadows? Shadowing is determined from literal geometry, not from normals, and if you want to get rid of shadows, you have to use shadeless shaders-- no diffuse->shader to RGB. Or else, disable shadowing on the material, most easily done in properties/material/settings/shadow mode for Eevee. $\endgroup$
    – Nathan
    Jan 1, 2021 at 1:50

4 Answers 4

2
$\begingroup$

There are a number of tools for controlling custom normals. Any tool that adjusts custom normals requires that autosmooth be enabled. I recommend setting autosmooth angle to 180 when messing about with custom normals, as there are circumstances where Blender can create custom normals for only some verts, leading to autosmoothing other verts.

While there are a number of ways to individually tune normals, I don't find that useful. It's too easy to screw things up, and you can easily have too many normals to be able to meaningfully tune. Thankfully, there are a lot of other great tools you can use to modify normals en masse.

Your first tool is a normal edit modifier, which can let you create custom normals from the position of some other object-- either radially from the position of that object, or parallel directional normals, from the origin to the object. These are useful for creating simple spherical or flat normals. You can tune the mix factor and limit with a vertex group. You can apply the modifier to write the custom normals, or leave the modifier live.

enter image description here

For more complicated normals, I'll generally use a data transfer modifier that copies the normals that I want from some other object. This lets me tune normals exactly how I want, but through the use of all of the mesh tools with which I'm familiar; I can easily visualize the normals, and with reasonable choices, I'll always get continuous, reasonable normals (unlike manually editing normals):

enter image description here

For this kind of task, nearest face interpolated is my preferred mapping. Again, I can limit with a vertex group; I can apply or leave live.

Note that if the goal is use in a different renderer, you need to apply, and while live custom normals can fix a lot of topo problems, applied custom normals can't. However, it is relatively easy to recreate most live custom normals in a game engine shader if needed.

Sometimes I'll do a data transfer of normals, by topology, from a copy of the mesh:

enter image description here

Left to right: base Suzanne, Suzanne with data transferred normals, mesh edited Suzanne used as target of data transfer.

This is pretty much the nuke level of normal editing. I can create any normals I want, I can use any mesh editing tool I can dream up to create those normals, and I'm guaranteed smooth, mesh-appropriate normals.

$\endgroup$
3
$\begingroup$

you cannot group the normals in blender, however there is a very easy workaround to this problem that I have used myself. go into edit mode, tun on show normals.enter image description here

then, select the faces of the normals you want to group, press alt+n or find normals in the mesh dropdown and then press point to target. nothing will happen click anywhere and you should get something like this in the bottom left corner of blender enter image description here

set the z to the z location of the normal in the world. then set the target as far from the model as possible without changing the final result(the farther the better this is extremely important) this does need a bit of tweaking afterwards you can do this by switching to vertex select mode then selecting one of the normals you tried to group that is working as intendedenter image description here then press alt+n and press copy vectors then select the vertices that are not working properly one by one and press alt+n and press paste vectors.Hope this helps.

$\endgroup$
1
  • $\begingroup$ Big PSA - I had an issue where I couldn't see any changes I made to normals. Turns out if you're using a Subsurf modifier, you need to make absolutely sure to go to its "Advanced" dropdown and enable "Use Custom Normals," otherwise it'll swallow any changes you make. Took me forever to figure out! $\endgroup$ Dec 2, 2021 at 6:22
1
$\begingroup$

Based on the other answer I created a Blender add-on for this exact purpose called TiNA which allows you to more 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 normals source mesh (based on the actual face mesh) by selecting it, then selecting the target object and hitting Alt+N.

$\endgroup$
1
$\begingroup$

The easiest approach would simply be to utilize the Abnormal addon, where you can find here for more: https://github.com/bnpr/Abnormal/tree/v1.2 Tutorials: https://youtu.be/cCEDmxFjQ3k

After downloading it as instructed, you could: Select the vertex normals you want to edit in edit mode, and average them. This will give the Guilty Gear Look you want for the face. This is how Arc System works snap the face shadows. However, the addon is very flexible, and many of us in the BNPR use it in various ways.

This tool reflects upon the same type of tool Arc System works utilized in SoftImage. There's no better tool than this for what you're looking for.

Guilty Gear's preset before making the game can also help give you a perspective when editing normals: https://www.youtube.com/watch?v=iH3p8N7qbv8

$\endgroup$
4
  • $\begingroup$ Hi, thanks for the post. This site is not a regular forum, answers should be substantial and thoroughly explain the solution and required workflow. One liners and short tips rarely make for a good answer. If you can edit your post and provide some more details about the procedure and why it works feel free to restore it, otherwise it may be deleted or converted into a comment. Perhaps add a few images illustrating the workflow and final results. See How do I write a good answer? $\endgroup$ Jan 25, 2022 at 17:27
  • $\begingroup$ I'll edit a link, but it's really that simple in 2022 [been this easy since the founding of Abnormal]. There's really no way to further explain something so basic, my friend. You literally follow what I mentioned above, and you get the result he's looking for. I've been into 3D/2D stuff since 2015, and us in BNPR know this tool quite well, so it's quite accurate over what he's looking for. You have to be in this field to really understand what he's asking, I used to ask the same question when there were less resources back in the day. Abnormal is the most popular approach. $\endgroup$
    – Marquis
    Jan 27, 2022 at 15:19
  • $\begingroup$ This is a Q&A site meant to help any and all future visitors not just the OP. or people experienced in a certain matter. That includes people who haven't been in this field at all and even potential beginners. Answers here are both required to explain the basics and be self contained without relying on external information, otherwise you can post these as comments. $\endgroup$ Jan 27, 2022 at 15:26
  • $\begingroup$ @DuarteFarrajotaRamos I added a link to the video in the original post. I don't see why this convo is going so deep... when I answered the question he's/she's looking for that I once asked. This question isn't a step by step, since if we go by that standard, you'll need to go on YouTube to understand Abnormal or non-addon step by steps in various ways that mostly do not work, since we in BNPR tested most ideas. It's a multifaceted addon, when we in the BNPR community are still dabbling w new ideas on a daily basis. It's not a comment, but a direct answer. And it's upvoted as being useful $\endgroup$
    – Marquis
    Jan 27, 2022 at 15:34

You must log in to answer this question.

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