looks like life is nice and slow in Water Gardens.


On Thu, Feb 12, 2009 at 12:08 PM, Judd Simantov <[email protected]> wrote:

> lol... 2 ND people responding at the exact same time :)
>
>
>
> On Thu, Feb 12, 2009 at 12:06 PM, Judd Simantov <[email protected]> wrote:
>
>> this is a quick snippet I through together for you... it basically will
>> iterate the dag for meshes (you can set the filter type to whatever you
>> want)... then once you have the MDagPath or you can get an MObject to the
>> data you can do whatever you want to it.
>>
>>
>> ###############################################
>>
>> import maya.OpenMaya as om
>>
>> iter = om.MItDag(om.MItDag.kDepthFirst, om.MFn.kMesh)
>>
>> while not iter.isDone():
>>
>>     path = om.MDagPath()
>>     iter.getPath(path)
>>     print iter.partialPathName()
>>
>>     iter.next()
>>
>>
>> ###############################################
>>
>>
>> On Thu, Feb 12, 2009 at 11:44 AM, ryant <[email protected]> wrote:
>>
>>>
>>> This is not exactly what your asking for but it is along those lines.
>>> This is an example of how to iterate over the selected meshes. This is
>>> outside the context of my plug which I could show also but from the
>>> looks there you have most of what you need and something like this
>>> might work.
>>>
>>> # Get the selection and create a selection list of all the nodes
>>> meshes
>>> selection = OpenMaya.MSelectionList()
>>> OpenMaya.MGlobal.getActiveSelectionList( selection );
>>>
>>> # Create an itorator to iterate over the selection
>>> # Use the MFn class to as a filter to filter geometry types
>>> iter = OpenMaya.MItSelectionList ( selection,
>>> OpenMaya.MFn.kGeometric );
>>>
>>> # Iterate over selected geometry nodes
>>> while not iter.isDone():
>>>
>>>        #Define local vars
>>>        MObject iterMesh;
>>>        MFnMesh selectMesh;
>>>        MString name;
>>>        MDagPath dagpath;
>>>
>>>        #Get the mesh from iter
>>>        iter.getDependNode( iterMesh );
>>>
>>>        #Debuging and displaying info
>>>        selectMesh.setObject( iterMesh );
>>>        name = selectMesh.name();
>>>        MGlobal::displayInfo( "retreiving mesh named : " + name );
>>>
>>>        #Get the dag path of the geometry node
>>>        iter.getDagPath( dagpath );
>>>
>>>        iter.next()
>>>
>>> On Feb 12, 8:44 am, "[email protected]"
>>> <[email protected]> wrote:
>>> > Hey, i ve been writing a bullet collsion tool and have completed the
>>> > first part of the technical part. basically the function is to fire a
>>> > ray and detect the first intersection with a mesh. a big thanks to all
>>> > the people who post here cuz without your help i would nt of been able
>>> > to begin to understand what the hell any of this means! the code is
>>> > good and with 2 locators as ray start and direction it detects
>>> > intersection the name of the face intersected and the normals of the
>>> > face.
>>> >
>>> > The next stage is to build in an itterator that will cycle through all
>>> > the meshs in a scene? any suggestions ? at the moment it just looks
>>> > for pcube1
>>> >
>>> > import maya.cmds as mc
>>> > import maya.OpenMaya as om
>>> >
>>> > ## create 2 locators named start and finish to angle the ray points
>>> >
>>> > startWP = mc.xform('start',q=1,rp=1,ws=1)
>>> > FinishWP = mc.xform('Finish',q=1,rp=1,ws=1)
>>> >
>>> > vectBtwPnts=  ((startWP  [0] -FinishWP  [0])*-1), ((startWP  [1] -
>>> > FinishWP  [1])*-1), ((startWP  [2] -FinishWP  [2])*-1)
>>> > vectorToFinish = om.MFloatVector(vectBtwPnts[0],vectBtwPnts
>>> > [1],vectBtwPnts[2])
>>> >
>>> > def nameToNode(name ):
>>> >         selectionList = om.MSelectionList()
>>> >         selectionList.add( name )
>>> >         node = om.MObject()
>>> >         selectionList.getDependNode( 0, node )
>>> >         return node
>>> >
>>> > #retireves the right DAG node for selected objects
>>> >
>>> > def nameToDag( name ):
>>> >         selectionList = om.MSelectionList()
>>> >         selectionList.add( name )
>>> >         node = om.MDagPath()
>>> >         selectionList.getDagPath( 0, node )
>>> >         return node
>>> >
>>> > ## this is where the itterator is needed ? ?
>>> >
>>> > dag = nameToDag(" pCube1 " )
>>> >
>>> > meshFn = om.MFnMesh()
>>> > meshFn.setObject( dag )
>>> >
>>> > raySource = om.MFloatPoint(startWP[0],startWP[1],startWP[2])
>>> > rayDirection = vectorToFinish
>>> > rayDirection = rayDirection.normal()
>>> >
>>> > hitFacePtr = om.MScriptUtil().asIntPtr()
>>> > hitPoint   = om.MFloatPoint()
>>> >
>>> > idsSorted          = False
>>> > testBothDirections = False
>>> > faceIds            = None
>>> > triIds             = None
>>> > accelParams        = None
>>> > hitRayParam        = None
>>> > hitTriangle        = None
>>> > hitBary1           = None
>>> > hitBary2           = None
>>> >
>>> > maxParamPtr                  = 99999999
>>> > worldSpace = om.MSpace.kWorld
>>> >
>>> > hit =  meshFn.closestIntersection(raySource,
>>> > rayDirection,
>>> > faceIds,
>>> > triIds,
>>> > idsSorted,
>>> > worldSpace,
>>> > maxParamPtr,
>>> > testBothDirections,
>>> > accelParams,
>>> > hitPoint,
>>> > hitRayParam,
>>> > hitFacePtr,
>>> > hitTriangle,
>>> > hitBary1,
>>> > hitBary2)
>>> >
>>> > if hit:
>>> >         hitFace = om.MScriptUtil ( hitFacePtr ).asInt()
>>> >
>>> >         faceNumber = hitFace
>>> >         vector = om.MVector()
>>> >         NormalFn = om.MFnMesh(dag)
>>> >         NormalFn.getPolygonNormal(faceNumber, vector, worldSpace)
>>> >         hitFace = om.MScriptUtil ( hitFacePtr ).asInt()
>>> >         print "The hit point in X is %f " %hitPoint[0]
>>> >         print "The hit point in Y is %f " %hitPoint[1]
>>> >         print "The hit point in Z is %f " %hitPoint[2]
>>> >         print "The number of the face hit is %d" %hitFace
>>> >
>>> >         print "The normal of the hit face is %f in x"   %vector.x
>>> >         print "The normal of the hit face is %f in y"   %vector.y
>>> >         print "The normal of the hit face is %f in z"   %vector.z
>>>
>>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Yours,
Maya-Python Club Team.
-~----------~----~----~----~------~----~------~--~---

Reply via email to