lol not that slow

On Feb 12, 2:18 pm, yury nedelin <[email protected]> wrote:
> 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