The projection is done on per pattern item basis and will not project one pattern item onto another, meaning that projecting something like a vertical line of boxes down the Z axis will result in many overlapping boxes.
Projection offset can be used to fine tune the final distance between the result pattern and the components in the scene onto which the pattern is being projected, usually because the location of the pivot of the source mesh results in the projected pattern either floating above or intersecting the components after the projection.
#jira none
#rb Semion.Piskarev, David.Hill
#preflight 63234144c225e8be38fffb0e
[CL 22032022 by Nickolas Drake in ue5-main branch]
The translation and rotation jitter are relatively intuitive, but for scaling there are a couple of ways it could be done. From the user's perspective, scale jittering is accomplished in the same way as translation and rotation, but the scale along any axis cannot be negative.
The randomness is seeded so that the pattern is not completely different every time any parameter is changed (as long as the seed isn't changed, changing the scale along the z axis will just result in changes to the elements' scales along the z-axis, no other changes occur) and to allow the user to cycle through various patterns generated using a given set of parameters for the tool without needing to slightly move the pattern or alter any of the parameters to indirectly cause a call to MarkPatternDirty(). Instead, MarkPatternDirty() is called any time the seed changes.
#jira none
#rb semion.piskarev, ryan.schmidt, david.hill
#preflight 630fa40f556fc14dce9c0f25
[CL 21741835 by nickolas drake in ue5-main branch]