[Bf-python] How to get inside faces from inside verts?
joe
joeedh at gmail.com
Wed May 20 22:30:19 CEST 2009
Try triangulating the fractalized sphere.
So you want to find faces attached to verts, right? The solution is
to iterate over every face in the mesh, and check if any of the face's
vertices are inside the set of inside vertices.
Once you've found the faces, copying them shouldn't be too bad, I'd
suggest looking at the API documentation on adding new faces.
Joe
On Wed, May 20, 2009 at 1:52 PM, <lynx.abraxas at freenet.de> wrote:
> Hello!
>
>
> I figured out pointInside() just doesn't work on my fractally distorted
> sphere. Belender seems to have trouble there getting the normaldirection right
> even when recalculating them. If I just use a icosphere pointInside works.
> My new problem is now:
> How can I copy the faces that belong to the insiede verts?
> Or how to get the inside faces directly?
>
> Thanks
> Lynx
>
>
> On 20/05/09 17:37:43, lynx.abraxas at freenet.de wrote:
>> Hello again!
>>
>>
>> I'd like to find all vertices of a mesh-object that lie within another closed
>> mesh-object (ellipsoid) to calulate an average normal for the enclosed
>> surface.
>>
>> But ellmesh.pointInside(v.co) never retruns true althogh my testobjects
>> definatly intersect.
>>
>> Is there something wrong with my code below or is pointInside() only checking
>> if a point is inside a triangle (not in a closed mesh)?
>>
>> How do the boolean modifiers check this?
>>
>> Thanks for any help or hints
>> Lynx
>>
>>
>> print "Evaluating ellipsoids now..."
>> ells = [ob for ob in obs if ob.name.find('Ellipsoid') >= 0] #get ellipsoids
>> for ell in ells:
>> ellmesh= ell.getData(mesh=1)
>> print ell.name
>> vin = bpy.data.meshes.new('Imesh_') # create a new mesh
>> for v in potmesh.verts: #find all potato vertices inside this ellipsoid
>> #print v.co
>> #print len(vin.verts)
>>
>> if ellmesh.pointInside(v.co):
>>
>> vin.verts.extend(v) #append? No extend is from MVertSeq
>> print "extended vert-list by: ", v
>> #what if ell is smaller than potato trig??? Subsurf would help!
>> #print len(vin.verts)
>> if len(vin.verts):
>> print vin
>> print vin.verts
>> if len(vin.trigs) < MinTrigs:
>> print "Very few normals inside: ", len(vin.trigs)
>> print "Perhaps megabool would help here"
>> print "Just subsurfing won't help!"
>> for t in vin.trigs:
>> #calcNormals()#recalcNormals(direction=0)
>> #subdivide(beauty=0)
>> #QuadNormal(vec1, vec2, vec3, vec4)
>> #quadToTriangle(mode=0)#triangleToQuad()
>> a= B.Mathutils.TriangleArea(vec1, vec2, vec3)
>> n= B.Mathutils.TriangleNormal(vec1, vec2, vec3)
>> n.normalize() #normalize the normal
>> ns= ns + a*n #add area weighted normal to normal sum
>> print "Normal sum of ellipsoid: ", ell, ns
>>
>>
>> _______________________________________________
>> Bf-python mailing list
>> Bf-python at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-python
> _______________________________________________
> Bf-python mailing list
> Bf-python at blender.org
> http://lists.blender.org/mailman/listinfo/bf-python
>
More information about the Bf-python
mailing list