What's the fastest way to turn a triangular face into three quads?
5 Answers
Subdivide triangle. Select face of middle triangle. Repeat. Select inner vertices and use AltM to merge at centre.
My 5 cents. What's yours?
p.s. no need to go into vertex mode. Face select and AltM is enough.
-
$\begingroup$ It is also possible to: Select triangle in middle -> Poke Face -> Select All -> Tris to Quads $\endgroup$– user38881Jul 10, 2017 at 18:54
Subdivision Surface modifier with Simple mode
Just add to your object a subdivision surface modifier from the list and choose the Simple option.
This method is obviously not good if you would like to subdivide only a subset of faces of your object as the modifier is being applied to the whole object (in this case made of a single face).
-
3$\begingroup$ Still a nice one... $\endgroup$– user38881Jul 9, 2017 at 19:07
-
$\begingroup$ This is actually the best solution I have seen so far, only requires like three button presses $\endgroup$– sam1370Sep 16, 2018 at 1:33
I guess you could always use the shortcut and not model it all. :)
The Add Mesh Extra Objects Add-On has been updated in version 2.79 and now includes a triangle object. It is found under Add Mesh>Math Function>Triangle. There are options for 3 and 6 quad faces, and 3 tri faces.
If you do not have it enabled already, just enable it in user preferences with Ctrl+Alt+U and search for 'extra'.
Here is an example gif:
@Carlo presented the perfect solution IMO- the fastest one indeed. Here are my 5 cents though:
Subdivide the triangle with W-->Subdivide, then inset faces with I and input the proper scale value to place all the vertices in the center of the object. Press W-->Remove Doubles. Finally select some edges and get rid of them with X-->Limited Dissolve.
-
1$\begingroup$ That's also nice. Tris to Quads also works as last step, btw. $\endgroup$– user38881Jul 10, 2017 at 5:02
Bmesh script
- Checks selected element is tri.
- Removes tri face.
- Bisects the edges.
- Make edges from bisect verts to tri's median centre.
- Fill new edges and bisect edges with contextual create (akin to F)
Select triangle face in edit mode run script.
import bpy
import bmesh
context = bpy.context
ob = context.edit_object
me = ob.data
bm = bmesh.from_edit_mesh(me)
tri = bm.select_history.active
# poll .. do we have a tri
if isinstance(tri, bmesh.types.BMFace) and len(tri.verts) == 3:
edges = tri.edges[:]
c = tri.calc_center_median()
bm.faces.remove(tri)
ret = bmesh.ops.bisect_edges(bm, edges=edges, cuts=1)
verts = ret['geom_split'][:3]
c = bm.verts.new(c)
geom = ret['geom_split'][3:] + [bm.edges.new([c, v]) for v in verts]
bmesh.ops.contextual_create(bm, geom=geom)
bmesh.update_edit_mesh(me)