Editing normals

Hi I’m new here and I’m pretty new to Blender. I’ve been working in 3DsMAX now and then for about nine years though, just hobby.
I’ll just get to the point… I know how to flip normals and how to recalculate them, but is there a way to edit them manualy, preferably vertex normals? I looked for an answer in the wiki and the forums and only ended up on pages about recalculating normals.
I want fragmented objects to fit seamless, so you can create a sphere that consists of a few parts without seeing it does so… or creating a game map with 3D tiles without seeing the tile edges.
Thanks in advance.

Right now there’s no way to edit directly vertex normals in Blender. They are rather calculated by averaging (?) the adjacent face normals. Face normals are the cross product of the vectors forming the diagonal of a quad, or 2 edges of a triangle.

Darn, I’ll request it then, as I can’t find it in the list of feature requests either. :frowning:

Ok, for all others searching for this feature…
I sent about to Joeri Kassenaar of the Blender team and he told me it’s on their todo list, it was requested some times before.

After more than 12 years I finally found the answer I was looking for. :slight_smile:

Seamless blocks at last! :smiley:

Increasing the poly-count won’t be a headache either using this Data Transfer Modifier. I think I’ll make a little “selected to active” script for this to make adding the modifiers more convenient.

1 Like

For those interested in transferring normals of surrounding objects to the active one. Here’s a script to create the modifiers with the option to apply them immediately.

import bpy

active = bpy.context.active_object
apply = True

for ob in bpy.context.selected_objects:
    if active != ob:
        transfer = active.modifiers.new(ob.name, 'DATA_TRANSFER')
        transfer.object = ob
        transfer.use_loop_data = True
        transfer.data_types_loops = {'CUSTOM_NORMAL'}
        transfer.loop_mapping = 'NEAREST_POLY'
        transfer.use_max_distance = True
        transfer.max_distance = 0.1
        
        if apply:
            bpy.ops.object.modifier_apply(apply_as='DATA', modifier=transfer.name)

Now also available as an add-on! :smiley:

You can alternatively use the add-on YAVNE, apart of weighting normals by assigning face influence, you can transfer individual normals and copy/paste coordinates. I personally use it daily at work, together with transfer normals modifier.

PS: I just realized the post is 12 years old, my reply might be irrelevant. Thank you for the add-on.

Well, my original question is from twelve years ago. Back when I was 18. I only recently found the answer. :slight_smile:
YAVNE did not exist back then either. Which I don’t think I’ll use as an add-on, btw. But thanks for the link, it may serve an example. Its normals preserving remove doubles alternative seems interesting. Which I’m thinking I will add as a Fuse operation in Object Mode.