Jump to content

Root prim control light feature of all prims in chain


Lexii Lane
 Share

You are about to reply to a thread that has been inactive for 2577 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Hello, I am very very very very new to LSL, even though I have been in here for 10 years lol.. I am trying to find a way to have about 60 prims all shut off or turn on their light toggle at the same time via a switch... Can anyone help me? Thanks!

Link to comment
Share on other sites

21 minutes ago, Lexii Lane said:

Hello, I am very very very very new to LSL, even though I have been in here for 10 years lol.. I am trying to find a way to have about 60 prims all shut off or turn on their light toggle at the same time via a switch... Can anyone help me? Thanks!

Hi Lexii,

Do you mean to toggle between "Full Bright"and normal lighting, or to actually have each prim be a point source light that you toggle? Viewers that do not have advanced lighting enabled will enable no more than six light sources.

It sounds like all of your lights will be rezzed independently, as will the switch. This will require two scripts, one in the switch and one in each light (or instance of the same light, if they're all identical).

The script in the switch would accept touch input, toggle between TRUE(1) and FALSE(0), and then send the command across the region to all the lights using llRegionSay(). Here are the important functions...

The lights would all listen to the channel on which the switch script sends messages, executing the command via llSetPrimitiveParamFast().

Here are the important functions/constants...

We encourage new scriptures to get their hands dirty, so do some reading and have at it. You know where to find us if you get lost or stuck.

Have fun!

Link to comment
Share on other sites

You do not specify, if we are talking about an linked object or separate distributed objects placed around. Rule #1 all programming/scripting, define what should be done!

Simple solution below if separated objects. Two scripts mother and child, place mother in object controlling and child in all the others objects.

MOTHER.LSL

//      Simple region wide light controller
//      
//      Place this script MOTHER in object controlling
//
//      If it works, it was made by me :D
//

integer bSwitch= FALSE;
integer bFlash= FALSE;
float fTimerPeriod= 0.333;
float fGlow;

integer nChannel;


light( integer nState )
{
    if (nState==TRUE)
        fGlow= 0.6;
    else
        fGlow= 0.0;
        
    llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);
}

default
{
    state_entry()
    {
        nChannel=  0x80000000 | (integer) ( "0x" + (string) llGetOwner() );
    }
    
    on_rez(integer start_param)
    {
        llResetScript();
    }
 
    changed(integer change)
    {
        if (change & CHANGED_OWNER)
        {
            llResetScript();
        }
    }      
    
    touch_start(integer total_number)
    {
        bSwitch= !bSwitch;
        if (bSwitch==TRUE)
        {
            llSetTimerEvent( fTimerPeriod );
        }
        else
        {
            llSetTimerEvent( 0.0 );
            bFlash= FALSE;
            light( bFlash);            
            llRegionSay( nChannel, (string) bFlash );
        }
    }
    
    timer()
    {
        bFlash= !bFlash;
        llRegionSay( nChannel, (string) bFlash );
        light(bFlash );
    }
}

//  End MOTHER light controller

CHILD.LSL

//      Simple region wide light controller
//      
//      Place this script CHILD in the other objects
//
//      If it works, it was made by me :D
//

integer nChannel;
integer listenHandle;
integer nState= FALSE;
float fGlow;

default
{
    state_entry()
    {
        nChannel=  0x80000000 | (integer) ( "0x" + (string) llGetOwner() );
        
         listenHandle = llListen(nChannel, "", NULL_KEY, "");
    }
    
    on_rez(integer start_param)
    {
        llResetScript();
    }
 
    changed(integer change)
    {
        if (change & CHANGED_OWNER)
        {
            llResetScript();
        }
    }    
    
    listen(integer channel, string name, key id, string message)
    {
        if (channel==nChannel)
        {
            nState= (integer) message;
            if (nState==TRUE)
                fGlow= 0.6;
                else
            fGlow= 0.0;
            llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);
        }
    }
}

//  End CHILD light controller

 

Edited by Rachel1206
Link to comment
Share on other sites

And there you have it, three levels of answer!!!

;-).

ETA: I left my response open to go eat dinner, but didn't see any responses upon my return. As I was wrapping it up, I got a notification of Rolig's response, and almost tossed mine. The forum software doesn't seem to be quite "real time".

ETA2: Oy, the forum software is confused, or someone's a time traveler. I received a notification that Rachel had posted... after I'd posted this, edited it, and skimmed her post.

Edited by Madelaine McMasters
Link to comment
Share on other sites

1 hour ago, Rachel1206 said:

You do not specify, if we are talking about an linked object or separate distributed objects placed around. Rule #1 all programming/scripting, define what should be done!

Simple solution below if separated objects. Two scripts mother and child, place mother in object controlling and child in all the others objects.

MOTHER.LSL

//      Simple region wide light controller
//      
//      Place this script MOTHER in object controlling
//
//      If it works, it was made by me :D
//

integer bSwitch= FALSE;
integer bFlash= FALSE;
float fTimerPeriod= 0.333;
float fGlow;

integer nChannel;


light( integer nState )
{
    if (nState==TRUE)
        fGlow= 0.6;
    else
        fGlow= 0.0;
        
    llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);
}

default
{
    state_entry()
    {
        nChannel=  0x80000000 | (integer) ( "0x" + (string) llGetOwner() );
    }
    
    on_rez(integer start_param)
    {
        llResetScript();
    }
 
    changed(integer change)
    {
        if (change & CHANGED_OWNER)
        {
            llResetScript();
        }
    }      
    
    touch_start(integer total_number)
    {
        bSwitch= !bSwitch;
        if (bSwitch==TRUE)
        {
            llSetTimerEvent( fTimerPeriod );
        }
        else
        {
            llSetTimerEvent( 0.0 );
            bFlash= FALSE;
            light( bFlash);            
            llRegionSay( nChannel, (string) bFlash );
        }
    }
    
    timer()
    {
        bFlash= !bFlash;
        llRegionSay( nChannel, (string) bFlash );
        light(bFlash );
    }
}

//  End MOTHER light controller

CHILD.LSL

//      Simple region wide light controller
//      
//      Place this script CHILD in the other objects
//
//      If it works, it was made by me :D
//

integer nChannel;
integer listenHandle;
integer nState= FALSE;
float fGlow;

default
{
    state_entry()
    {
        nChannel=  0x80000000 | (integer) ( "0x" + (string) llGetOwner() );
        
         listenHandle = llListen(nChannel, "", NULL_KEY, "");
    }
    
    on_rez(integer start_param)
    {
        llResetScript();
    }
 
    changed(integer change)
    {
        if (change & CHANGED_OWNER)
        {
            llResetScript();
        }
    }    
    
    listen(integer channel, string name, key id, string message)
    {
        if (channel==nChannel)
        {
            nState= (integer) message;
            if (nState==TRUE)
                fGlow= 0.6;
                else
            fGlow= 0.0;
            llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);
        }
    }
}

//  End CHILD light controller

 

So I tried this just because LOL.

 

I now have two blinking boxes (mother and child non-linked as I assumed that was the point). They have glow and full bright and blink nicely although I didn't expect the mother to blink too.   I also got a LOT of script errors. Pasting them in.  I am just barely (by teeny bit) a script person LOL.

Tha's all I got. Assume it will make sense to those that know. I haven't played with the error area :D.

[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.

Link to comment
Share on other sites

Try this Chic,

Change...

 llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);

to...

 llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, fGlow, PRIM_FULLBRIGHT, ALL_SIDES, nState]);

Do that in each script.

And yes, the scripts are written to blink both switch and lights. If you don't want to blink the switch, comment out the llSetPrimitiveParams() call in the switch script.

Edited by Madelaine McMasters
Link to comment
Share on other sites

Wow thanks so much for the tips here! Didn't expect this much information coming so quickly!

The set up is ROOT PRIM, LINKED CHILDPRIMS. Was hoping to click the root prim, and have all the lights in the set, including the root, turn off - light source, not fullbright. I should have specified!

Link to comment
Share on other sites

The closest I got so far was this script I found, a freebie I guess:

 

// Touch the object to light it up.
// Lighting is configurable.
 
integer light_s = TRUE;
vector lightcolor = <1.0, 1.0, 1.0>;
float intensity = 1.0; // 0-1
float radius = 10.0;   // 0-10
float falloff = 0.75;   // 0-1
float glow = 0.01;
 
switchit()
{
    float thisglow = 0.0;
    light_s = !light_s;
    if (light_s)
    {
        thisglow = glow;
    }
    llSetPrimitiveParams([
        PRIM_POINT_LIGHT, light_s, lightcolor, intensity, radius, falloff,
        PRIM_FULLBRIGHT, ALL_SIDES, light_s,
        PRIM_GLOW, ALL_SIDES, thisglow
    ]);
      llSetColor(lightcolor, ALL_SIDES);
}
 
default
{
    state_entry()
    {
      llSetText(" ",<0,0,0>,1);
      switchit();
    }
 
    touch_start(integer total_number)
    {
        switchit();
    }
}

 

//

That script is allowing the prim to go fullbright, and turning on the lightsource for the prim it is in. Figuring out how to disable the fullbright, and broadcast that to a child script in the rest of the prims is where I am at :\

 

Link to comment
Share on other sites

1 hour ago, Madelaine McMasters said:

Try this Chic,

Change...

 llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);

to...

 llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, fGlow, PRIM_FULLBRIGHT, ALL_SIDES, nState]);

Do that in each script.

And yes, the scripts are written to blink both switch and lights. If you don't want to blink the switch, comment out the llSetPrimitiveParams() call in the switch script.

OK. Will try soon. I learn slooooooooowly and by trial and error. I can however get my texture and color change script to work the first time these days. So progress. I really like the PRE-TTY stuff the best. I'll let you know. Late for me.

 

Link to comment
Share on other sites

1 hour ago, Chic Aeon said:

So I tried this just because LOL.

 

I now have two blinking boxes (mother and child non-linked as I assumed that was the point). They have glow and full bright and blink nicely although I didn't expect the mother to blink too.   I also got a LOT of script errors. Pasting them in.  I am just barely (by teeny bit) a script person LOL.

Tha's all I got. Assume it will make sense to those that know. I haven't played with the error area :D.

[20:09] llSetPrimitiveParams error running rule #2 (PRIM_FULLBRIGHT): arg #2 (fullbright) integer expected but float given.
 

Ohh, minor bug it seems, I used PRIM_FULLBRIGHT, ALL_SIDES instead of  PRIM_GLOW, ALL_SIDES to the glow parameter, try to replace

llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);

with

llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_GLOW, ALL_SIDES, fGlow]);

If you do not want the mother to blink out-comment light(bFlash ); in timer()

Link to comment
Share on other sites

For a link set do as below - and yes mother blinks along ;) - to stop mummy blinking  >:( - out comment light(bFlash );: in the timer()

 

MOTHER.LSL

//      Simple link set light controller
//      Place this script MOTHER in object controlling
//      If it works, it was made by me :D

integer bSwitch= FALSE;
integer bFlash= FALSE;
float fTimerPeriod= 0.333;
float fGlow;

light( integer nState )
{
    if (nState==TRUE)
        fGlow= 0.6;
    else
        fGlow= 0.0;
        
      llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_GLOW, ALL_SIDES, fGlow]);
}

default
{
    state_entry()
    {
    }
    
    touch_start(integer total_number)
    {
        bSwitch= !bSwitch;
        if (bSwitch==TRUE)
        {
            llSetTimerEvent( fTimerPeriod );
        }
        else
        {
            llSetTimerEvent( 0.0 );
            bFlash= FALSE;
            light( bFlash);            
            llMessageLinked(LINK_ALL_OTHERS, 0, (string)bFlash, "");
        }
    }
    
    timer()
    {
        bFlash= !bFlash;
        llMessageLinked(LINK_ALL_OTHERS, 0, (string)bFlash, "");
        light(bFlash );
    }
}

//  End MOTHER light controller

CHILD.LSL

 //      Simple link set light controller
//      
//      Place this script CHILD in the other objects
//
//      If it works, it was made by me :D
//

integer nState= FALSE;
float fGlow;

default
{
    state_entry()
    {
    }
    
    link_message(integer sender_num, integer num, string message, key id)
    {
        nState= (integer) message;
        if (nState==TRUE)
            fGlow= 0.6;
        else
            fGlow= 0.0;
        llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_GLOW, ALL_SIDES, fGlow]);
    }    
}

//  End CHILD light controller

Edited by Rachel1206
Link to comment
Share on other sites

8 hours ago, Lexii Lane said:

    llSetPrimitiveParams([

        PRIM_POINT_LIGHT, light_s, lightcolor, intensity, radius, falloff,
        PRIM_FULLBRIGHT, ALL_SIDES, light_s,
        PRIM_GLOW, ALL_SIDES, thisglow
    ]);
      llSetColor(lightcolor, ALL_SIDES);

That script is allowing the prim to go fullbright, and turning on the lightsource for the prim it is in. Figuring out how to disable the fullbright, and broadcast that to a child script in the rest of the prims is where I am at :\

Replace my code above with this in the child, remember to add the gloabl variables lightcolor, intensity etc.

  link_message(integer sender_num, integer num, string message, key id)
  {
        light_s= (integer) message;
        if (light_s==TRUE)
            thisglow= 0.1;
        else
            thisglow= 0.0;

        llSetPrimitiveParams([
           PRIM_POINT_LIGHT, light_s, lightcolor, intensity, radius, falloff,
           PRIM_FULLBRIGHT, ALL_SIDES, light_s,
          PRIM_GLOW, ALL_SIDES, thisglow
       ]);
}

Do the same in MOTHER.LSL in the function light()

See also the Viki on PRIM_POINT_LIGHT for an example turning on/off  PRIM_FULLBRIGHT combined with PRIM_POINT_LIGHT

 

Link to comment
Share on other sites

9 hours ago, Rachel1206 said:

Ohh, minor bug it seems, I used PRIM_FULLBRIGHT, ALL_SIDES instead of  PRIM_GLOW, ALL_SIDES to the glow parameter, try to replace

llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_FULLBRIGHT, ALL_SIDES, fGlow]);

with

llSetPrimitiveParams ([PRIM_GLOW, ALL_SIDES, nState, PRIM_GLOW, ALL_SIDES, fGlow]);

If you do not want the mother to blink out-comment light(bFlash ); in timer()

OK> that works. 

Just wanted to note that (handily) this works  (original script) as a linkset or if not. I tested both ways.  :D.   So the controller doesn't need to be linked at all in order to get the child lights to flash. This seems pretty handy.  ^^ LOL.

 

The linkset code (yours) works as expected. 

Just putting that in for those trying things out that aren't primo script folks. 

 

Link to comment
Share on other sites

If everything is in the same linkset, we can do it all from one script in the root prim, if we label the prims first.    I prefer doing it this way most of the time -- far less work and a lot easier to maintain if there's only one script to worry about.

Put "light" (no quotes) in the description field of each light emitter and "switch" (again no quotes) in the description field of each light switch prim.

Then (I try not to post full scripts, but that seems a bit artificial in the context of this discussion), drop this in the root prim:

Note that you need to label the prims before inserting the script (or, if you label the prims later, reset the script after you've done so to force it to re-build the list of prims it's interested in).  


integer max;
integer counter;

integer light_s = FALSE;
vector lightcolor = <1.0, 1.0, 1.0>;
float intensity = 1.0; // 0-1
float radius = 10.0;   // 0-10
float falloff = 0.75;   // 0-1
float glow = 0.01;

list lLightPrims;
list lSwitchPrims;
list lParams;
string strLightPrim = "light";
string strSwitchPrim ="switch";

findPrims(){
    lLightPrims = [];//clear the list
    max = llGetNumberOfPrims() + 1;
    counter = 1;
    do{
        string str = llToLower(llList2String(llGetLinkPrimitiveParams(counter, [PRIM_DESC]), 0));
        //loop through the linkset, reading the description field of each prim.
        if(str == strLightPrim){//if that description is "light"
            lLightPrims +=[counter];//make a note of the link number
        }
        else if (str == strSwitchPrim){
            lSwitchPrims +=[counter];
        }
    }
   
    while(++counter < max);
   

}

default {
    state_entry() {
        findPrims();
    }

    on_rez(integer start_param) {
        findPrims();
    }

    changed(integer change) {
        if(change & CHANGED_LINK){
            findPrims();
        }
    }

    touch_end(integer num_detected) {
        if(~llListFindList(lSwitchPrims, [llDetectedLinkNumber(0)])){//touched a switch
            lParams=[];
            light_s=!light_s;//toggle the value of light_s
            max = -llGetListLength(lLightPrims);
            do{//run through the list of light prims, compiling a parameters list
                lParams +=[
                PRIM_LINK_TARGET,llList2Integer(lLightPrims, max),//read each link number in turn from the light prims list
                PRIM_POINT_LIGHT,light_s, lightcolor, intensity, radius, falloff,
                PRIM_GLOW,ALL_SIDES,glow * (float) light_s
                ];
            }
            while (++max);
            
            llSetLinkPrimitiveParamsFast(LINK_SET, lParams);

        }
    }


}

If the switch is in a different linkset from the lights, then it should be easy to see how to adapt this script for that purpose.

  • Like 5
Link to comment
Share on other sites

13 hours ago, Lexii Lane said:

Wow thanks so much for the tips here! Didn't expect this much information coming so quickly!

The set up is ROOT PRIM, LINKED CHILDPRIMS. Was hoping to click the root prim, and have all the lights in the set, including the root, turn off - light source, not fullbright. I should have specified!

If all prims in the linkset are to act eaxactly the same way, you can do it with a much simpler script than the one Innula suggested. Something like:

integer On;

default{
	touch_start(integer num_detected){
		On=!On;
		llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_POINT_LIGHT,On,<1,1,1>,1,1,1]);
	}
}

Of course, all those 1 digits need to be replaced with the values (rgb color, intensity, radius and fallout) you want the light sources to have.

  • Like 3
Link to comment
Share on other sites

1 hour ago, ChinRey said:

If all prims in the linkset are to act eaxactly the same way, you can do it with a much simpler script than the one Innula suggested. Something like:


integer On;

default{
	touch_start(integer num_detected){
		On=!On;
		llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_POINT_LIGHT,On,<1,1,1>,1,1,1]);
	}
}

Of course, all those 1 digits need to be replaced with the values (rgb color, intensity, radius and fallout) you want the light sources to have.

But do remember that people like me, who've turned off advanced lighting, will see only six of the 60 lights on at any time. I once had path lights on a 1/4 homestead island I shared with my partner. As I recall, only the closest six path lights would illuminate, and that was a very nice effect, as if the path was aware I was walking on it. No scripting was required for that little bit of magic.

Edited by Madelaine McMasters
  • Like 2
Link to comment
Share on other sites

54 minutes ago, ChinRey said:

If all prims in the linkset are to act eaxactly the same way, you can do it with a much simpler script than the one Innula suggested. Something like:


integer On;

default{
	touch_start(integer num_detected){
		On=!On;
		llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_POINT_LIGHT,On,<1,1,1>,1,1,1]);
	}
}

Of course, all those 1 digits need to be replaced with the values (rgb color, intensity, radius and fallout) you want the light sources to have.

All but the root are supposed to be enlighted - so it's LINK_ALL_CHILDREN instead of LINK_SET

4 minutes ago, Madelaine McMasters said:

But do remember that people like me, who've turned off advanced lighting, will see only six of the 60 lights on at any time. I once had path lights on a 1/4 homestead island I shared with my partner. As I recall, only the closest six path lights would illuminate, and that as a very nice effect, as if the path was aware I was walking on it. No scripting was required for that little bit of magic.

That sounds like a dirty trick :D

Link to comment
Share on other sites

2 minutes ago, Lexii Lane said:

Still tweaking and tinkering guys, thanks so much for all the help, fabulous stuff.. Never knew it would be so complicated to turn off some lights hahaha

 

When first I got into scripting it was because I thought "How complicated can it be to make a door open and close?".  

People who remember what it was like before Void Singer shared with us the hinge method, and the Timeless Linked Door Script was the simplest available method, will know I mean.

  • Like 3
Link to comment
Share on other sites

1 hour ago, ChinRey said:

If all prims in the linkset are to act eaxactly the same way, you can do it with a much simpler script than the one Innula suggested. Something like:


integer On;

default{
	touch_start(integer num_detected){
		On=!On;
		llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_POINT_LIGHT,On,<1,1,1>,1,1,1]);
	}
}

Of course, all those 1 digits need to be replaced with the values (rgb color, intensity, radius and fallout) you want the light sources to have.

In the end, this is the script that seemed to work best in this situation. It turns on all the lights in the linkset as needed, thank you all so much for your help with this!

  • Like 1
Link to comment
Share on other sites

This was a very good thread. I made several examples (changing some things along the way) and now have something to go by should I want to have this feature. Learned a bit too which is always good for a notsomuch script person.

Thanks all. 

  • Like 1
Link to comment
Share on other sites

1 hour ago, Madelaine McMasters said:

But do remember that people like me, who've turned off advanced lighting, will see only six of the 60 lights on at any time.

I doubt there are many computers that can handle as many as 61 light sources (we have to include the sun too, remember) at the same time anyway. Try to do it in Blender. Add 61 lamps to a scene and run it through cycles while you're away on your summer holiday. :P

The number of active light sources isn't necessarily higher with ALM btw. With ALM the number depends on how busy the gpu is and sometimes it can be as low as just two.

It still works though, both with and without ALM because it is always the ones closest to your camera that are the active ones and as you said, you can get an amazing effect walking around in a scene. Add glow to the lamp too and you won't really notice how few of them actually are illuminating.

Edited by ChinRey
Typos
Link to comment
Share on other sites

1 minute ago, ChinRey said:

I doubt there are many computers that can handle as many as 61 light sources (we have to include the sun too, remember) at the same time anyway. Try to do it in Blender. Add 61 lamps to a scene and run it through cycles while you're away on your summer holiday. :P

The number of active light sources isn't necessarily higher with ALM btw. With ALM the number depends on how busy the gpu is and sometimes it can be as low as just two.

It still works though, both with and without ALM because it si always the ones lcoests to your camera that are the active ones and as you said, you can get an amazing effect walking around in a scene. Add glow to the lamp too and you won't rally notice how few of them actually are illuminating.

It seems to be projecting the lightsource properly on the walls, its just the shadowing that suffers. The lights stay on tho. I am in ultra.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 2577 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...