2

これを行うためのスクリプトまたはコードを知っていますか?

ランダムな色を与えるものをいくつか見ましたが、2つのオブジェクトが同じワイヤーカラーを持っていないことを確認する必要があります。

ありがとう!=)

4

1 に答える 1

1

私は何も知りませんが、書くのはそれほど難しくありません。

ほら、期待どおりに動作することを願っています。

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

もちろん、使用目的にもよりますが、これは単なる一般的なアプローチであり、その正確なタスクには適していない可能性があります。その場合は、詳細をお知らせいただければ、いくつかの調整を行います。

于 2012-01-20T09:16:31.820 に答える