How to Connect 2 parameters like Wiring controller in 3ds max?
I’m new in Cinema. Ofcourse I tried to find a solution, but all my solution not work same like 3ds max wiring controller.
For a better understanding of the issue, I will attach pictures.
Thanks in advance
Xpresso can link parameters
Right click on the parameter you want to use as a source and select “Set Driver” from the Xpressions menu. Now right click the the parameter you want to use as a target and pick “Set Driven” from the same menu. An Xpresso tag will be created that hold the link between the parameters. If double click on it you will get to the Xpresso editor where you can adjust the nodes for more control (e.g. clamping or remapping values).
What this doesn’t to is the bidirectional connection. I suggest doing that by using a 3rd object as a controller. It might work in Xpresso but it would be much more involved (comparing previous values and such).
Thanks for the answer.
Ofcourse i know about “Set Driver” “Set Driven” and actually done some solution in XPresso, but that solution not have synchronize animation tracks between Obj A and Obj B. As well as a bit buggy because sometimes the positions between the objects do not match.
My second solution without XPresso where i used Char Tag Constrain for parrent Obj and indicated the child object as a target. But again we not have synchronize animation tracks between Obj A and Obj B
The process of finding a solution continues =)
You have to understand that the 3ds Max parameter wiring works the way it does because of how 3ds Max itself works. C4D works differently. Looking for a feature that operates EXACTLY as parameter wiring does in 3ds Max is just going to lead to a dead end. Not to say the capability doesn’t exist, just that it’s going to operate differently or have different steps or employ different logic to get to the end result.
Most straight forward way of accomplishing what you want is to simply make one the child of the other and simply animate just the parent. The child will “inherit” the animation of its parent, essentially giving you “synchronized animation tracks”… but without the overhead of an additional animation track.
Basically, take the setup from your last pic and remove the constraint tag, and the animation track from the child object.
I’m not sure of the point of changing one vs the other. But can’t you just drop both in a null and animate the null?
Yes, you right, each program works according to its own ideology, but the task of controlling a parameter with two synchronous manipulators must be accomplished regardless of the ideology of the program.
Actually Cinema 4D already have a similar manipulation, and we are seeing them all over.
Example in pictures.
So it is possible in Cinema 4D, and my question how to make same with User Data UI?
It may be necessary to use a scripting language for this, but this is also an option.
My examples refer to the position parameter but it can be anything, radius, height, color etc.
Maybe the best question to ask here is what you’re trying to achieve with the 2-way connection. Is it purely for the convenience of being able to click and drag either object? If so, you might find the interaction tag will do what you want.
Otherwise you’ll generally find something in c4d needs to be assigned as the master. eg object A can control object B. Or if you like a null object C can control both A and B. The problem with a 2 way control is what happens if you animate the X position of object A differently from object B? Which animation wins?
The difference is that the parameter editor of an object in C4D is manipulating the data field for the object directly. When you wire a driver/driven relationship in expresso, you are saying “when this data changes, copy the data from this field into that other field”. if you try to do bidirectional assignment this way you get an endless loop. endless loops are bad.
Max’s bidirectional parameter wiring is doing some behind the scenes trickery. essentially, it must be telling object A and object B to use the same data field rather than copying the value from one field to the other. ie telling object B to use object A’s data field rather than its own. or vice versa or assigning both objects to reference the same independent data source.
This is like the difference in the programming world between passing variable by value and passing by reference (or passing pointers to a variable instead of the variable value).
There may be a deep way to do this with python in C4D but you are essentially messing with the objects internal data structures.
Friends thanks for all comments
Interaction tag looks promising
But if this tag does not give the expected result then I will try Python
Oh, you want to create user data fields to control parameters. I wasn’t aware that was the goal. It seemed you were trying to discover the 1:1 match of a feature in Max that, due to how c4d operates, doesn’t exist.
Interaction tag would likely be overkill in this regard.
Here’s a quick video to illustrate how to create a custom user data field and set it up to directly manipulate the Z-position of a cube.
Hope that clears it up!
Thanks for video, but it not solution for subject, because there is no have reverse control.
User Data UI controls Cube, but Cube dont controls User Data UI.
I heve 3 solition with reverse control, but none of them allows you to synchronize the animation curve.
Hello It looks like old topic, but I am looking for the same thing like MSlicer in Cinema 4D.
I have exact example, I have hand with 15 parmeters (sliders) each for finger joint rotation,
and I have 15 controlers (nulls) for the same. I want work with controlers in viewport and have equal
connection to sliders of parameters, because if I select all 15 parameters, I can copy/past wholle hand pose.
And when I tweaking sliders I want control the controlers in viewport. Softimage XSI had very clear and
simple solition. It wasn’t cycle but equality between any keyable parameters.
(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)
Hello MSlicer, did you find any possibility to do that after time? Thanks