Parenting/Unparenting affects values of original layer

PalaconoPalacono Website User, HitFilm Beta Tester Posts: 3,442 Enthusiast

Here's a nitpicky one for you:

I have a Point, which I parent to (a) video layer(s) in Hitfilm 3 Pro.

I use it so I can adjust the Scale of the Point and have multiple layers Parented to it all change Scale (and other things) together, but depending on the order of operations, this isn't happening.

To start, I have one Layer and one Point. I set the Scale of the point to 105%. I parent the Layer to it. it's Scale changes to 95.2% and it does not get bigger. Why not?

I set the scale of the Layer back to 100%, it gets bigger, as intended.

I then UnParent the Point and the Scale of the Layer now changes to 105% and stays the same, larger size. Why?

I set the scale of the Layer to 100%, it gets smaller, as intended.

Now I set the Point's Scale to 100%.  I Parent the Layer to it. Its Scale remains at 100%. This I expect. I then set the Scale of the point to 105% and the Layer gets bigger (still at 100% itself) This I also expect.

But, now I Parent another Layer to the point and the Scale of the 2nd Layer changes to 95.2% and it does not get bigger.

This was driving me batty, as unless I remember to Parent all my layers to the Point before I change the scale of the Point, they're at different sizes. Instead I have to reset the values of the Point, which affects everything currently parented to it, Parent the New Layer to it, then change the values of the Point back to what I want so everything is now affected by it.

All other values, such as angles and position are also inherited in the same way, so changing more than one thing = not fun ...

Is this by design? If so, can I turn it off?

Comments

  • AxelWilkinsonAxelWilkinson Staff Administrator, Imerge Beta Tester, HitFilm Beta Tester Posts: 5,242 Staff
    edited August 2015

    This is by design. When a layer is parented to another layer, its transform values change, to display relative to the parent. So with your parent at 105%, the child's default scale is 92.5% of the current size of the parent.

    Parenting one layer to another will not cause any changes in the actual values of the child. Changing the settings of the parent, on the other hand will alter the child as well. So for what you are wanting to do, its just a matter of getting the right order of events. Parent the child layer first, then adjust the parent, and all the children will follow suit.

    If you parent a layer afterward, then adjusting the child's values to 0, for straight values, or 100%, for percentage-based values, will set it to exactly match the parent's values.

  • Aladdin4dAladdin4d Moderator Website User, Imerge Beta Tester, HitFilm Beta Tester Posts: 2,509 Enthusiast

    I'm sure this is by design and makes perfect sense to me. 

    To start, I have one Layer and one Point. I set the Scale of the point to 105%. I parent the Layer to it. it's Scale changes to 95.2% and it does not get bigger. Why not?

    Well why should it? Any changes made (or not made) before parenting to point really should stay intact. It would really suck to get an element looking  just the way I want only have all that work destroyed by parenting to a point.

    The change in percentage is relative to the parent layer. You scaled the point to 105 %. You then parented an unscaled layer to it. The unscaled layer is only 95.2% of the size of the parent layer. When you scale that layer to 100% it grows in size to 100% of the parent layer which was already 5% larger so this layer is now also scaled to 105% of the original size.

    I then UnParent the Point and the Scale of the Layer now changes to 105% and stays the same, larger size. Why?

    See above. Now that this layer is no longer parented the percentage is now relative to the layer itself and the last operation you did was to scale it to 105%.

    But, now I Parent another Layer to the point and the Scale of the 2nd Layer changes to 95.2% and it does not get bigger.

    Again see above. Why should parenting to a point layer wipe out or affect anything done before parenting?

     

  • PalaconoPalacono Website User, HitFilm Beta Tester Posts: 3,442 Enthusiast
    edited August 2015

    OK, so if by design and no option to turn it off, I'll have to work with it.

    Would have been nice to be able to do a sort of Step-Parent, where it didn't do it.

    It's just frustrating when I've got several things parented to a point and I've scaled or moved them by using it to affect them all, then I parent something else to it too and...nothing happens to it and the size/position is all wrong compared to the others.

    If I parent it, I expect it to take on the values of the parent, not for it to say "Aha, Parent, you expect me to go there? I refuse and will modify all my values to do exactly the opposite, just to spite you".

    It's all very well saying: "Parent, then change values", but that's not always practical and I bet I'll forget again.

    It's also confused me that when I UnParent something, it changes it's values to retain the values of the Parent, so the Parent might as well still be Parented, but I just Unparented it because I don't want those values. And now I have to go back and reset everything. Not Fun. Especially if one of the values was something that was affected by the Parent and was not zero in the first place.

    I'll see if Parenting to another Point that has no changes, will make a clean break without it doing this reverse-to-spite-you thing when I try and UnParent from something that's changed.

  • RobinRobin Website User, HitFilm Beta Tester Posts: 1,671 Enthusiast
    edited August 2015

    Parenting does not mean "take your transform values from your parent layer". It means "stay where you are, but from now on maintain this position relative to your parent, until I tell you otherwise." And this is the way it works in HitFilm, in After Effects, in Blender, and in any other program I've worked with that has some kind of parenting.

    And if you think about it, what you want is quite easy to achieve by just zeroing out all transform values of the child after you've parented the layer. In contrast, if it worked the way you want it to work, but you needed the layer to stay where it is even after parenting, this would involve a lot more work copying all the transform values and re-applying them afterwards.

  • PalaconoPalacono Website User, HitFilm Beta Tester Posts: 3,442 Enthusiast

    Yes, I can see it makes sense to work the way it does.  I just didn't want it to work that way sometimes. Especially after I'd made lots of changes to the Point, so Zeroing them all, then changing them all again is a pain.

    So, I needed a workaround and I found that if I duplicate the point, reset the original values, then unparent everything, I can then reParent everything - including the new thing - to the Duplicate, which is less trouble than redoing all the values. I then delete the Original, rename the Duplicate to the Original name and I'm back where I want to be. The biggest issue was trying to understand why, when I unParent something it would change the values to remain exactly where it was as if still Parented. But, I now see that could be useful, as you can effectively combine values from multiple points to a bunch of Layers etc. by using this feature.

  • RobinRobin Website User, HitFilm Beta Tester Posts: 1,671 Enthusiast
    edited August 2015

    "Especially after I'd made lots of changes to the Point, so Zeroing them all, then changing them all again is a pain." Can you elaborate a bit further on this, what's the situation before parenting and what end result do you want? I have trouble imagining what you're trying to do with the point. If I understood that maybe I could give you some hints on how to do that more efficiently, as it seems your workflow doesn't work as good with the HitFilm way of doing things as it could right now. Your workaround still seems quite complicated for something you apparently have to do more than just a few times.

  • PalaconoPalacono Website User, HitFilm Beta Tester Posts: 3,442 Enthusiast
    edited August 2015

    I use the tracker for stabilising. I then keyframe a path through the generated points to get the original Path smoother but without losing all the movement (unless I want to) and end up with a nice, smooth shot.

    It would be nice if HitFilm could throw a Bezier Curve  through the tracking points itself, but in the meantime: I approximate that myself (more choices of a path to take through the points would also be useful, as  the current choice is a little limited). But, I then need to zoom to hide the edges, and also maybe transform and also perhaps remove some rotations. I do track the rotation with dual points, but sometimes, depending on the points available to track in the shot, the parallax isn't quite correct to remove it all, or can actually add some by mistake if the tracked points are at different depths, or I could only track one good point, so have to remove rotation manually anyway.

    (BTW, would be really good to be able to Keyframe tracking points, where you could re-position  it, change the tracking window size etc. and help it stay on track. I especially get problems with things moving towards me as the size changes and confuses it more than lateral movement does. Keyframing would solve that, as it could combine its best guess with the Keyframes to stay on track.)

    Anyway, I'll also have things like text, masks, etc. all attached to the Master Point, which does all the manipulation to get the best, most minimally zoomed fit to the video segment with it's own keyframes.  Works fine, until I decide I want to add more text, or remove another blemish, or do just about anything that requires another layer to be parented to that point.

    That's when I forget and just parent it to the Point and...nothing happens. Doh! OK, Rewind, Duplicate, Reset, UnParent, ReParent, Delete, Rename.

    I could leave all the Master Point Manipulation until the end, of course, but I like to see it all working as I go.

  • Aladdin4dAladdin4d Moderator Website User, Imerge Beta Tester, HitFilm Beta Tester Posts: 2,509 Enthusiast

    I guess I'm totally missing something here because I can't seem to think of why you think it's easier to "Rewind, Duplicate, Reset, UnParent, ReParent, Delete, Rename." then to just zero out the values of the new child you just added or to adjust the layer as you want and then parent. It reads like you think it's necessary to make everything else conform to the newest layer rather then the other way around.

  • RobinRobin Website User, HitFilm Beta Tester Posts: 1,671 Enthusiast

    So when you're adding, say, one more text element - I would go about this by creating the element and adjust it until it looks exactly like I want it to on the frame I'm currently on. I also adjust its transformation so it fits in the scene exactly the way I want it to. Then, I parent it to the master point, it stays where it is on this exact frame, and for all preceding and subsequent frames, the parenting does the job of keeping it together with the other elements parented to that point as things move. In what way does your workflow differ from this? It has to, as it's obviously going wrong somewhere for you, but I still can't tell where.

  • PalaconoPalacono Website User, HitFilm Beta Tester Posts: 3,442 Enthusiast
    edited August 2015

    Text probably isn't too difficult an example actually. True, I could do that either way.

    A mask tracking a blemish with a duplicated version of the video track below offset to deal with it is; as that will be keyframed/rotoscoped and I need it at the original scale and position, following the original video (including the new smoother path) perfectly, bar a bit of translation. I then want them both to be scaled, transformed etc. by the Master Point to stay in sync.

    It may be that it can do this, but I've had it definitely not, so I now don't assume it should and don't ask it to.

  • RobinRobin Website User, HitFilm Beta Tester Posts: 1,671 Enthusiast

    Okay, I see where you're coming from now. In this particular example, I would simply go ahead and turn the video layer into a composite shot, and then do any adjustments to the video layer like removing blemishes inside that comp. That way, the parenting stays intact because the whole comp is parented, whilst you can make adjustments inside it without having to worry about any of that parenting stuff.

    You could view this method as some sort of "advanced parenting", as all layers inside a composite shot get grouped together, and will always stay perfectly together when placed in another timeline - you wouldn't even neccessarily need a Main point to parent anything to anymore, as the comp basically takes that role. Of course, using a point for the tracking data and parenting the comp to that still allows more flexibility for unforeseen use cases.

  • PalaconoPalacono Website User, HitFilm Beta Tester Posts: 3,442 Enthusiast

    Thanks, I'm already doing everything inside a single comp. I'm only using Hitfilm to correct issues with individual clips, not using it as an actual editor. Half the plugins in my editor aren't recognised by Hitfilm  and the HitFilm plugins that are recognised by the editor don't work the same way/properly in it (things that require other layers as any kind of a source), so files are bounced back and forth (HitFilm is invoked from the editor as a Hitfilm Effect on the  clip) to get the best out of both.

    Some scopes would go a long way too. How on earth are they still missing after all these years?! They should have been added the day after someone wrote the Colour Correction plugin.

  • RobinRobin Website User, HitFilm Beta Tester Posts: 1,671 Enthusiast

    I would have guessed you're doing this in a comp already, but I'm talking about adding another sub-composite shot, if you will. Even if you're just using it for a few shots in a bigger project, adding composite shots is no problem and helps a lot.

This discussion has been closed.