Is there a way to rotate procedural noise (for example, instead of facing up, have it angled at 45 degrees)? I tried various UV and projection nodes and nothing worked. I seem to remember that Octane had to "bake" noise before transforming. Is it possible in Arnold? Thanks!
Solved! Go to Solution.
Solved by lee_griggs. Go to Solution.
No problem.
You have a list of ways to do that.
Let me mention the 2 most releveant.
Use the OSL UV Transform node piped into a procedurals noises, P point. Rotate, and its done. This will also show in the viewport under HQ mode in 3ds max.
The second method is to use an Arnold UV transform and hook your noise up to the passthrough slot, then rotate.
Do note, this map wont show in viewport and wont work with viewport PBR. Use OSL method instead.
Thanks for the reply! I was able to get the result I wanted using this method, but only with one of Maya's noises. Does this not work with aiNoise or aiCellNoise?
Edit: Aha, down at the very very very bottom of the Arnold for Maya help page on aiUVTransform it says it does not work with aiNoise since it's not calculated in UV space. At least I have a workaround now, using Maya noise instead.
Here I wrote a new shader for you.
All you need to do is wire it up and play with the logic in the UI.
I build the rotation into the noise's UV transform directly and exposed a couple of features in the ui.
shader RotatingNoise ( float Rotate = 23, float scale = 40, float stretch = 0.01, output vector Noise = 0, ) { point Po = point(u,v,0); point uv = rotate(Po, radians(Rotate), point(0.5,0.5,0) , point(0.5,0.5,0) +vector(0.0,0.0,1.0) )*vector(stretch,1,1)/scale; Noise = noise("perlin",uv); }
Both of them should work fine.
Remember, that OSL Transform is happening before the point is injected, in Arnold Transoform, they have done it post the node, oposit of OSL.
Note I source from the P slot if using uv transform.
I can rotate both noises like this.
Hmm, interesting. I copied your code into an aiOslShader and plugged that into P on the noise and that does indeed work. Any idea why I can't get aiUVTransform to do the same thing?
Sounds like to me, that you are rotating the frame and not the transform point.
The node has 2 rotate float values, use the Transform one
Ah I got it. I needed to set the noise Coord Space to "uv." It defaulted to "object." Working perfectly now. Thank you!
You can also do something bizzare as....
Put a UV transform into the P slot of any of the 2 noises.
This will tricker and update them up data chain, and NOW the post transform will work on both of them.
So they need an init, then it works.
Thank you. I got it working after I set the noise Coord Space to "uv." It defaulted to "object." All good now.