Help automating (randomizing) texture mapping position

Thanks pascal, looking forward to it!

@pascal Couldn’t you not randomize the W rotation like here? It should work for any mapping type.


Hi Micha - yes, good catch, that might work too - I’ll have a look. meantime, I have something working , at least partly, doing it the old clunky way via the mapping widget- @arkadius.belov, see if this does anything you like - it may well have some bugs still. (7.9 KB)

@arkadius.belov - updated with a bug fix - widgets should turn off correctly now. I will investigate @Micha 's suggestion to rotate the UVW and not the widget, I like that idea…



Thanks very much Pascal, however I am getting this error:

hm - does it ever work? if it does sometimes, can you pm me a file where it does not?

I just discovered this… Pascal this is AWESOME !!! should be a fixed part of Rhino IMHO

Thanks !!!


OK… good, thanks for the reminder, too, that I still need to try to do this in the UVW numbers and not the mapping widget, as Micha suggested.



I have unfortunately never used scripts, but I am working on a project where I really could use this script. I have a bunch of wooden planks, where I would like to randomize the position of the mapping widget. There are about 250 planks that all reference the same mapping widget.

I have given it a try to run the script, but I am getting this error message.

Thanks for your help!

Hello - can you please post a small file where this fails, I’ll see if I can figure it out.


Thanks for the quick reply! I have attached the file and hope you also have access to the material, if not let me know.

Plank Randomizer.3dm (3.9 MB)

Hi Julius - I see that in this case, even when it works it does not do a very useful jiggle… too much the same jiggle on each object. I’ll dig some more, I have not yet seen the error you report.


Thanks for your help! Maybe I am doing something wrong in the process. I am very new to scripts, so all I have been doing right now is:

  1. Select all widgets.
  2. RunPythonScript

I am guessing I maybe have to edit the script before running it?

I have actually just found a very simple method to randomize the texture, by simply distributing all the widgets. However, I would be extremely glad to also get it working with the script.

1 Like

@anon97110246 with the script, select the objects not the mapping widgets … those are being turned off and no longer exist. I’ll fix that so they cannot be selected. But still the jiggling is a bit useless in this case.


1 Like

hey Pascal, long time since i logged in.

this very helpful little(?) script got some upgrades, thank you so much for your work :slight_smile:

could you add Size Jiggling as well? From i.e. 0.1 to 10 factor, either widget XYZ altogether or separate X, Y, Z values.

that would pretty much cover all widget jiggling needs, apart from UVW.


@pascal I just wanted to jump on the “Thank You” train. I use this little script all the time now with twinmotion & enscape workflows. It’s amazing. Thank you very much for making my life easier!



@pascal amazing script. i was wondering if there is a way to also flip or mirror the widgets randomly on the 3 axis for more randomization?

1 Like

Similar to this earlier Q. :

1 Like

Similar but not quite
what I meant was that it only rotates zero degrees or 180 degrees and not the values between. this is useful for models like parquet where there are lots of small pieces and you are using only one wood texture and offset alone doesn’t get rid of the repetition.
gotta learn python :grinning:

have a look at this one I wrote a while back

1 Like

I guess, you could easily do this within the workflow. Apply identical texture mapping and then randomly flip the uv directions by using either grasshopper - simple to make a few lists and flip objects - or in rhino just make two groups and reverse the texture direction command ‘flip’ or ‘dir’

1 Like