Help: How to tile/stretch Noise?


I want to use Noise as a Light Function with the Sun. But the original Noise is too blooby - I want to stretch it.
How to wire it - so stuff so far works as well as the tile/stretch ?

Hi Lyubomir,
If I get what you’re trying to do, you want to non-uniform scale the Noise. The Noise position input is looking for a 3 vector input (XYZ) and your ‘Tile of the Noise’ is only 2 vectors (XY). Your ‘Size of noise’ works because it uniform scales all 3 vectors. Here is how you can scale X Y Z independent of each other.

Hope I understood what you were trying to do and this helps.

3 Likes

Thank you so much! Exactly this is what I was looking for!
I found another little weird solution to stretch/squash the noise though:

1 Like

Special thanks for your help, I was looking for same solution and since the nodes are still a bit unclear for me then I am studying them so I need your help analyzing the nodes. I wish you are still active in the forums so that I can ask my questions.

The most confusing part for me is that why the G & B channels are combined using the component mask at first place but they’re divided into 3 scalars at the end? I cannot understand this, in fact I am confused if a noise is either a 2d or 3d vector…

My another question is related to the 30 & 1000 scalars, are they used to reduce the noise scale size to 0.03? is this scaling done because the noise size cannot be converted to a parameter to use in the instance material?

Hi vrex,
Yeah I’ve not been on the forms much lately. So I hope this response is helpful or that you already managed to work it out.

The noise node would take a 2 vector or 3 vector. The problem was the “Noise animation” part of the graph is a 3 vector, but the “Tile of the Noise” part is only a 2 vector so the material editor wont let you multiply them together (and the texture coordinate is unneeded for scaling). It would let you multiply in the “Size of noise” part because it is only a single value so it will multiply it to each part of the 3 vector and still compile. That is what I meant by Uniform scale, because it’s scaling everything the same amount. The Non-Uniform Scale part in my solution was so you could scale each direction it’s own different amount, and since they’re combined into a 3 vector before multiplying it into the rest of the graph it will only multiply it’s corresponding vectors together (X1X2, Y1Y2, Z1*Z2). So if it was say (10,20,5) * (2,4,3) the result would be (20, 80, 15).
My solution was trying to work the OP’s original material expression into something that wouldn’t cause Unreal to give an error.

“The most confusing part for me is that why the G & B channels are combined using the component mask” - the language is a bit tricky here I think, the component mask isn’t combining them into a single value it’s still considered a 2 vector (G, B). So down the chain when it’s re-Appended to R it becomes a 3 vector again (R,G,B) .

“My another question is related to the 30 & 1000 scalars, are they used to reduce the noise scale size to 0.03? is this scaling done because the noise size cannot be converted to a parameter to use in the instance material?” - Yes it does scale the coordinates down to .03 of the prior value and that is how you can change the size of the noise. I left them plain scalars, but you could make them parameters and name them noise scale, I was trying to keep the same format the OP was using in the example, personally I would probably just use a single .03 scalar parameter named 'Uniform noise scale". And yes it functions the same way Scale in the Noise node properties does and that property (as far as I know) can’t be exposed in a material instance.
Hope that helps clear things up.

1 Like