Difference between revisions of "LlSetAlpha"

From Second Life Wiki
Jump to navigation Jump to search
m (mixed up visible/invisible pbr example)
 
(17 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{LSL_Function/face|face|}}
{{LSL_Function
{{LSL_Function
|inject-2={{LSL_Function/face|face}}{{LSL_Function/alpha|alpha}}
|func_id=51|func_sleep=0.0|func_energy=10.0
|func_id=51|func_sleep=0.0|func_energy=10.0
|func=llSetAlpha
|func=llSetAlpha|sort=SetAlpha
|p1_type=float|p1_name=alpha|p1_desc=between 0.0 (clear) and 1.0 (solid) (0.0 <= '''alpha''' <= 1.0)
|p1_type=float|p1_name=alpha
|p2_type=integer|p2_name=face
|p2_type=integer|p2_name=face
|func_footnote
|func_footnote
|func_desc=Sets the '''alpha''' on '''face'''
|func_desc=Sets the [[PBR_Materials#Nomenclature_changes|Blinn-Phong]] {{LSLP|alpha}} on {{LSLP|face}}
|return_text
|return_text
|spec
|spec
|caveats
|caveats=
* llSetAlpha will have no visible effect on faces with a PBR material. To work on faces both with and without a PBR material, use one of these snippets:
** invisible <source lang="lsl2">
llSetAlpha(0.0, ALL_SIDES);
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_GLTF_BASE_COLOR, ALL_SIDES, "", "", "", "", "", 0.0, PRIM_GLTF_ALPHA_MODE_MASK, 1.0, ""]);
</source>
** visible <source lang="lsl2">
llSetAlpha(1.0, ALL_SIDES);
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_GLTF_BASE_COLOR, ALL_SIDES, "", "", "", "", "", "", "", "", ""]);
</source>
|constants
|constants
|examples
|examples=<source lang="lsl2">
float cloakSpeed = 0.1;
 
default
{
    touch_end(integer total_number)
    {
        float alpha = 1.0;
        while(alpha > 0.0)
        {
            alpha -= 0.1;
            llSetAlpha(alpha, ALL_SIDES);
            llSleep(cloakSpeed);
        }
        state cloaked;
    }
}
 
state cloaked
{
    touch_end(integer total_number)
    {
        float alpha;
        while (alpha < 1.0)
        {
            alpha += 0.1;
            llSetAlpha(alpha, ALL_SIDES);
            llSleep(cloakSpeed);
        }
        state default;
    }
}
</source>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llGetAlpha]]|}}
{{LSL DefineRow||[[llGetAlpha]]|Gets the prim's alpha}}
{{LSL DefineRow||[[llGetColor]]|}}
{{LSL DefineRow||[[llGetColor]]|Gets the prim's color}}
{{LSL DefineRow||[[llSetColor]]|}}
{{LSL DefineRow||[[llSetColor]]|Sets the prim's color}}
{{LSL DefineRow||[[llSetLinkColor]]|Sets link's color}}
{{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=
{{LSL DefineRow||[[changed]]|[[CHANGED_COLOR]]}}
{{LSL DefineRow||[[changed]]|[[CHANGED_COLOR]]}}
|also_articles
|also_articles
|notes
|notes=In practical terms, "alpha" means "transparency" or "visibility".
 
To be clear, llSetAlpha will only affect the prim that the script it is in. It will not affect any linked prims. To set the alpha state for those, use [[llSetLinkAlpha]]
|deprecated
|deprecated
|cat1
|cat1

Latest revision as of 15:19, 11 December 2024

Summary

Function: llSetAlpha( float alpha, integer face );
0.0 Forced Delay
10.0 Energy

Sets the Blinn-Phong alpha on face

• float alpha from 0.0 (clear) to 1.0 (solid) (0.0 <= alpha <= 1.0)
• integer face face number or ALL_SIDES

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

Caveats

  • The function silently fails if its face value indicates a face that does not exist.
  • llSetAlpha will have no visible effect on faces with a PBR material. To work on faces both with and without a PBR material, use one of these snippets:
    • invisible
      llSetAlpha(0.0, ALL_SIDES);
      llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_GLTF_BASE_COLOR, ALL_SIDES, "", "", "", "", "", 0.0, PRIM_GLTF_ALPHA_MODE_MASK, 1.0, ""]);
      
    • visible
      llSetAlpha(1.0, ALL_SIDES);
      llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_GLTF_BASE_COLOR, ALL_SIDES, "", "", "", "", "", "", "", "", ""]);
      

Examples

float cloakSpeed = 0.1;

default
{
    touch_end(integer total_number)
    {
        float alpha = 1.0;
        while(alpha > 0.0)
        {
            alpha -= 0.1;
            llSetAlpha(alpha, ALL_SIDES);
            llSleep(cloakSpeed);
        }
        state cloaked;
    }
}

state cloaked
{
    touch_end(integer total_number)
    {
        float alpha;
        while (alpha < 1.0)
        {
            alpha += 0.1;
            llSetAlpha(alpha, ALL_SIDES);
            llSleep(cloakSpeed);
        }
        state default;
    }
}

Notes

In practical terms, "alpha" means "transparency" or "visibility".

To be clear, llSetAlpha will only affect the prim that the script it is in. It will not affect any linked prims. To set the alpha state for those, use llSetLinkAlpha

See Also

Events

•  changed CHANGED_COLOR

Functions

•  llGetAlpha Gets the prim's alpha
•  llGetColor Gets the prim's color
•  llSetColor Sets 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

•  Translucent Color

Deep Notes

Signature

function void llSetAlpha( float alpha, integer face );