Hi James, thanks for the reply. I hadn’t experimented with ChildActorComponents yet, but it sounds promising - being able to select groups of actors already created and placed in the scene and generate a new blueprint that includes any existing blueprints as ChildActorComponents would be incredibly useful (similar to the replace selected with blueprint option but as a new parent blueprint instead). So for example, I could have placed a desk set with multiple blueprint drawers and create a parent blueprint that would automatically set those drawer blueprints as ChildActors.
Regarding the scaling issue, I hadn’t considered the issue of shearing, but I understand the problem. Something I’d like to propose as a partial solution is some kind of button or option to mirror a blueprint/group/hierarchy in a way that doesn’t simply apply a -1 to the given axis’s scale. I’ve largely worked out the basic math behind accomplishing that but don’t really have the skills or knowledge to create the actual implementation. Attached below is a screenshot illustrating the mirroring solution (this doesn’t allow for partial scaling/shearing obviously, but simply allowing correct mirroring of grouped actors would be terrific on its own).
A brief explanation of what I’m doing:
-
Note: This proof of concept was done with actors aligned to the world 0 for ease of testing.
-
Given that I want to mirror across a group/blueprint’s internal axes, I multiply the position of objects along the target mirror axis by -1.
-
I then multiply the scale of each of the three axes by -1 (note that in the Mirror-Z example each axis has a separate scale to verify this non-uniform scaling works).
-
Rotation is the part where I’m not clear on the exact math, but basically I rotate the target mirror axis by 180° in the viewport. The way this affects the other two axes internally is what I’m unclear on (Mirror-Y for example generates two very different numbers for X and Z rotation).
Having a ‘Mirror Blueprint X/Y/Z’ button in the UI somewhere that would perform this math automatically for a given axis would be fantastic. At that point the only scaling option that wouldn’t be viable is partial, non-uniform scaling, but that would be fine given the issue of dealing with object shearing.