I'm trying to select 400 or so random points on the face of a mesh using a script (just on the face, not inside the volume) but I'm not sure how to do that.

I've tried looking into the following function:

bpy_extras.mesh_utils.face_random_points(num_points, tessfaces)

but I'm not sure how to use it in a script.

Currently, I've tried running it as such:

import bmesh

obj = bpy.data.objects[1] #Gets the object
me = obj.data
bm = bmesh.from_edit_mesh(me)
faces_select = [f for f in bm.faces if f.select]
bpy_extras.mesh_utils.face_random_points(400, faces_select)

but I get the following error:

Traceback (most recent call last):
  File "<blender_console>", line 1, in <module>
  File "C:\Program Files\Blender Foundation\Blender\2.75\scripts\modules\bpy_extras\mesh_utils.py", line 533, in face_random_points
    verts = f.id_data.vertices
AttributeError: 'BMFace' object has no attribute 'id_data'

and I have no idea what that means. A simple script to select an object from bpy.data.objects and select 400 points from its faces would be really helpful.


1 Answer 1


as it is written bpy_extras.mesh_utils.face_random_points(num_points, tessfaces) takes tessfaces not faces and to get access to the you'll have to calculate first :

obj = bpy.context.object #Gets the object
me = obj.data
me.calc_tessface() # recalculate tessfaces
tessfaces_select = [f for f in me.tessfaces if f.select]
bpy_extras.mesh_utils.face_random_points(400, tessfaces_select)
  • $\begingroup$ I think this works, but I'm not sure how to get the points to display in the scene. Sorry if this is a really simple question, I'm really new to blender scripting $\endgroup$ May 4, 2016 at 4:10
  • $\begingroup$ @paragbhtngr you want to see the points in the 3d_view or just have there coordinates ? you should know that these points are not vertices ( real points ) they are just calculated and you'll have to create them to be visible $\endgroup$
    – Chebhou
    May 4, 2016 at 7:47
  • $\begingroup$ Yes, I want to create vertices from these points to be visible in the 3d view. How would I go about creating vertices from these points? $\endgroup$ May 4, 2016 at 15:44
  • 1
    $\begingroup$ Actually, never mind. I found the answer over here: blender.stackexchange.com/questions/23086/… $\endgroup$ May 4, 2016 at 15:52

You must log in to answer this question.

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