The polycount as in the number of polygons doubles, yes, but since it’s just turned quads into triangles, it should still take the same amount of video memory, so it’s all good.
And I said nothing about decimating. I just want you to export as triangles to make sure there is no difference between how Substance and Blender will split the quads. Because any discrepancy here can and will ruin a bake every time.
False alarm, I must have duplicated the mesh accidentaly, not you.
helluvamesh, dude, thank you. I see why you’re Hellvamesh now. I appreciate the help and the time you took to write all that. I am going to try it as soon as I get the chance. The Non-Color data was a stupid rookie mistake I made while preparing the file for the forum, so just ignore that, the original file has it right.
Do you think that edge loops affect the process in the slightest?
I was able to bake a quite good OBJECT-SPACE normalmap with the Handplane Baker. This should be possible with with Blender too, but no matter what I tried I just couldn’t get it to work. Cycles always rendered the OS normalmap it baked wrong.
.
Gun_object_space_normalmap.blend (1.7 MB)
There are still small artifacts but I guess those could be eliminated by using a baking cage. Also, I found intertwined UVs at multiple places.
What does this mean? Intertwined UV’s?
Badly layed out, self-collapsed uvs.
Is there a way to detect those? Like some kind of “select messed up UV’s” kinda menu option?
Run this script in edit mode.
"""RUN IN MESH EDIT MODE TO SELECT MIRRORED UVS"""
import bpy, bmesh
import numpy as np
obj = bpy.context.object
mesh = obj.data
uv_maps = mesh.uv_layers
if len(uv_maps) > 0:
bm = bmesh.from_edit_mesh(mesh)
uv_layer = bm.loops.layers.uv[uv_maps.active_index]
bpy.ops.uv.select_all(action='DESELECT')
for face in bm.faces:
uvs = [tuple(loop[uv_layer].uv) for loop in face.loops]
x, y = zip (*uvs)
# is vert order ccw?
if 0.5 * np.array(np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1))) > 0:
if not bpy.context.scene.tool_settings.use_uv_select_sync:
for uv in [loop[uv_layer] for loop in face.loops]:
uv.select = True
face.select = True
bmesh.update_edit_mesh(mesh, False)
DUDE, thank you so much, man, I really appreciate the time you took to do this!