Difference between revisions of "LlSetColor"

From Second Life Wiki
Jump to navigation Jump to search
(That is harder to read and costs more in LSO.)
(add caveats about PBR)
 
(2 intermediate revisions by 2 users not shown)
Line 5: Line 5:
|p1_type=vector|p1_name=color|p2_type=integer|p2_name=face
|p1_type=vector|p1_name=color|p2_type=integer|p2_name=face
|func_footnote
|func_footnote
|func_desc=Sets the {{LSLP|color}} on {{LSLP|face}} of the prim.
|func_desc=Sets the [[PBR_Materials#Nomenclature_changes|Blinn-Phong]] {{LSLP|color}} on {{LSLP|face}} of the prim.
|return_text
|return_text
|spec
|spec
|caveats
|caveats=
* llSetColor will have no visible effect on faces with a PBR material. To work on faces both with and without a PBR material, use this snippet: <source lang="lsl2">
llSetColor(color, ALL_SIDES);
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_GLTF_BASE_COLOR, ALL_SIDES, "", "", "", "", llsRGB2Linear(color), "", "", "", ""]);
</source>
|constants
|constants
|examples=<lsl>
|examples=<source lang="lsl2">
integer face = -1;
integer face = -1;
vector color = <1.0, 1.0, 1.0>;
vector color = <1.0, 1.0, 1.0>;
Line 25: Line 29:
     }
     }
}
}
</lsl>
</source>
|helpers=
|helpers=
{{{!}} class="sortable" {{Prettytable}}
{{{!}} class="sortable" {{Prettytable}}
Line 107: Line 111:
{{LSL DefineRow||[[llSetLinkColor]]|Sets link's color}}
{{LSL DefineRow||[[llSetLinkColor]]|Sets link's color}}
{{LSL DefineRow||[[llSetLinkAlpha]]|Sets link's alpha}}
{{LSL DefineRow||[[llSetLinkAlpha]]|Sets link's alpha}}
{{LSL DefineRow||[[PRIM_COLOR]]|The equivilant parameter for [[llSetPrimitiveParams]]}}
{{LSL DefineRow||[[PRIM_GLTF_BASE_COLOR]]|The equivilant PBR parameter for [[llSetPrimitiveParams]]}}
|also_tests
|also_tests
|also_events=
|also_events=

Latest revision as of 16:28, 11 December 2024

Summary

Function: llSetColor( vector color, integer face );
0.0 Forced Delay
10.0 Energy

Sets the Blinn-Phong color on face of the prim.

• vector color color in RGB <R, G, B> (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = white)
• integer face face number or ALL_SIDES

If face is ALL_SIDES then the function works on all sides.

Newbie Notes

llSetColor changes the color of a prim, either on a specific side (face) or the entire prim.

Example:
llSetColor(<r, g, b>, ALL_SIDES);

r, g, b: values for red, green, blue ranging from <0.0, 0.0, 0.0> (black) to <1.0, 1.0, 1.0> (white)

To continue reading see: Newbie Notes

Caveats

  • The function silently fails if its face value indicates a face that does not exist.
  • llSetColor will have no visible effect on faces with a PBR material. To work on faces both with and without a PBR material, use this snippet:
    llSetColor(color, ALL_SIDES);
    llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_GLTF_BASE_COLOR, ALL_SIDES, "", "", "", "", llsRGB2Linear(color), "", "", "", ""]);
    

Examples

integer face = -1;
vector color = <1.0, 1.0, 1.0>;

default
{
    touch_start(integer num)
    {
        if(~face)       //quick & dirty but efficient way of testing if face is not equal to -1
            llSetColor(color, face); //restore the color
        face = (face + 1) % llGetNumberOfSides(); //increment and keep the face number in range
        color = llGetColor(face); //save the face's color
        llSetColor(<0.5, 0.0, 0.0>, face );  //change the face's color
    }
}

Useful Snippets

Color Hexadecimal code LSL color representations
NAVY #001f3f <0.000, 0.122, 0.247>
BLUE #0074d9 <0.000, 0.455, 0.851>
AQUA #7fdbff <0.498, 0.859, 1.000>
TEAL #39cccc <0.224, 0.800, 0.800>
OLIVE #3d9970 <0.239, 0.600, 0.439>
GREEN #2ecc40 <0.180, 0.800, 0.251>
LIME #01ff70 <0.004, 1.000, 0.439>
YELLOW #ffdc00 <1.000, 0.863, 0.000>
ORANGE #ff851b <1.000, 0.522, 0.106>
RED #ff4136 <1.000, 0.255, 0.212>
MAROON #85144b <0.522, 0.078, 0.294>
FUCHSIA #f012be <0.941, 0.071, 0.745>
PURPLE #b10dc9 <0.694, 0.051, 0.788>
WHITE #ffffff <1.000, 1.000, 1.000>
SILVER #dddddd <0.867, 0.867, 0.867>
GRAY #aaaaaa <0.667, 0.667, 0.667>
BLACK #111111 <0.067, 0.067, 0.067>

See Also

Events

•  changed CHANGED_COLOR

Functions

•  llGetAlpha Gets the prim's alpha
•  llSetAlpha Sets the prim's alpha
•  llGetColor Gets the prim's color
•  llSetLinkColor Sets link's color
•  llSetLinkAlpha Sets link's alpha
•  PRIM_COLOR The equivilant parameter for llSetPrimitiveParams
•  PRIM_GLTF_BASE_COLOR The equivilant PBR parameter for llSetPrimitiveParams

Articles

•  Color in LSL
•  Color and Scripting

Deep Notes

Signature

function void llSetColor( vector color, integer face );