Alright , so this is as close as I got for today... I just saw you gave an in depth answer so first I have to thank you for that and I will try the tomorrow or the next day and let you know how that works out.
So for this image I figured out a way to mix stencils to paint this plane , which is almost exactly what, the only thing I need to figure out is how ...
Consider a mix shader node in your shader nodes where you can change the contribution of each texture. A texture can determine the contribution pixel by pixel. Two standard standard textures linked to Two BSDF shaders linked to a mixed shader. The relative contributions are mixed in a ratio specified by a hand painted texture. Image above.
Texture slot ...
Track to Quaternion
To align to vertex normal.
The normal orientation with respect to vertices appear to be a track to quaternion, tracking Z in direction of normal, and using -Y as up. Since the only options for up in Vector.to_track_quat(to, up) are 'X', 'Y', 'Z' track with Y up and inverting the scale in X and Y.
Simple example. Run in object mode, ...
So the problem wasn't in the "Merge by distance", but rather because after I imported the model all edges were marked as sharp and I cleared them. If I don't clear them everything works fine. So to anyone having the same problem leave the edges marked as sharp.
While the question is rather old and solved, it's still an important and underestimated topic leading to other questions coming up, so i would like to add one approach i did not see in the available answers here, for completeness sake.
Normals (or the orientation of the faces) in Blender can be made visible in 2 ways, one way would be with little lines ...
Note: This is only a partial answer, since more information were provided in the comments after it was written. Color management is nonetheless relevant for a correct output.
The reason your correct value of $0.5$ is saved as $0.735357$ is because you're using the Standard view transform and your Display Device is set to sRGB.
The scene linear values are ...
I would recommend bmesh for this.
No face selection required, no toggling mode, no bpy.ops.mesh... operators.
Because a recent answer used an edit mode bmesh, here is an edit mode version
Translates all vertices 0.1 locally in the direction of their normal for each face.
Example scripts, move all faces along their normals.
context = bpy....
There are a few different things that might be causing your problem.
Firstly, there's no way to add thickness without increasing the tri/poly count. Polygons only have one face, so if you view them from the "wrong" side, they are invisible. There is no way to avoid this. If you want to see both sides, you have to have another polygon that is facing the ...
It's because the vertices of the faces are listed in different orders.
The first face (red) is listed clockwise, and the second face is listed anti /counterclockwise, when viewed from this side.
The normal of a triangle can be calculated from the cross-product of two of its edges. The function is not commutative, so the order in which the edges are taken ...
Unfortunately i dont know a way to display the normal vector in the viewport.
Here are two options to get the normal vector. I'd say it depends on what you want to do with the normal vector after getting it...
Option 1 Python:
mesh = bpy.context.object.data
selected_verts = [v for v in mesh.vertices if ...
Example of assigning custom normals based on vertex selection. It's just a slight modification of the code given in this answer and assigns a custom vector to vertices in selection.
Run the script in Object Mode and enable show_split_normal property in Edit Mode:
context = bpy.context
ob = context.object
me = ob.data
me.use_auto_smooth = True