I’m having problems getting a user data “link” field to work as a means to easily select objects to re-target and other feilds so I have a single control panel to setup may character. I have an Xpresso tag where I’ve placed my user control and and another object Re-Target tag. I connect the output of my user link object and connect it to the target input target node. When I use the user data link field to select a source, it doesn’t get transferred to the re-target target field. I’m having the same problem using a bool user control to remotely turn on/off a Hair object’s dynamic enable node too.
I might sound like a broken record, but a project file would be nice. There are too many variables in this. I don’t know what you have set up. I’m not sure at all currently that this might even work at all. The retarget tag needs more than just a connection. I’m sure you are aware of that. But I had to mention it. If you need an upload link, let me know. (If you use a cloud service I touch ONLY: Dropbox, Amazon, Apple, Adobe, Google or Wetransfer, nothing else, and no shortened links, they are not really safe either.)
Hi Dr. Sassi,
Sorry for not including a sample file, my project file is way too big to send. If I can’t better explain it, I’ll make some kind of example file.
I have a large character setup that enables me to retarget animations to quickly to other imported animated objects.
Through out my character setup, I have multiple constraint tags, retarget tags, dynamics tags, and subdivide tags. My goal was to place a “controller” on the top of the object tree (a null with user data and an Xpresso tag) that would enable me to quickly change all the settings and source targets in one place without having to unfold the tree and find and change the multiple tag parameters. No, I didn’t know the retarget tag needed more. All the constraint tags and retarget tags have their target parameters all ready set, it’s the source object parameter (link) I’m trying to set in my controller. The bool issue, being the same, is I wanted to have a single user data check box that would enable/disable multiple dynamic tags and objects (like the hair’s dynamics enable)
In may Xpress tag in my controller, I simply dragged and dropped my controller object and added a port to my user data enable (bool) and link user data. Then I dragged and dropped the re-target tag and added a port to the re-target’s input source parameter then connected a wire between my user data link field and the re-target source port. I thought the re-target tag would then just “mirror” my user data. When I go to the re-target tag, the source field shows the “driven” icon net to it, but the field is blank. I’ve found same issue with the enable hair dynamic parameter.
Does this help, or do I still need to make an example file?
The Retarget Tag is something that needs to be set up. It works ONLY if the absolute same setup was used. Even if you rebuild the hierarchy from scratch identically, it will not communicate to another one, even if it looks the same. This can be tried with a super simple setup. So, no big files are needed.
If external rigs are loaded even with a Retargeting Tag applied to, the Identifiers need to fit: Each part in the Retarget has a unique ID (Identifier). If that doesn’t match, nothing will happen.
While those Identifiers match, the Solver already does most of what you try to do.
Controllers can be used in the Character Definition Tag. (The Solver handles Joints OR Controllers, not both)
You might dig deeper with Python, but that is not what I can provide here; Maxon’s Developer Forum is the place to go for that.
Here is an example of what was done many years already with it. https://www.cineversity.com/vidplaytut/siggraph_2015_rewind_bret_bays_creating_a_character_rigging_pipeline
All the best
To be clear, the user data object, and all the tags are part of the same project and don’t come from another project, that’s why I don’t understand why this doesn’t work. I have other tags I control with user data sliders, check boxes, etc. and they work. It’s just seems some tags don’t allow their properties to be set by Xpresso. I’ll have to make a simple project and send it to you.
Forget about the Developers Forum, I still can’t access it and had no response from my ticket submitted to Maxon. I spent five hours analyzing C++ code I found on the internet on to accessing the key track of a morph tag and converted it to Python.
In that link you provide, I’ll have see what his CV toolkit for weight copy does.
No big deal. BTW- I know the base character point order is still the same because I can still add relative point morphs using imported character geometry from FBX files. Believe me I can tell when the point orders are not the same! I was hoping the VAMP tool would let simply let transfer the exiting weights from one skeleton to another knowing the base body geometry was the exactly the same down to the point indexes. But it seams like it wants to make or modify its own weights rather than simply transferring the existing ones. Thanks anyway.
I like to help, but I can’t reproduce your problem without any files (no images). I would be able to explore it and see if the “Reference” is set to absolute or relative, for example. I might have many questions, but a file can answer it.
To your post #4, I really don’t know what to say, other than make a small dummy scene. Not promising anything, as I think it will not work. But I will take a look, of course.
This is what I do. The typical problem is often to start out with too much stuff in the scene; I have seen it many thousands of times. So I clear one part after another, then see how these parts work together.
The weight is related to the Mesh, how much influence each joint has for a given point.
It is not only the point order. The Vamp tool has many options to address this. So, the position in space is the key and can be transferred via different Vamp setups. What I see often is that in VAMP, the Weight and the Vertex map are confused. NOT that I say that you do: I write in a forum here.
If the geometry is absolutely precisely the same (Point Index and Position), then you should be able to just copy the Weight Map. If not, then it is not the same. (Given the joint’ spatial set up is the same, otherwise it will not work)
It is the same, or it is not. Again: Set up a little dummy scene that can reproduce your problem, please. Otherwise, we will talk about this forever, without any progress.
Attached is a simple example project demonstrating what I’ve been trying to do.
You’ll see there is a “project control panel” that has user controls that enable the setting of other tags operation and setup all in one place.
The funny (not that funny, though) this works the way I want. In my real project it doesn’t for these kind of properties and does work for others. This implies there are some “rules” I’m missing where these properties will not be applied by the Xpresso code.
Any ideas of what “conditions” that would disable this from working on a bigger project? Again, on my real project, the tag properties show an icon indicating they are being driven by the Xpresso, but they don’t ever get set with the values from the user data like my example does.
I had no idea that you were on R21. If not mentioned, I assume the current version is used, as the subscription is widely successful.
This led me to the belief that you use the Retarget option called Character Definition/Solver.
When I copy only a part of your example to a new scene, all the nodes that should receive something show that the input option is now “Undefined”. This seems to be your problem (guessing here, which I really don’t like).
When you set up your Project Control Panel, you use several things that need to be available; otherwise, the Node is an empty object operator, like a wiped out computer. When you like to feed something into it, no idea what to do with it. So you need to feed this new target object as well into it.
Again, perhaps I don’t get your problem. I need a file that shows the problem. To have a working file and then tell me that something else (not provided) is not – is kind of difficult. Guessing is not really the way I like to work, as it takes time on both sides, often with no result.
(I have not send a file back, as there is so much more that can go wrong if the parts connected are not set up in the same way, etc.)
The fact that my example project I sent you does exactly what I want, it looks like I’ve have to figure out on my own why Cinema 4D is not working on my real, and much larger project.
For FYI, I’ve attached a “visual aid diagram” demonstrating what I’m using the control panel for.
1) The character has hundreds of items that don’t need to be messed with, or seen. So everything is folded up in a null object and any parameters in the objects within that I might need to change, are controlled by User Control Controls in the control panel.
2) When working on animations, I disable tags that slow down everything, such as sub-dive tags, hair dynamics, etc. Rather than spending the time scrolling down hundreds of objects looking for tags to disable, I added a single disable check-box in my control panel so with a single click, I can turn on or off multiple tags.
3) When I bring in (Merge) new animated joints to become the source of animation, rather than spending the time scrolling down hundreds of objects looking for tags to change the source link or risk messing up tag settings, I use a link control in the Control Panel to re-establish the new “Source Object”. The target objects are static to the design and don’t want them accidently changed or cleared. The Control Panel only lets me change the sources.
I’ve done this on other complex projects so make them more simple to use and hide the underlying complexity by creating a single place to make common changes. Unfortunately on this project, which has a lot of complexity including multiple Xpressoo tags, Python scripts, Hair tags, some (not all) of my User Controls don’t communicate with object or tags. This is what lead me to post this question if Cinema 4D had “rules”, “order of operation”, or something else that could interfere will user control communication.
Thanks again, I’ll take it from here and see if I can figure it out…
Place all the Tags you want to switch on specific layers, and use the option of the Layer Browser to enable/disable things. E.g., the Phyton icon.
If you name them wisely, the Object manager can easily select those. With a little trick, you can create even selection objects. (have one object to start with, then delete that object from the Selection list. Initially, it doesn’t take tags.
Many tags in the Character Object are driven internally, so that would exclude the XPresso idea.
I think you need to check with the Developer Café, and get a proper Python solution for that. I really can’t see that an Xpresso is really working here, and certainly, the Layer Browser option is so much easier to use.