Looking at the docs, it looks like you cannot do this for this very reason:
> *MS::kInvalidParameter<http://download.autodesk.com/us/maya/2009help/API/class_m_status.html#56eb564815df5f0ce06701dd325dc1999c5a652e1d6ba95cdd99b9d8f77e7a6c> > * Cannot do world space operation. > Just need to do the math manually using a worldMatrix or parentMatrix * matrix because there's no version of setPoints that takes a DAGPath argument. On Sat, Jun 13, 2009 at 11:52 AM, Jason Osipa <[email protected]> wrote: > Won't the second mesh, then, still be "movable" by it's transform? I'd end > up with the same "shape", but the transform would still affect things. > > As weird as this may sound, it is *critical* that I have two separate > shapes, and two separate transforms, even though it'll only ever look like > and obey the "normal" logic of the first one. > > I really think I just need to know how to get a dag path into > MFnMesh.setPoints... > > > On Sat, Jun 13, 2009 at 11:15 AM, Chad Vernon <[email protected]>wrote: > >> You can create a deformer and pipe in the worldMesh attribute into a plug >> that accepts meshes. Then just set the points in the deformer. Since >> you're piping in the worldMesh attribute, you don't need to worry about any >> dagPath. >> >> oMesh = data.inputValue(aInWorldMesh) >> inPoints = OpenMaya.MPointArray() >> fnInMesh = OpenMaya.MFnMesh(oMesh) >> fnInMesh.getPoints(inPoints) >> >> # 2008 >> while not iter.isDone(): >> iter.setPosition(inPoints[iter.index()]) >> iter.next() >> >> # 2009 >> iter.setPositions(inPoints) >> >> >> >> On Sat, Jun 13, 2009 at 9:39 AM, jasonosipa <[email protected]>wrote: >> >>> >>> Hi All! >>> >>> Thanks for the responses. These are great ideas, but not what I am >>> looking for. There are a number of ways to get this effect done, and >>> in fact, I already had 2 different ones before posting - what I really >>> *want*, isn't a way to get it done, so much as to learn specifically >>> how to use this line: >>> >>> outFnMesh.setPoints( outPoints, om.MSpace.kWorld ) >>> >>> So that it doesn't give me this: >>> >>> // Error: (kInvalidParameter): Must have a DAG path to do world space >>> transforms >>> >>> >>> By accepting a "space" at all, it just seems like there is probably a >>> way already built in to MFnMesh.setPoints to do this that doesn't >>> involved manually math-ing away the destination world matrix. Right? >>> >>> >>> >>> >>> >>> On Jun 12, 11:45 pm, Nicolas Combecave <[email protected]> >>> wrote: >>> > Hello Jason, >>> > >>> > I don't know if you need to implement your own deformer for that, or if >>> it's >>> > part of something more complex, but I think that the effect you're >>> after is >>> > like what a blendShape does, with attribute "origin" is set to world... >>> > >>> > Nicolas >>> > >>> > On Sat, Jun 13, 2009 at 8:21 AM, Paul Molodowitch <[email protected] >>> >wrote: >>> > >>> > >>> > >>> > > I suspect that you would have to have the worldMatrix fed in as an >>> > > additional input attribute. >>> > >>> > > The basic problem, though, is that 'worldSpace' is always relative, >>> > > and I'm not sure what you want it relative to. Since it seems like >>> > > you want this shape "echoed" in multiple spots in the dagTree, each >>> > > eventual "output" destination in the dag would have to feed this node >>> > > it's world matrix (or, more likely, it's inverse world matrix) into >>> > > some sort of 'destinationWorldMatrices' multi attribute, and then >>> read >>> > > out the shape node from a corresponding plug in a 'outputShapes' >>> multi >>> > > plug. >>> > >>> > > If this doesn't make sense, I can offer a fuller description... >>> > >>> > > - Paul >>> > >>> > > On Fri, Jun 12, 2009 at 3:20 PM, jasonosipa<[email protected]> >>> wrote: >>> > >>> > > > Hi guys! >>> > >>> > > > I'm trying to push the global vert positions of one mesh to that of >>> > > > another. Essentially, no matter what I do with either transform, I >>> > > > want the shape on the second to always look exactly the same as >>> that >>> > > > of the first (in world space). That's it. Another way to describe >>> it >>> > > > would be to say - I just want the two objects to be the same, all >>> the >>> > > > time. I'm getting stumped though, in that it seems I need a dag >>> path >>> > > > for world space output, and I'm not sure how to get that given the >>> > > > inputs/outputs I'm working with. Any ideas? Thanks in advance! >>> -J. >>> > >>> > > > class noMovey( omMPx.MPxNode ): >>> > >>> > > > aInShape = om.MObject() >>> > > > aOutShape = om.MObject() >>> > >>> > > > def __init__ ( self ) : >>> > > > omMPx.MPxNode.__init__( self ) >>> > >>> > > > def compute( self, plug, data ): >>> > >>> > > > inMesh = data.inputValue( noMovey.aInShape ).asMesh() >>> > > > inFnMesh = om.MFnMesh( inMesh ) >>> > > > ins = om.MPointArray() >>> > > > inFnMesh.getPoints( ins, om.MSpace.kWorld ) >>> > >>> > > > outPoints = om.MPointArray( ins ) >>> > >>> > > > outFnMeshData = om.MFnMeshData() >>> > > > outMeshData = outFnMeshData.create() >>> > > > outFnMesh = om.MFnMesh() >>> > > > outFnMesh.copy( inMesh, outMeshData ) >>> > >>> > > > outFnMesh.setPoints( outPoints, om.MSpace.kWorld ) # Maya no >>> > > > likey >>> > >>> > > > data.outputValue( noMovey.aOutShape ).setMObject( outMeshData ) >>> > > > data.setClean( noMovey.aOutShape ) >>> > >>> > >>> >>> >> >> >> -- >> www.chadvernon.com >> >> >> >> > > > -- > Jason Osipa, Manager > Osipa Entertainment, LLC > www.osipaentertainment.com > 415.374.9651 > > > > > --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/python_inside_maya -~----------~----~----~----~------~----~------~--~---
