I have some old models that I need to repair. When I use Tris to Quads it doesn't work properly preserving the edgeloops because of the curvature of the models. But the UV map of the model is perfectly squared. Is there a quick way to remove the unwanted edges using the UV map? I can do that manually but it takes way too much time.
The UV layout for this model makes selecting rows very easy with the Box Select tool. (I hid the ends because they have hidden faces that are causing problems.)
By selecting every second loop of the UV's and then using Tris To Quads, you can establish guide loops that allow you to use the tool again and achieve consistent results.
b for Box-Select. Also make sure to activate the icon for use_uv_select_sync as shown in the animation.
Now use Tris to Quads on the selected rows, then select everything and repeat Tris To Quads.
Now you can repair the few mistakes by using the Join tool j. In the following case, I used Join and then used Make Face f to make a quad at the center of the error point.
There doesn't seem to be an easy way to convert the existing mesh to pure quads without quite a bit of manual intervention.
Here's an alternative way to create a new mesh with quads and keep a reasonable and even UV mapping.
- Create a cylinder with no caps around the dress object
- Copy the height of the dress to the cylinder so it is exactly the same height
- Make sure the top and bottom of the cylinder match exactly the top and bottom of the dress Add subsurf mod and shrinkwrap mod (with dress as target) to cylinder Adjust subsurf as desired
- Apply shrinkwrap modifier Select vertical edge loop at back of dress, create seam UV unwrap cylinder object with cylinder projection type
- Adjust UV map to fit UV image Trim vertices at top and bottom of cylinder
This may seem like a lot of steps, but it goes quite quickly. Let me know if this helps at at all
This works for me:
# go into edit mode
# deselect everything
# Get the active mesh
obj = bpy.context.edit_object
me = obj.data
# force face select mode
bpy.context.tool_settings.mesh_select_mode = (False, True, False)
# Get a BMesh representation
bm = bmesh.from_edit_mesh(me)
count = 0
# find every second face and select the first edge
for face in bm.faces:
if (count % 2) == 0:
count = count+1
# dissolve edges
# deselect everything
# Show the updates in the viewport