I don’t think this would be considered a bug but I did think that maybe it should be documented or changed.
If you want to offset noise in x, y, or z (translate) you need to offset by a value of 4 to get to the edge of the current texture - when aspectcorrect is off (otherwise the aspect ratio needs to be taken into account). This tells me the input space is 4 units in size (in each dimension)
I could see a value of 1 making sense or even 2 (-1.0 to 1.0) but 4 seems to be quite arbitrary. Of course the default period would need to be adjusted to get the same frequency in the default state (if the input space had a size of 1.0 period would need to be .25).
Here is an example displaying that if you translate a number of noise tops by a factor of 4 they will line up perfectly.
Responding back, so we looked into this, and this behavior although seems arbitrary, but is actually expected. Internally, the period value is scaled by a factor of 4, which for period=1 results in the input space having size 4. This behavior was decided a long time ago because in the default noise TOP, with a period of 1, that factor of 4 resulted in more pleasing results.
We see the confusion, but it’s been like this for so long it doesn’t make sense to change it right now.
Yes the actual period is 4 when the parameter is 1. I didn’t think it would be changed since it was there for so long either but I think it should be documented since there is no way to know that other than trial and error.
A few things that could be added to the documentation:
internally the period is 4 when the Period parameter is 1, this means if you set the Period parameter to .25 and translate by a value of 1 in X or Y that will translate the texture by 1 unit
when the Period parameter is 1 and the Pivot in X and Y is .5 rotation and scale will be about the center of the texture. To pivot about the edge of the texture the pivot will need to be set -1.5 for left and bottom and 2.5 for right and top edges (unless the parameter is set to .25 in which case the pivot values more intuitive and 0.0 is left/bottom and 1.0 is right/top)
Actually if you wanted to not break the existing parameters and get parameters inline with the actual math Period can be left at 1.0 and a new Global Scale parameter can be added that has a default value of .25. Then all existing code would work and when a user wants do some specific transformations in relation to other noiseTOPs they would immediately see that they need to change the Global Scale to 1.0… Really Period is just global scale already now there just would be a second scalar on the transform page.
One thing that also could be added to the noiseTOP is a transform matrix parameter. It would be great to simply pass a matrix rather than have to decompose to translate, scale and rotate.