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
-~----------~----~----~----~------~----~------~--~---

Reply via email to