2
$\begingroup$

I have a geometrically complex sheet and would like to make this sheet have the shape of a bowl by deleting vertices that do not lie within a volume defined by some secondary object the shape of a bowl. This is the sheet: This is the sheet You can imagine the type of operation I want to be like a boolean modifier, which calculates the intersection of all vertices with my bowl. However, the boolean modifier does not work on "leaky" objects like mine.

Is there any way of selecting only the vertices that lie within some other object, so I can then invert the selection and delete all the other ones?

Thanks! T

Edit (I don't have enough rep to post a comment, so I will address some of the comments here. + I rephrased my question, hoping to make it clearer) @Atomicbezierslinger:

  • I know about proportional edit and circle select and don't see what my experience with modelling has to do with my question. Also I am not interested in recreating a new model. My question is about selecting a set of vertices that lie within the boundaries of some other object of my choosing.

  • A simple intersection does not do what I want. This is because the boolean operation looks for enclosed volumes and my model isn't a volume but a surface. This is what it looks like: Boolean Intersection

  • The model is in fact subject to very precise specifications as it is (pretty exactly) a Lidinoid (https://en.wikipedia.org/wiki/Lidinoid).

@m.ardito: It is a sheet, because it is a 2d surface in 3d space. Its shape is that of a Lidinoid (see above).

$\endgroup$
  • $\begingroup$ See Blender Proportional Edit. See Circle Select. Take a few minutes to get a basic understanding of both. $\endgroup$ – atomicbezierslinger Mar 21 '18 at 17:16
  • $\begingroup$ You may want to state your experience level with 3D non organic modelling. You may want to create a New model with the tools mentioned above. The model shown in the question is busy but not subject to much specification. You can create some similar with practice. I assume this is more art than some precise specification. $\endgroup$ – atomicbezierslinger Mar 21 '18 at 17:18
  • $\begingroup$ Using a simple intersection may or may not leave you with results that suit you. $\endgroup$ – atomicbezierslinger Mar 21 '18 at 17:23
  • $\begingroup$ ..."sheet"? Was it "shape"? $\endgroup$ – m.ardito Mar 22 '18 at 7:16
1
$\begingroup$

Solved it myself now with a littles script I cobbled together based on zeffis answer to this: How to find if a point is inside a mesh?

import bpy, bmesh

def is_inside(p, max_dist, obj):
    # max_dist = 1.84467e+19
    point, normal, face = obj.closest_point_on_mesh(p, max_dist)
    p2 = point-p
    v = p2.dot(normal)
    return not(v < 0.0)

obj = bpy.context.active_object
bowl = bpy.data.objects['bowl']
bpy.ops.mesh.select_all(action="DESELECT")

mesh=bmesh.from_edit_mesh(bpy.context.object.data)
for v in mesh.verts:
    p = obj.matrix_world * v.co
    if is_inside(p,1,bowl): v.select = True

This can be a little slow, but does the trick: enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.