Page MenuHome

Manual: Subdivide fails to subdivide N-Gon faces isn't clearly documented
Closed, ResolvedPublic


Blender Version
Broken: version: 2.82 (sub 6), branch: master, commit date: 2020-02-06 20:44, hash: rB763f117c480e

Short description of error
The manual doesn't mention that Subdivide may fail to execute on all selected faces.

Exact steps for others to reproduce the error

  1. Launch Blender
  2. In Edit mode, select one face of the default cube and subdivide once.
  3. Choose a box or lasso selection tool (and enable the face selection button)
  4. Enable the X-ray button
  5. Select the entire default cube
  6. Right click and choose subdivide
  7. Inspect results - middle faces will fail to subdivide, even if they were visible and highlighted properly during the selection

Event Timeline

Evan Wilson (EAW) changed the task status from Needs Triage to Confirmed.Sat, Feb 8, 4:08 AM

Inspect results - sides will fail to subdivide, even if they were visible and highlighted properly during the selection.

This I cannot reproduce. In your video, we cannot tell if the edges are subdivided because you are in face select mode. When I tried using today's daily build, the edges are clearly subdivided once I switch to vertex select.

Subdivide fails to subdivide all selected faces

Edges not subdividing and faces not subdividing are two separate things. The 4 faces you are expecting to be subdivided all have 5 vertices and 5 edges at the beginning of your video.

Looking at the manual, it seems that subdivision will only subdivide the face of a quad or a triangle, but not N-GONs.

You have to really read between the lines to get that, so I would consider this a case of unclear documentation since it isn't directly mentioned on the manual's subdivision page.

Evan Wilson (EAW) renamed this task from Subdivide fails to subdivide all selected faces to Manual: Subdivide fails to subdivide N-Gon faces isn't clearly documented.Sat, Feb 8, 4:17 AM
Evan Wilson (EAW) updated the task description. (Show Details)

I'm not sure where I mentioned edges were not subdividing? Those did subdivide.
In the video, Blender was displaying a point at the center of each face, but those points were not connected (nor editable) as you can see from a lack of edges to the center points. The steps listed began with a cube which was all quads unless a cube is actually two quads and a strip of quads internally. What's interesting is that the edges of all selected faces were subdivided and the faces were recreated to incorporate the new vertices thereby becoming n-gons for those faces that failed to subdivide. That's where the problem lies.

I hope you'll reconsider looking into this further.

On the topic this ticket transitioned into:
Subdividing triangles and n-gons can make for strange lighting/texturing results in certain scenarios, but it should be something the subdivision routine handles without geomtery deformation when smoothing is off. This can be done as follows:

  1. For triangle geometry, split each tri from the vertex opposite its longest edge to the midpoint of that edge, forming two new triangles.
  2. For any non-planar n-gon geomtry, create all triangles from the vertices then execute #1.
  3. For planar n-gons, Blender could offer an option to favor the creation of new quads inside of n-gons when offseting an n-gon's edges inward would create an area (or areas) large enough to contain one or more new quads of a specified size. The newly created quads would then be connected to the n-gon's outer border with quads and tris as needed, favoring quads whenever possible. Doing this correctly is more involved, but it can result in more quad-based geometry if that's desired by the user.

When smoothing is enabled, it's possible that curved geometry may start to look more faceted visually, but that should always be something that is left for the user to decide. Subdivided geometry with smoothing disabled should look the same even if an n-gon is allowed to have holes, assuming the cutouts were calculated correctly. Blender aside, subdividing is not impossible for n-gons, so I'm hoping that doesn't get blocked -- at least not permanently.