1
$\begingroup$

I have this problem: Copying Vertex Normals

I have a head and a body that need to be separate objects, but they need to join seamlessly. Viewing them in object mode, I see the seam.

I can use the Data Transfer modifier or operation to copy "Custom Normals" from the body to the head with a max distance set so only normals near the seam are affected. Visually, that works fine. The seam is gone in the view.

But I need to export and when I go into the data model, the normal vectors haven't changed at all, even when I use the data transfer operator or apply the modifier. That is, bpy.object.data.vertices[1793].normal doesn't change before and after the operation (where 1793 is on the seam). So what is the view using to show the transferred normal? And how can I get at that normal through the data model so I can export it properly?

$\endgroup$

1 Answer 1

0
$\begingroup$

So it seems that data transfer for custom normals works opposite to other data transfers. The object you select first receives the normals from the active object.

The operator works by adding custom normals to the target, not by changing the regular normals.

The custom normals appear to be oriented backwards to the regular normals, and backwards to what you see on the display. If I make the standard cube and select face 0, its normal is (-1,0,0) but the custom normal on one of the verts in its loops is (1,0,0). That seems wrong to me, but I don't know how else to interpret the data.

I'm still not sure how to access these normals. Making a bmesh and using calc_normal on a loop isn't given the results I expect. On the cube the custom normals are still pointing along the axes even when the visuals say the cube is smoothed.

Edit: When I look at my object's mesh's loops and access the normal property of each loop, I see what I expect: The normal points in the direction I expect and it matches what's shown visually. But the bmesh is not picking them up in a way that's obvious to me.

$\endgroup$

You must log in to answer this question.

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