If you get to the shape node through the object model you can then access the ClusterProperty (your shape key property that is on the cluster). From there its the .Elements.Array that stores the values. It'll return a Tuple of Tuples. 1 tuple per axis that will store the shape's delta from the base shape.

A simple script to do this is:

# Python
sel = Application.Selection
sel(1).Elements.Array = sel(0).Elements.Array

However Python won't be efficient with heavy meshes. Thus why i think ICE would be a better solution.

Through ICE you'd pull in the shape properties and connect their "positions" attributes.

Lastly to note, this also applies to weight maps as well.

Eric T.


On Thursday, June 18, 2015 9:33:33 AM, Tim Crowson wrote:
Eric, if I understand you correctly, that's honestly what I'd rather
do. Seems so much simpler to leave the shape keys in place and simply
update whatever data they contain. But I simply don't know how to
script this. I just haven't done much scripting with mesh attributes
like this. How do I get the positions attribute from one shape key and
apply it to another?

On 6/17/2015 6:21 PM, Eric Thivierge wrote:
Hey Tim,

Any reason you're not using scripting to regenerate these and not
just use copy / paste? You can script the creation of the shape nodes
and then copy the "positions" attribute over.

Another thing you could do is apply ICE Ops to copy the values of
shapes on one mesh to another. Don't forget that ICE isn't always for
Live operators, but you can design ops that are only there for
utilities and then get frozen off. Especially when you use the
ApplyICEOp() command which takes a compounds execute port (it has to
have one) and connects it directly and then you can script the hook
ups of get data nodes or you can fill in the reference inputs that
point to the right objects / properties.

You can update data in shape keys through scripting or ICE.

Eric T.

--------------------------------------------
Eric Thivierge
http://www.ethivierge.com

On Wed, Jun 17, 2015 at 3:48 PM, Tim Crowson
<tim.crow...@magneticdreams.com
<mailto:tim.crow...@magneticdreams.com>> wrote:

    I'm working on a tool for updating shapeKeys inside a mesh's
    Shape cluster. I can't use GATOR to transfer the shapes (that
    creates a new Shape cluster anyway, which I don't want). My
    original intent was to:
    1. compare my rig model with my shapes model, storing any
    animation or expressions on shape keys
    2. delete shape keys out of my rig model
    3. copy over the updated shape keys (same names) from the shapes
    model
    4. re-apply anim/expressions

    The problem I'm having is between steps 2 and 3. I am not sure
    what the best method is for transferring shape keys. GATOR just
    dumps the whole lot into a new Shape cluster, which I don't want.
    So I'm falling back on Application.CopyPaste(). Now this works
    fine when dragging and dropping via the mouse. But for some
    reason, when firing the exact same command in code, it bombs and
    throws an error on that command. However, if instead of deleting
    specific shape keys, I delete the entire parent Shape cluster,
    then CopyPaste() works just fine. It's almost like the
    CopyPaste() command fails when fired from code AND a Shape
    cluster already exists. But clearly, I can't just delete the
    Shape cluster, as we might have custom shapes inside it that
    aren't in whatever model we're sourcing from for the update..

    Any ideas?

    Honestly this would all be much easier (I think) if there was a
    way to update point data inside a shape key, but I can't tell if
    that's possible or not, hence my current method of deleting and
    re-applying anim/expressions.

    --

    *Tim Crowson
    */Lead CG Artist/

    *Magnetic Dreams, Inc.
    *2525 Lebanon Pike, Bldg C, Suite 101, Nashville, TN 37214
    *Ph* 615.885.6801 <tel:615.885.6801> | *Fax* 615.889.4768
    <tel:615.889.4768> | www.magneticdreams.com
    <http://www.magneticdreams.com>
    tim.crow...@magneticdreams.com
    <mailto:tim.crow...@magneticdreams.com>

    /
    /



--
Signature



Reply via email to