12
$\begingroup$

In edit mode with these settings:

  • Face selection
  • Pivot point: individual origins
  • Transformation orientation: Normal

The faces don't rotate around the normals, is there another required setting that I overlooked?

enter image description here

$\endgroup$

3 Answers 3

11
$\begingroup$

You need to press a key to specify the axis. (i.e. X, Y or Z)

Setting the Transform orientation aligns the XYZ coordinates to something, e.g.:

  • Global aligns the axes to the world

  • Local aligns the axes to the selected object(s) rotation

  • Normal aligns the axes to the selected element(s) normal

etc.

Note that pressing the axis key once always snaps to the Global orientation, regardless of the setting in 3D view > Header. To use the orientation specified in 3D view > Header, press the axis key twice. (e.g. GZZ)

With your settings, (Individual origins, Normal, Face) to rotate each face around its normal we should rotate around the Z, see the wiki:

The z-axis of the manipulator will match the normal vector of the selected [element]

So by pressing RZZ:

enter image description here

$\endgroup$
6
$\begingroup$

Yes you can do this, all accessible from interface but included keys

  1. Enter Editmode (Tab)
  2. Change to face-editing (3)
  3. Select all (A)
  4. Mesh -> Edges -> Edge Split (CtrlE, D)
  5. Change orientation to normal (,, 2)
  6. Change pivot to individual origins (.,2)
  7. Rotate about the Z axis `(R, ZZ) ... move mouse:

enter image description here

$\endgroup$
3
  • $\begingroup$ how would I do this in python? $\endgroup$ Oct 25, 2020 at 19:20
  • $\begingroup$ That should be a separate question. $\endgroup$
    – ideasman42
    Oct 26, 2020 at 2:33
  • $\begingroup$ I have the answer :D $\endgroup$ Oct 26, 2020 at 21:29
1
$\begingroup$
#python to rotate all faces 

#rotate all faces on mesh by 1 degree
import bpy, bmesh,math
from mathutils import Matrix
bm = bmesh.new()
bm.from_mesh(bpy.data.objects['Cube'].data)
for face in bm.faces:
        
            
    axis = face.normal
    rot = Matrix.Rotation(math.radians(1) , 4, axis)
    cen = face.calc_center_bounds()
    mat = bpy.data.objects['Cube'].matrix_basis
    bmesh.ops.rotate(bm, cent=cen, matrix=rot, verts=face.verts,space = mat)
    
bm.to_mesh(bpy.data.objects['Cube'].data)
bm.free() 
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .