_581x100.png CGsyomei_583x102.gif 訪問者 無料カウンター ページビュー 無料カウンター

2010年12月04日

初のツール「color changer」と処理速度に関する疑問点

以前やっていた仕事で、大量の草オブジェクトのワイヤーカラーをそれぞれランダムな色に、もしくは適当な色を一度に当てる作業を簡略化したいと思って初の簡単なUI付きツールを作りました。その名も「color changer」ですが、いろいろと疑問点も出てきました。
color changer.JPG

rollout yone_roll "change color"
(
button change_random_color "change random color"width:150 height:50

button change_simple_color "change simple color"width:150 height:50

on change_random_color pressed do
(
obj_sel = selection as array

obj_num = obj_sel.count


for i = 1 to obj_num do
(

obj_sel[i].wirecolor = [random 0 255,random 0 255,random 0 255]

)


)

on change_simple_color pressed do
(
obj_sel2 = selection as array

obj_num2 = obj_sel2.count


for i = 1 to obj_num2 do
(

obj_sel2.wirecolor = [random 0 255,random 0 255,random 0 255]

)
)
)

yone_floater = newrolloutfloater "color changer" 200 200

addrollout yone_roll yone_floater



これを100個程度のオブジェクトに対して使ってみると分かるのですが、それぞれのオブジェクトのカラーをランダムにする場合は一瞬で処理が完了するのですが、change simple colorで単一のカラーにする場合に物凄く動作が遅くなります。記述もchange random colorの時とほとんど同じはずなんですが、この原因が全くもって不明です。どなたか理由が分かる方がいましたら教えていただければと思います。



posted by けゑ at 17:21| Comment(4) | TrackBack(0) | Max Script
この記事へのコメント
どもです。
maxscriptはよくわかりませんが、

>for i = 1 to obj_num2 do
>(
>  obj_sel2.wirecolor = [random 0 255,random 0 255,random 0 255]
>)

ここのループを外して1回だけの実行にすれば良いのではないでしょうか。
多分・・・
Posted by tai at 2010年12月06日 10:00
ギャーー
空白を入れようとして を入れたらそのままになってしまった・・・!!のでややこしくないように一応もう一度コピペします・・・サーセン


>for i = 1 to obj_num2 do
>(
> obj_sel2.wirecolor = [random 0 255,random 0 255,random 0 255]
>)

↑を、
↓に、ってことでした。

>obj_sel2.wirecolor = [random 0 255,random 0 255,random 0 255]

アザース
Posted by tai at 2010年12月06日 10:01
rollout yone_roll "change color"
(
button change_random_color "change random color"width:150 height:50

button change_simple_color "change simple color"width:150 height:50

on change_random_color pressed do
(
obj_sel = selection as array

for obj in obj_sel do
(

obj.wirecolor = [random 0 255,random 0 255,random 0 255]

)


)

on change_simple_color pressed do
(
obj_sel = selection as array

solidColor = [random 0 255,random 0 255,random 0 255]
for obj in obj_sel do
(

obj.wirecolor = solidColor

)
)
)

yone_floater = newrolloutfloater "color changer" 200 200

addrollout yone_roll yone_floater


simpleColorだから、Loopの中に一々Randomする必要がないので、ひとつのカラーを指定してから、Loop中にアサインすればいい

***ERROR : 半角英数字のみのコメントは受付ません。 ←ややこしい。。。
Posted by aks at 2010年12月06日 13:15
>taiさん どもども非常に長らく放置ですみません。確かに無駄なループしてますねこれ。教えてもらった通りですっきりです。

>aksさん どうも長い間レス返してなくてすみません。色々教えて頂いてありがとうございます。確かにランダムなカラーのアサインを1000回やってたら遅くもなりますね^^;超初歩的なところで躓いてました。
Posted by けゑ at 2011年07月23日 12:14
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/41965025

この記事へのトラックバック