PDA

View Full Version : Storing vertex positions


ZeroCartin
03-30-2006, 05:38 PM
Well, I have this model, Unlocksmith D. im working on the rigging, basically ive already rigged the whole character, and now doing the pose deforming :P Well, i decided to use a normal Smooth bind on the jacket he has instead of using a cloth deformer beause of performance issues. What I basically wanted to do is to somehow make the Rotate X not have any effect on the jacket.

I really dont know how to do that, since i already binded, and i cant seem to find a way to disable that. Soooo, i decided to fix it using pose deformer. Thing is, I wanted to store the vertex values at the default position, and then, rotate on X, select the vertexes, and just like paste the vertex positions I copied from my original default position.

i wanted to know if you guys knew of a script out there that allows u to do that, or a way i could program it. Anyways, hope you can help me out. Thx! :)

*ATTACHMENT1 = Default position*
*ATTACHMENT2 = Rotated in X*

ashishdantu
04-01-2006, 05:01 AM
hi ZeroCartin,

even when u rotate in X say to 60 , u want the jacket to remain in its default pos, right ?

u can duplicate the skinned mesh (delete history) - when the bones are all at zero rots.. and then when u rotate ur jacket bone by 60 in rotate X, and then u do hit the "prep model for sculpting" option in the pose deformer UI.. and then what u can do is, select the duplicated mesh and this brownish mesh (sculpt model) and apply a blendshape.......and delete history on the sculpt model..... so u have the exact "default" mesh.........

try this, should work.... lemme know if it does ... hope this helps,
rgds,

isoparmB
04-06-2006, 01:47 PM
Hi.

If I understand you, what you want is the sleeve of your character to follow the rotate Y and Z of your forearm joint but not the X? You can try the blendshape pose suggestion (it will work, and is also very feasible, joint-driven blendshapes are effective), or you can try a setup approach. I think there might be a script which can help you. You can download it here:

http://www.highend3d.com/maya/downloads/mel_scripts/animation/3577.html

What it is basically is a "half-joint" maker, something I recreated from an old script which was handed to me before (I lost the original). What it does is it creates a joint which rotates with only half of the original's rotations using a utility node. You select your desired joint and execute the script as a shelf item. I use it more for deformer situations like that on knees and elbows, it gives a more proper cv deformation than weighting a cv between two separate joints.

Basically, if you want to try out the script for your specific purpose, what you should do is this:

1. Return your character to the bind pose.

2. Open the script in the script editor, or drag it to shelf. Select the joint for your example (which I think is your elbow joint), then execute the script. A UI will pop up.

3. The UI will contain an integer field and a button, plus instructions with the window. You'll only need one joint. Click on the execute button.

4. Now, the script creates a half joint which is parented to the original's same parent. By default, creating one joint will give you half of the rotations of the original. The script takes the rotations of the original, passes it through a multiply/divide node set to multiply, and feeds the output to the newly creaed joint. You have to go to the inputs section of the channel box of the joint, where you will find the multiply/divide node connected. You should input 0 for X, 1 for Y and 1 for Z. This will negate X and leave Y and Z unnafected. Youshould get a proper reaction if your arm joint's rotate order is in xyz, and x is the twisting axis.

5. Now, you should add the joint in as an influence to your existing skin node (So you don't have to skin and weight from scratch). I would recommend you delete the bindPose node of your character (maya sometimes complains if you add new influences even if you're already in the bind pose, but be careful to make sure you Are in the bind pose as scaling and slight controller deviations will bite you later). To select existing bind pose nodes, you can type:

select -cl;
select -add `ls -et bindPose`;

or

select -cl;
select -add "*bindPose*";

then hit delete.

Now, select your skinned jacket, and the new half-joint (Which is now actually an anti-rotation setup), go to skin-edit smooth skin-add influences-option box. Turn off use geometry and turn on lock weights, and set it to zero ( I recommend you weight in the geometry after adding the joint in as an influence, that way you ensure only the cv's you want get influenced by the new joint.) You can then weight in your geometry after, and test your setup. Of course, save it out to an alternate file (just in case.).




You can use this technique to setup sleeves which don't rotate in X when your hand is, shoulders which stay put even when the elbow is facing down, and any other similar situation. Of course the half joint in it's native form helps deformations from having that "bendy-straw" look.

Hope this helps.

CGTalk Moderation
04-06-2006, 01:47 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.