def makePointCloudGeom(pc,radius=0): if len(pc.vertices)==0: return None #make individual points / spheres verts = [] for v in len(pc.vertices)/3: vert = [pc.vertices[v*3],pc.vertices[v*3+1],pc.vertices[v*3+2]] verts.append(collide.newGeom()) if radius == 0: collide.makePointGeom(verts[-1],vert) else: collide.makeSphereGeom(verts[-1],vert,radius) #make a collision group res = collide.newGeom() vertArray = collide.intArray(len(verts)) for index,v in enumerate(verts): vertArray[index] = v collide.makeGroupGeom(res,vertArray,len(verts)) return res
def makeGeom(trimesh): if len(trimesh.indices)==0: return None inds = collide.intArray(len(trimesh.indices)) for index,v in enumerate(trimesh.indices): inds[index] = v verts = collide.doubleArray(len(trimesh.vertices)) for index,v in enumerate(trimesh.vertices): verts[index] = v gindex = collide.newGeom() collide.makeTriMeshGeom(gindex,verts,inds,len(trimesh.vertices)/3,len(trimesh.indices)/3) return gindex
def makeTrimeshGeom(trimesh): if len(trimesh.indices)==0: return None inds = collide.intArray(len(trimesh.indices)) for index in xrange(len(trimesh.indices)): inds[index] = trimesh.indices[index] verts = collide.doubleArray(len(trimesh.vertices)) for index in xrange(len(trimesh.vertices)): verts[index] = trimesh.vertices[index] gindex = collide.newGeom() collide.makeTriMeshGeom(gindex,verts,inds,len(trimesh.vertices)/3,len(trimesh.indices)/3) return gindex