How to affect children components with animated parents


#1

Hi !

I’ve been trying to create dynamic component which have children animated components all of it working with “onclick” like the image below.

I need to be able to “interact” with all the arms and make them rotate on the own axes, while getting drag along by the parent component.

Being novice in every aspect of “programming” I turn to you for advises.

Thank you all for.


#2

if you upload your model, can go through the concepts with reference or changes to given axis and groups, otherwise difficult to explain. You can private message me if you don’t wont public exposure

you could refer to a previous post

[Q] parametric - constrain plumb-line position


#3

Hi !
Thanks for taking the time to help.
here the model I want to try the parent children animation.
It’s not the final model, this is a quick “concept” to understand how to create the link between parent and children might be set up and then apply it to the real (more complex" stuff.

I know that the quick answer will be "go with keyframe animation plugin, way easier"
but i want to find out if it is possible.

parent_children_rotation.skp (156.7 KB)

there is the “animate” function on all elements. what a need, is all the children to be affected by it’s parent up to the “main_axe” which will rotate all component below.

Thank you !


#4

The general case is you animate some custom attribute such as “motion” at the top level.

onclick: animate("motion", 0, 100)

Then each child component has a copy of the attribute which it uses for its own movement.

motion:  =Parent("motion")

#5

how infuriating when you know this from other program such as 3Ds Max or Maya… and It only works when someone tell you what you already knows XD

but, I had one problem doing that.
Other deformation on the children were made, like scaling on the X…

so, to work around this was to copy past “in place” the child component into it’s parent. and doing it up to the Main parent that rule them all… wierd.

the only downside to this methode is that you have to enter each sub component to activate them. But it’s better than nothing :wink:


#6

A Dynamic Component will only execute at most one onclick event - the one that is at the top-most level in the component hierarchy.

So if you want each part to be click-able, the components can not be nested. Their positions and rotations will have to be calculated in relation to where they are “attached” to another component.


#7

As Jim pointed out all click events must be on the same level of containment, lower levels then are effected by passing an attribute down.
As your model requires more than one action then the triggers need to be placed on the level of the first movement. Since the actual device you are creating is complex it stands to reason that it would have controls or a remote, There I suggest this would be the trigger points. See attached and click on the word pad.

all objects must have fixed boundary lengths otherwise if free they will match the container boundary as it changes through the rotation. Objects placed inside a container group may need their coordinates fixed to stop similar movement due to changing boundaries

parent_children_rotation (3).skp (251.0 KB)


#8

:o

this is very nice. I’ll go check who your relations works ! I understand a bit better how this works.

As for what Jim put into light, I thought it would be something like that. Finding the coordinates then inject them in to formula to be able to move all the children.

A Thank you both for you help, you have been very kind to take the time to explain all this.
I’ll dig the rotation you uploaded. then I’ll look into the “nested” thing :smiley:


#9

Hello guys,

I’m back with the links and animation I wanted to do. It works nearly a 100% thanks to you !
parent_children_rotation_practical.skp (1.8 MB)

There is on little thing I dont get.

To move the scan relative to it’s original position on the “Position X” I type in : = x+MoveScan
x is the "current position + the move scan variable I change with the "animate(“movescan”, A,B,C) and it worked just fine.

So i did the same for the screen position, But it keep jumping to a position which I have no idea where it gets it.
it’s original Y was -142 cm, in my mind I had to do : screenmove-142 to add or remove some values and move it along Y.But it does not.

To me, it’s the original value that is “wrong”. I cannot find the logic behind -142cm
parent_children_rotation_practical-wip.skp (781.7 KB) this is the file without any tempering

I hope I don’t bother you to much with this ^^

thank you


#10

the model seems to work okay despite the original jump (which you experience and I was able to replicate), the rotation of the screen goes outside the boundary of the main group/component which I believe explains the initial odd behavior.

but once its cycled through the distance in movement becomes true. and remains so


#11

Riiiight
I get it. it’s in the details that the Devil hides !

ok ok. I’keep that in mind next time.

I really want to express ma deepest gratitude towards you guys. You were an invaluable help !