My current attempt is very clunky. I'm exporting from this file (orientobjectaroundcirclularpath.aep) and layering the (multiple) exports in another file (radial_menu.aep) to mimic the interaction design.
What is the most efficient method to execute this animation?
The animation in your project file is very different-looking from the example you give. Is your final goal to make it look like the linked example with just three icons showing at a given time, with two of them rotating around a larger circle and the center one scaling up and rotating in place?
Yes! My final goal is to make it look like the linked example with just three icons showing at a given time, with two of them rotating around a larger circle and the center one scaling up and rotating in place. Do you know of a better way to build such an animation?
To get the initial carousel, you can pile all the assets in one location and add a null that is one radius length away from the objects and parent the first object to it, rotate the null a given amount (360/number of assets) and link the next one etc., until you have a circle.
Then you can use the pick whip the rotation value expression for the individual assets to rotate them back to upright position (add "value -" to the beginning of the pick-whipped rotation value expression).
Now you can rotate the whole thing with that central null as well as rotate the individual assets with their own rotation value if need be.
Then you need another set of the same icons in the location where they scale up as the active item. As far as I can tell, they don't move, they just scale up and rotate around their own center. This could be linked to the center null rotation value with an expression that checks if the current layer index value is within a certain range and do the scale animation as well as opacity if it is. When not in that range, the opacity would be 0 to make the rest of the icons invisible.
The lot would then need to be precomped and masked or track matted for the final.
If you want to try how far you get with that, we can take a closer look at the expressions.
Parented layers require a different expression to get their location. Their position value does not change. Change the line samplePoint = transform.position;
to samplePoint = toWorld(transform.anchorPoint);
which retrieves their position in the world coordinate system.