Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def nameToDag( name ):
- selectionList = om.MSelectionList()
- selectionList.add( name )
- node = om.MDagPath()
- selectionList.getDagPath( 0, node )
- return node
- def Intersect(source,floor_name):
- test_intersect=getIntersect(source,floor_name)
- if test_intersect[1]==None:
- return False
- # filter geometry
- iter = om.MItDag( om.MItDag.kBreadthFirst,om.MFn.kMesh )
- old_dist=999999
- closest_mesh=None
- object_list=cmds.ls(type='transform')
- for object in object_list:
- mesh_name=object
- try:
- cmds.select(mesh_name)
- except:
- continue
- try: intersection=getIntersect(source,mesh_name)
- except:
- continue
- #print intersection
- if intersection[0]!=False:
- new_dist = distFunc(intersection[1],source)
- if new_dist<old_dist:
- closest_mesh=object
- old_dist=new_dist
- ret=intersection
- #print closest_mesh
- if closest_mesh==floor_name:
- return ret
- return False
- def getIntersect(source,mesh_name):
- dag = nameToDag(mesh_name)
- meshFn = om.MFnMesh()
- meshFn.setObject( dag )
- #This is the Ray being shot
- raySource = om.MPoint(source[0],13,source[2],1)
- rayDirection = om.MVector(0,-1,0)
- pointsValue = om.MPointArray()
- polygonIdsValue = om.MIntArray()
- spaceValue = 4
- #toleranceValue = om.kMFnMeshPointTolerance
- toleranceValue = 0.01
- ret = om.MFnMesh.intersect(meshFn, raySource, rayDirection.normal(),
- pointsValue, toleranceValue, spaceValue, polygonIdsValue )
- pointLoc=[0,0,0]
- if ret==True:
- pointLoc[0]=int(pointsValue[0].x)
- pointLoc[1]=pointsValue[0].y
- pointLoc[2]=int(pointsValue[0].z)
- #print 'from: ',source, ' intersected ',mesh_name
- return ret,pointLoc
- return ret,None
Advertisement
Add Comment
Please, Sign In to add comment