llSetColor
llSetColor(vector color, integer face)
引数faceで指定した面の色を引数colorで指定した色にする。
色の指定はvector型で行うが、値の範囲は<0.0, 0.0, 0.0>~<1.0, 1.0, 1.0>となる。
3つの要素のうち先頭からRed、Green、Blueの色要素の指定となっている。
Webページ等の色指定で一般的なRGB形式は0~255の範囲で色要素の強さを指定するが、LSLでは0.0~1.0の範囲なので注意すること。
0~255の色要素をLSL用に変換するには、255で割り算してやれば良い。
一般的なRGB形式の指定値との対比を参考までに掲載しておく。
3つの要素のうち先頭からRed、Green、Blueの色要素の指定となっている。
Webページ等の色指定で一般的なRGB形式は0~255の範囲で色要素の強さを指定するが、LSLでは0.0~1.0の範囲なので注意すること。
0~255の色要素をLSL用に変換するには、255で割り算してやれば良い。
一般的なRGB形式の指定値との対比を参考までに掲載しておく。
0~255 | 16進数 | LSL |
0 | 0 | 0 |
64 | 40 | 0.25 |
128 | 80 | 0.5 |
192 | C0 | 0.75 |
255 | FF | 1.0 |
代表的な色のLSL表現
色 | vector値 |
赤 | <1.0, 0.0, 0.0> |
緑 | <0.0, 1.0, 0.0> |
青 | <0.0, 0.0, 1.0> |
黄色 | <1.0, 1.0, 0.0> |
水色 | <0.0, 1.0, 1.0> |
紫 | <1.0, 0.0, 1.0> |
白 | <1.0, 1.0, 1.0> |
灰色 | <0.5, 0.5, 0.5> |
黒 | <0.0, 0.0, 0.0> |
llSetColor関数で変更できるのはスクリプトが稼動しているprimの色のみである。
リンクされているprimの色を変更するにはllSetLinkColor関数を使う。
また、primの色と透明度を同時に制御したい場合はllSetPrimitiveParams?関数またはllSetLinkPrimitiveParams?関数を使うとよい。
リンクされているprimの色を変更するにはllSetLinkColor関数を使う。
また、primの色と透明度を同時に制御したい場合はllSetPrimitiveParams?関数またはllSetLinkPrimitiveParams?関数を使うとよい。
なお、vector値は簡単に四則演算が出来るのでグラデーションの実装は容易である。
例えば赤(<1.0, 0.0, 0.0>)から青(<0.0, 0.0, 1.0>)へと色をゆるやかに変化させたい場合、以下のような実装にすれば良い。
例えば赤(<1.0, 0.0, 0.0>)から青(<0.0, 0.0, 1.0>)へと色をゆるやかに変化させたい場合、以下のような実装にすれば良い。
vector start_color = <1.0, 0.0, 0.0>; vector end_color = <0.0, 0.0, 1.0>; integer grad = 32; // 32段階のグラデーションで変化させる integer counter = 0; // グラデーション用カウンター default { touch_start(integer detected){ counter = 0; llSetTimerEvent(1.0); } timer(){ llSetColor(start_color + ((end_color - start_color) / grad) * counter, ALL_SIDES); counter ++; if (counter > grad){ llSetTimerEvent(0.0); } } }