I don't know any but it's not so hard to write one.
Here you go, hope it will do what you expected it to:
fn shuffle &arr =
(
local temp, swapIndex, counter = arr.count + 1
while counter > 1 do
(
swapIndex = random 1 (counter -= 1)
temp = arr[counter]
arr[counter] = arr[swapIndex]
arr[swapIndex] = temp
)
OK
)
fn incrementCounters &r &g &b step =
(
if (b += step) > 256 do
(
b = 1
if (g += step) > 256 do
(
g = 1
if (r += step) > 256 do r = 1
)
)
)
fn assignRandomWirecolor objs simple:true =
(
local stepCount = objs.count^(double 1/3) + 1
local step = 255./stepCount
local redArr = #(0) + #{1..255}
local greenArr = copy redArr #noMap
local blueArr = copy redArr #noMap
local r = local g = local b = 1
if simple then
(
shuffle &redArr
shuffle &greenArr
shuffle &blueArr
)
else shuffle &sel -- slower with many objects
for obj in objs do
(
obj.wirecolor = [redArr[int(r)], greenArr[int(g)], blueArr[int(b)]]
incrementCounters &r &g &b step
)
)
sel = selection as array
clearSelection()
assignRandomWirecolor sel --simple:false --> if simple is not so cool, try the other option
select sel
Of course it all also depends on the purpose you want to use it for, this is just a general approach and as such it might not be suitable for that exact task. If that's the case, you can give more details and I'll make some adjustments.
I don't know any but it's not so hard to write one.
Here you go, hope it will do what you expected it to:
Of course it all also depends on the purpose you want to use it for, this is just a general approach and as such it might not be suitable for that exact task. If that's the case, you can give more details and I'll make some adjustments.