PDA

View Full Version : Set driven keys in XSI?


animking
03-05-2008, 01:45 AM
Hi all,
In softimage xsi,is there any kind of option like maya where I can change material type directly with out disconnecting any nodes.

How I can make setdriven key in softimage? not the linking or multilinking in softimage because that option is not like maya setdriven key(where we can key one driver to many driven at the same time)

shadowedge
03-05-2008, 01:50 AM
of course. :)

select the object, and give it a new material. Just like that. If your object already has Uv's itll still be there even with the new material.

Im sorry, I dont quite understand what set driven key is.

animking
03-05-2008, 03:57 AM
of course. :)

select the object, and give it a new material. Just like that. If your object already has Uv's itll still be there even with the new material.

Im sorry, I dont quite understand what set driven key is.


Hi,thanks....but i didn't mean like that. If u know maya there is a attribute editor for all things, like if u select one material and open the attribute editor then u can switch between any material like lambert to phong and the other like all maps or texture connections are remain.

is softimage has?

vauric
03-05-2008, 09:12 AM
Hi bubai,

I tried that before, and dont think you can directly set a driven key on multiple objects like in Maya.

I mean you cant have different axis from a driver, driving the same driven axis (if that makes sense)

As for materials, I dont think you can just switch from say lambert to phong like that, with a drop down menu.

But thats from what I saw, I might be wrong, if someone knows a way.

cheers

CiaranM
03-05-2008, 06:22 PM
Sorry, I'm only vaguely familiar with driven keys, but what's the problem with linking multiple parameters to one driving parameter?

No, you can only change the shader node through the render tree as there is no generic-type of surface shader.

tc
03-05-2008, 07:16 PM
Yes you can.

Drag a preset on top of a node in the rendertree, and it will update all the connections available.

Open view>toolbars>shaders.
Go on the Material tab, everybody is in there... phong, blinn, lambert....

Drag the shader you want and drop it on top of the node you wanna switch in the rendertree.

OR
If you have two nodes in the rendertree... you can drag from one to another holding alt+ctrl, and it will update all your connections too.


eg: you have a phong connected to the surface, and a lot of people connecting to the phong.
Put a blinn in the rendertre, hold alt+ctrl and drag and drop the blinn node to the phong node.
It will "switch" your nodes and update all the connections in>out.
But these nodes must be compatible... I mean if you try to switch between a soft-light to a phong, it will not work :P

Also if the node is closed, remember you can drag an output connection to an input and hold Shift to get multiple connections. You keep holding shift and marking all you wanna connect at once...


About he set driven... well why don't you just select multiple objects before link? :P

If you open the parameter connection editor, you'll see that there's a lock on each panel. If you unlock the "Driven target" panel it will load all the selected objects there. So if you select multiple objects it will load in there, and then you lock it, mark parameters you wanna connect from driving and driven, click "link", change what you want and "set relative values" (Exacly like "key" in maya). And thats it.

Theres also another way... Lets say you connect posY of a cube to rotZ of a sphere, you can go in the PPG where the parameter is being driven (which in this case would be kinematics), and in the animation divot (the green icon where you set animation) will be marked with an "L" mean that it's linked. If you right click and select "Copy animation", you can right click in any other animation divot and "past animation" and it will paste the link you have copied and the curve you use to drive it.

Al of this is just an expression with a curve connected, there's no mistery... you can play with.

mocaw
03-05-2008, 07:59 PM
Thanks TC- I always forget about how much of XSI is "drag and dropable". Very handy.

CiaranM
03-05-2008, 08:51 PM
Nice trick with the presets drag'n'drop!

animking
03-06-2008, 04:36 AM
Hi thanks tc,

drag and drop, I'll try....

linking process I did it, but I'm confused about multilinking, like if one driven is drive by one then simple linking is nice but when i want one parameter will drive by many then it is not working.

Just let me tell about the process what I've did. For an example i wanna to set some hand poses by some different attributes. I select all the finger joints and set it to driven catagory, then select a custom parameter like fist and set it to driver catagory, now I can set link and a relative value it works fine but when I wanna to set the same finger as a driven by another driver like pointed attribute, it brokes the prevous link.

BUT as per documentation if i select multilinking then it only work one driven by many driver, mean if I place all the finger joints in driven catagory the link button is not work.
I do't know why?


PLEASE! :sad:

vauric
03-06-2008, 09:02 AM
Thanks for the material tip. I didnt know that. Except it doesnt work for me as I'm using alt for camera navigation. Is there another way without using ctrl-alt combination?

I think people misunderstood my explanation and bubai 's problem with the set driven keys.

In Maya, you can have for example the z translation of an object being driven by the x translation of the driver AND the y rotation of a different driver.

Try this in XSI and you'll notice it says: "One (or more) of the driven target params already contains a link. Do you want to overwrite?"

Maya uses a system of blending nodes to allow this.

Hope this is clearer.

cheers.

eman
03-06-2008, 02:13 PM
You can link a single value with multiple values with a simple expression.
eg : z translation = x translation + y rotation.
Anyway it's true, you can't link it directly like in Maya.

ThE_JacO
03-06-2008, 02:16 PM
I retitled the thread for you.
Next time come up with something better and more descriptive than "please!"... please.
Crap titles don't show up in search engine results and doesn't get a thread the right kind of attention.

tc
03-07-2008, 02:40 AM
Thanks for the material tip. I didnt know that. Except it doesnt work for me as I'm using alt for camera navigation. Is there another way without using ctrl-alt combination?

I think people misunderstood my explanation and bubai 's problem with the set driven keys.

In Maya, you can have for example the z translation of an object being driven by the x translation of the driver AND the y rotation of a different driver.

Try this in XSI and you'll notice it says: "One (or more) of the driven target params already contains a link. Do you want to overwrite?"

Maya uses a system of blending nodes to allow this.

Hope this is clearer.

cheers.

Nop, you are wrong.
In XSI you can make one parameter being driven by many drivers. XSI does that with Link With Multi in the Parameter Connection Editor, and it creates a falloff slider on the parameter so you can controll the blending of each driver.

read it here http://forums.cgsociety.org/newreply.php?do=newreply&p=4995238

Run this in the script editor and you'll get a sphere a cube and a torus.
move the sphere and the torus and the cube will rotate.

Both cube and torus drive the same parameter in the cube.


NewScene(null, null);
CreatePrim("Torus", "MeshSurface", null, null);
CreatePrim("Sphere", "MeshSurface", null, null);
CreatePrim("Cube", "MeshSurface", null, null);
SelectObj("sphere", null, true);
Translate(null, 0, 0, 19.0923338648098, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SelectObj("torus", null, true);
Translate(null, -17.8849508492738, 0, 0, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
AddToSelection("sphere", null, true);
SelectObj("cube", null, true);
ActivateObjectSelTool(null);
SetExpr("cube.kine.local.rotz", "l_interp( torus.kine.local.posx, torus.kine.local.posy, torus.kine.local.posz, sphere.kine.local.posx, sphere.kine.local.posy, sphere.kine.local.posz )", null);
SetRelativeValues("cube.kine.local.rotz");
SelectObj("cube", null, true);
ActivateObjectSelTool(null);
SelectObj("sphere", null, true);
Translate(null, -7.83708924679227, 5.05604231058347, 1.23565960622426, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SelectObj("torus", null, true);
Translate(null, 4.43112656258099, -10.0386832527653, 4.80724067759094, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SelectObj("cube", null, true);
Rotate(null, 0, 0, -120.526086106004, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 0, null);
Rotate(null, 0, 0, -83.5871775598921, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SetRelativeValues("cube.kine.local.rotz");
SelectObj("torus", null, true);
Translate(null, -6.15552703646174, 9.47707862479291, -3.25159953639352, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SelectObj("sphere", null, true);
Translate(null, 7.30636962087859, -6.95807722295905, 0.56913198633648, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
DeselectAllUsingFilter("object");
SetDisplayMode("Camera", "shaded");
SelectObj("sphere", null, true);
Translate(null, 7.24443180181799, -2.88916707602798, -2.51066205769342, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SelectObj("torus", null, true);
Translate(null, -5.43392676303186, 4.63323847508435, -7.91518158835447E-03, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
Translate(null, -2.26185440303652E-02, -3.51002905223998E-02, 4.16723908382397E-02, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
SelectObj("sphere", null, true);
Translate(null, -7.46088640383689, 4.5985908687603, 1.34102079206192, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
DeselectAllUsingFilter("object");
SelectObj("torus", null, true);
Translate(null, 6.48200658564631, -4.6332384907741, -0.675840885934673, siRelative, siView, siObj, siXYZ, null, null, siXYZ, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
DeselectAll();
ActivateObjectSelTool(null);
SelectObj("torus,sphere,cube", null, true);
Scale(null, 0.373349339735894, 0.373349339735894, 0.373349339735894, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 0, null);
Undo(null); // ScalingTool
ActivateObjectSelTool(null);
ActivateObjectSelTool(null);
SetValue("torus.torus.radius", 1.557, null);
Undo(null); // Set Value
SelectObj("torus", null, true);
SetValue("torus.torus.radius", 1.253, null);
SetValue("torus.torus.radius", 1, null);
SelectObj("cube", null, true);
SetValue("cube.cube.length", 1, null);
SelectObj("sphere", null, true);
SelectObj("cube", null, true);
SetValue("cube.cube.length", 3, null);
SelectObj("sphere", null, true);
SetValue("sphere.sphere.radius", 3, null);
SetValue("sphere.sphere.radius", 2, null);
SelectObj("torus", null, true);
DeselectAllUsingFilter("object");
SetDisplayMode("Views.ViewB.UserCamera", "shaded");
ActivateObjectSelTool(null);
SelectObj("torus", null, true);
ActivateObjectSelTool(null);
DeselectAllUsingFilter("object");
SetValue("torus.polymsh.geom.subdivu", 20, null);
Undo(null); // Set Value
SetValue("torus.torus.sectionradius", 0.681, null);
SetValue("torus.torus.sectionradius", 0.596, null);

animking
03-07-2008, 04:44 AM
Nop, you are wrong.
In XSI you can make one parameter being driven by many drivers. XSI does that with Link With Multi in the Parameter Connection Editor, and it creates a falloff slider on the parameter so you can controll the blending of each driver.

read it here http://forums.cgsociety.org/newreply.php?do=newreply&p=4995238

Run this in the script editor and you'll get a sphere a cube and a torus.
move the sphere and the torus and the cube will rotate.

Both cube and torus drive the same parameter in the cube.


Hi, i can't open this page......
AND u r right tc, i have seen it but the problem is it works only one driven with many driver, otherwise the link button is grayed out....

tc
03-07-2008, 07:15 AM
I'm sorry i've linked to the wrong page...
this is the right page you should read:
http://softimage.wiki.avid.com/xsidocs/linkparams_LinkingtoMultipleDrivingParameters.htm#Rcw31989



i have seen it but the problem is it works only one driven with many driver, otherwise the link button is grayed out....


Dude I'm sorry but I don't get what you mean.
The link multi lets you select MULTIPLE inputs to DRIVE the SAME parameter.
If you want to have ONE parameter driving MANY other parameters (lets say the Y pos driving X rotation of a cube and Z rotation of a torus), then you do LINK WITH, and not link with multi because you are not linking multiple parameters, you are driving multiple parameters on this case.

Another thing is that, take a look on your explorer, it's all there the link with don't do anything special if you wanna copy the expression + fcurve to another parameter it's all up to you.

here's the page about link with a single parameter
http://softimage.wiki.avid.com/xsidocs/linkparams_LinkingtoaSingleDrivingParameter.htm

As you'll see you can have one guy driving same, or many guys driving one guy.

animking
03-07-2008, 08:10 AM
Basically the problem is,

linking parameter works with....

Driver Driven
-------------------------------------
one ___________ one (work)
one ___________ many (work)
many __________ one (work)
many ___________many (don't work)

vauric
03-07-2008, 10:01 AM
tc, I've found where the problem was.

To link with multiple objects driving one object, you need to select them all and link them in one go.

If you link one object to the other, close the link page, THEN select another and try to link that one to the driven object, it doesnt work. Which isnt really clear.

It means that you have to be sure which objects are going to drive that particular object at the start. It doesnt seem to allow you to, once you're done, to select another object and add it as a driver.

Again, from my tests of course. I'm more than happy to be proven wrong.

barbapapa
03-07-2008, 11:17 AM
i came across the same problem trying to reproduce the behaviour of set driven keys on XSI. i had to redo a rig that was done in maya and i couldnt find a work around. In particular the problem came by rigging the kneecap of a robot leg.In maya was driven by the rotations of the bones form the leg and the bones of the foot, it had to look good on every possible position but it not only had to drive the rotation of the kneecap but aswell the translation to make it look "right" on every extreme position...Point is..the design of the the rig was perfectly working in maya throug set driven keys, and in XSI (surely lack of knowlodge from my part) couldn make it work with link with and link with multiple. I sat down with the guy that rigged the character in maya, and i just couldn reproduce the procedure on the xsi rig, by using the equivalent tools. Dont know if trough scripting (sure is possible, or expressions ) but since im not in that field ... bottom part, we had to change the design a bit to make the character work on the xsi version. Thank god the design guy liked the changes. :hmm:
.... still puzzels me how i could go about setting up the character in xsi to work like in maya.. the design change for that reason is just unacceptable. and only because that guy was kind enough to take time and understand the technical problem that we were going through..

Loolarge
03-07-2008, 02:07 PM
This stuff occured to be me too. I am still using XSI 5. I think the only workaround is to script your own system. This is pretty annoying

trevlb
03-07-2008, 03:17 PM
I may have a solution to your problem. It does not answer the set driven key question directly, but may be a work around.

I think it would work to:
1. Make poses for your joints (fist, point, etc.), and put them on the timeline with zero weight.
2. Link your custom parameters ("fist", etc.) to the weight of those poses on the timeline.

This should change the different poses on the hand based on the custom parameter, and even mix the poses if you choose.

I don't know if that will do what you want, but I hope it helps.

tc
03-07-2008, 11:55 PM
as trevlb said... theres are a bunch of ways to get the result you need.

But I think you guys are not getting how the "link with" works. I suggest you take a look in the manual because it's all pretty well explained in there...

Basically the problem is,

linking parameter works with....

Driver Driven
-------------------------------------
one ___________ one (work)
one ___________ many (work)
many __________ one (work)
many ___________many (don't work)

Anyway how do you rig like this? you just link "everything" with "everything" and thats it? How do you edit key values on this? How do you keep track of what you did with many driver to many driven?

You can do many -- many as you said... But you can't just output 5 parameters to 12 parameters without say what is driving what.
You do "one --- many" using the LINK WITH, and "many --- one" using the LINK WITH MULTI. This way you are indicating what the fcurve will do in what parameter. You need to be organized, setting keys and checking expressions... otherwise you'll get lost in any software with "set driving keys".

I never used this parameter connection editor until v6.0... Because it's all expressions and fcurves, nothing else. So I think I've a bit more experience using it than people that just open the Parameter connection, select a bunch of stuff and hit "link".

Let me explain the technical meaning of "Link with".
Each parameter has a value, you can drive this value:
- typing it
- with an animation curve (fcurve)
- with an expression
- with an action in the animationmixer

So what is a "link"?
A link is a hard connection, an "=" from the DRIVING SOURCE to the DRIVEN TARGET. The important thing is: The value that is the TARGET, will apear to be "locked" by this expression (the icon in the animation divot of the TARGET will be a "=" sign). But you can still use it to drive other stuff.
The value that is the SOURCE, will not lock anything or show special icons in the animation divot, so you can make Parameter A cotrol parameter C, D, E, F...
To do this type of "link" you just drag and drop one parameter to another in the explorer, or you do it using the parameter connection editor.

What is a "link with"?
It's the same thing, an expression. BUT it has an Fcurve controling sourcevalue in X and targetvalue relation in Y. it's not just an "=" sign.
The icon will be an Fcurve with an "L" meaning "linked".
This expression is like this: l_fcv( parameter that drives this fcurve )

Essentially it's an expression controlled by an fcurve.
You open the parameter that is being driven by a "link with" and you'll see an expression under an Fcurve, the expression point to the target, and the fcurve is the value applied to it (target value - source value relation). You can edit the fCurve keys or add it like a normal animtion curve, and ofcourse you can change the expression to point to a different object.
The Fcurve is where you see the "keys" you set when you hit "Set relative values".

what is the "Link with multi"?
It's the same as the link with, but the expression is:
l_interp ( target1, target2, target3... )
where XSI read all ( targets ) and associate it relative values to the keys you set.

You can also use "Link with orientation"... read about it too...

More than that.. you can still do a scripted operator, grab inputs > process your values > and output it all...
You can still (omg it never ends...) make an expression, use an Fcurve to drive it, put expression operators on your expression link (arithmetic operators, interpolations, trigonometry... whatever you find in the expression Functions)... then you can throw it all in the mixer (including expressions) and blend it with other clips, keyframes and animation layers. (And yes you can mix multiple clips with expression in the animation mixer)

So says that "many ---- many don't work" sounds like you are just being picky with this.

animking
03-10-2008, 02:47 AM
Still I don't know how it works, I do't know the maya users how can manage it in xsi but thanks everybody for your time.

Yes trevlb (http://forums.cgsociety.org/member.php?u=10),
I did it already and I think it will be a solution to overcome this problem.

anyway thanks,:thumbsup:

finalgathering
03-18-2008, 05:53 PM
Hi, in XSI we take a different approach which works quite well with the mixer.
The poses are treated like clips, you put one clip on each track and play with the blend weight. The blend weight can then be treated with expressions/"link with" .
Even expressions can be blended with the mixer.
I recently compiled a DVD with 11 hours of rigging and animation Lessons btw.
at www.3DMastermind.com (http://www.3dmastermind.com/) . I covered this on Lesson#38 "Blending Expressions with the Mixer"

trevlb
03-18-2008, 07:43 PM
Glad you found a work around :)

TBart
03-19-2008, 11:40 PM
Hi, in XSI we take a different approach which works quite well with the mixer.
The poses are treated like clips, you put one clip on each track and play with the blend weight. The blend weight can then be treated with expressions/"link with" .
Even expressions can be blended with the mixer.
I recently compiled a DVD with 11 hours of rigging and animation Lessons btw.
at www.3DMastermind.com (http://www.3dmastermind.com/) . I covered this on Lesson#38 "Blending Expressions with the Mixer"
This is what I just did for rigging a character's face. It works really well, and the ability to use expressions with it provides a lot of control.

CGTalk Moderation
03-19-2008, 11:41 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.