A tutorial for creating flashing and pulsing lights where the static mesh also reflects the lighting change!
1. - First thing we need is to create a Material Instance Constant (MIC). SO create a new blank one in your map file and go find a material to base it on. For simplicitys sake with this tutorial I'm using a stock fluro light as it has the required parameters that are needed! (as shown below)
We'll be performing realtime altering of the highlighted component, which controls the colour of the 'light' area of the material.
2. - Next set your MIC to the material. Open the VectorParameterValues component then tick the checkbox then set the colour you want.
First of all I recommend set the light to it's dim state! Once you have write down the values of the R, G and B values as we'll need to re-use these shortly.
3. - Next set the light to it's bright state! (like the pic shown below) write down the values of the R, G and B values as we'll need these values later. (just to 2 digits - eg.. .68)
4. - Now set your MIC back to the dim state values and save them!
IMPORTANT!!: Any static mesh that uses this material will be affected via the Kismet sequence! Don't set any Static Meshes to tis material if you don't want them to change!
5. - Next go into the generic browser and select MaterialInstanceActor. (shown below)
6. - Add one to your level then open it and set the MatInst to your MIC. (shown below)
7. - Next add a PointLightToggleable to the map! Set it's brightness to a low value (like .01), so it starts in a dim state. Now while it's highlighted, open Kismet, right click and select "New Matinee".
8. - Open the new matinee so you get into the editor.
9. - Right click on the side area and select "Add New Empty Group" and give it a name. (eg brightness).
10. - Rightclick on the new group and select "Add New Float Property Track". Pick ...Brightness as the Property name. This track will control the brightness of the dynamic light.
11. - Next create another group. Call it something like Material then right click it and select "New Vector Material Param Track" - This will control the material change. While the Vector track is highlighted goto the bottom of the screen and set "Paraname" to 'LightColor'. (as shown below)
The next part is about setting keyframes. I won't go over it entirely and will just do one to show how to control the material change.
12. - Create two keyframes in both the brightness and Vector tracks. One will be the original setting and one will be our new bright setting. Work out which one will be your bright key and right click the key in the brightness track and select 'Set Value' and set it to a high value. (like 2.0)
13. - Next click one your 'bright' vector key(under the key you just set in the brightness track) and tick the little box on the righthand side of the Vector track title bar (highlighted '13' in the pic below). - If the curve editor isn't displayed - Click the view menu and select Toggle curve editor.
14. - In the curve editor window untick the green and blue channels. (highlighted '14' in the pic below) - This will allow you to just edit the red channel for now.
Next refer to your values you wrote down when you worked out your bright colour in the MIC that we looked at earlier on in step 3!
15. - Set the red channel on the curve editor to the value you had written down in step 3. (using my pic, I'd slide the red channel down to .37)
16. - Next untick the red channel and pick the green channel and set it.
17. - Next untick the green channel and pick the blue channel and set it.
So now you should have two keys where the light brightness is raised and the material parameters are also raised! You should also have the un-modified keys that are the low values.
TIPS: It's a gradual change beteen the keys so if you want a sharp flicker set the keys closer together! See the image below for an explanation! Also duplicate the dull and bright keys to get your flickering/pulsing matinee going. Duplicating them will sve you from having to edit each key!
18. - Last bit now is to set your fluro light Static Mesh to use your MIC.
19. - Put your triggable light next to your Static mesh
20. - Now attach the light and Material Instance actor to your matinee! (See pic below)
Hopefully I didn't miss something and it's now be up and running for ya!
-- Edited by Lord_PorkSword on Tuesday 8th of January 2013 09:19:34 AM
Instructions grabbed from the buzz vids that I got with my copy of UT3. I'd done this in my first map and cheated by duplicating the matinees into my current map! ;)
I try to make it as close to the original as I can (don't have any custom materials or meshes, will try to use the stock assets that came with the game).
Well, my day is getting worse and worse. Unreal Editor 1 doesn't start... I can't continue my work on my remake it seems, same for my Sunspire WIP for UT2004. I just started to hate my new PC :/
Btw, your remake looks nice but it's really a lot modernized and bigger now.
-- Edited by Sly on Saturday 9th of April 2011 05:24:43 PM
I think what lps is trying to say is that you should find two states of light (dull&bright) that fits your taste. If you are happy with the color write down the rgb values of both states on a piece of paper / notepad. You'll need those values later (step 14) to control the color in matinee.
As a side note, if you just want a material/light to flicker permanently (this means if the flickering is not triggered/canceled by a certain event) you can do it all inside the material editor by using several sine/cosine nodes for example.
-- Edited by mAlkAv!An on Friday 9th of March 2012 03:26:29 PM
Heu... where do you set dull&bright values where there is only 1 RGB value you can set ??? To me, it's weither dull or bright ?
Indeed, I'm aware you can do the same thing in the material editor but I dunno how to make it pulse ramdomly ? Beside, a togglelight will still be needed to light the surrounding.
So THX anyway but I'm still confuse lol
-- Edited by stevelois on Friday 9th of March 2012 04:34:40 PM
__________________
Stevie's corner A blog dedicated to UE4, UDK, UT99 / 2004 / III / 4.
Yes of course, it will just be one of both states at the same time. The point is you need the values later in matinee, it does no matter if your MIC is dull or bright. Easy example: your bright light is perfect blue glowing, let's say 0,0,10, the dull one is a very dark blue no glowing, perhaps 0,0,0.5. Just keep both RGB values in mind because you'll have to enter them for the matinee keys.
You can use any light you want, a light function material will do the trick. And yes, it works with static lighting, too. I've done this for the torches in Blitz' bridge of fate map for example.
-- Edited by mAlkAv!An on Friday 9th of March 2012 04:47:14 PM
I'm reading the tut but I don't understand those steps :
2. - Next set your MIC to the material. Open the VectorParameterValues component then tick the checkbox then set the colour you want.
First of all I recommend set the light to it's dim state! Once you have write down the values of the R, G and B values as we'll need to re-use these shortly.
3. - Next set the light to it's bright state! (like the pic shown below) write down the values of the R, G and B values as we'll need these values later. (just to 2 digits - eg.. .68)
You can only set the light values 1 time ? So I don't understand how you can set a dull & bright value from pic 2 ? :o I would like to use that kind of effect in my current wip map.
__________________
Stevie's corner A blog dedicated to UE4, UDK, UT99 / 2004 / III / 4.
Malk is correct. Set the material instance to your preferred bright values. Write these values down. Next find out what you'd like as your dull values. Write these values down. Now you either leave the material instance as either your bright or dull setting, it's up to you. Once you go to work on the kismet sequence you'll already know what your settings for bright and dull are.
Before I ask for more explanation, I already maded a light flickering. Today I've decided to make the flickering light material. I've made many attempts by using the copy/paste option in the edit menu but I didn't succeeded :(
The thing is, I've already spended lot's of time for the brightness values & I don't want to redo the same thing for the new track only. I can't imagine you can't copy/paste the values from track to track ?
So any idea ???
__________________
Stevie's corner A blog dedicated to UE4, UDK, UT99 / 2004 / III / 4.
As far as I know you can only copy from one type of key frame to the same type of key frame as each key holds different values. I'm guessing, from the above pic, you want to copy the points from the brightness track to the vector track. This can't be done as the values in the brightness track are different from the vector track. The best you can do is click on the keys in the brightness track to, set the time, then click on the "Vector Materiap Param" area to highlight that track and then add a key and give it your RGB values.
I just created flickering lights with random intervalls without the hassle of having to place a dozen of keys by using 4 delays in a loop and each one with a random float. If anyone is interested, I will make a small "tutorial" for that and post it here in this thread.
I promised a small instruction for the quick way of doing flickering lights with just 3 keys and a loop of four Delay nodes (eventually, 2 or 3 delays and 2 keys might be possible too, but I'll just show how I did it, the more delays, the bigger the random flickering).
It is more of a tutorial on how to recreate the Unreal Engine 1 flickering light effect (I believe this could be tweaked too).
Here it is:
Step 1:Setting up the Matinee
Do as described in the tutorial above: Place a MI Actor, link your material in the MI Actor. Create a Matinee in Unreal Kismet and set it up with 3 keys: Light off/material dimmed, light on/material glowing and Light off/material dimmed (do it in this order as I don't know if swapping the order with "on off on" will still give the desired results but that is up to the user after all).
Here is an example of how my matinee looks like:
I made it 0.125 seconds long (but the lenght is up to the user and irrelevant anyway as you can alter it, later on more about that). After your matinee is set up, we can proceed to step 2.
Step 2: Preparing the Matinee
Our goal is to trigger this matinee on and off in random intervalls, this is why we will need Delay notes later on. But in order to be able to do so, we will have to tick bLooping in the Matinee's settings inside Unreal Kismet:
This is very important. You can take a look at the comment of bLooping, if you hover your cursor on it. It will display: "If sequence should pop back to beginning when finished. Note, if true, will never give Completed/Aborted events - sequence must be explicitely Stopped."
What you read here is a very important line explaining the way this little trick works.
Step 3: Creation of the Delay Loop
Now we will set up the loop of delays. Place a LevelBeginning node, place a Delay node and a Random Float. Link the Random Float to the Delay and duplicate that construction three times so that you have four Delays each with one Random Float.
Why is this necessary?
Well, it will work like this: When the level starts (LevelBeginning node), it waits for a random time (Delay 1), then it starts the sequence and at the same time links to another random delay (Delay 2). Delay 2 is a break before it links to Delay 3, another small random break that leads to the Stop Matinee event, and at the same time Delay 4, a small random break that leads to Delay 1 (to restart the entire thing).
For those who are confused by what I just said and prefer clear schemes instead of text, in short it is this: LevelBeginning -> ||: Delay 1 (->start sequence) -> Delay 2 (break in between Play and Stop) -> Delay 3 (->stop sequence) -> Delay 4 (break after Stop before Play) :|| RESTART from Delay 1 All delays are random due to the Random Floats. We basically allow the engine to play the sequence for a random time, turn it off for a random time and turn it on again, all this in a loop. LevelBeginning initiates the event chain.
Delay 1 has the random time intervall: Min.=0.03125 and Max.=0.0625. Delay 2, 3 and 4 have the random time intervalls: Min.=0.03125 and Max.=0.125.
This is the Delay loop:
I noticed that these values and four Delay nodes get me closer to the original Unreal Engine flickering light than messing with a dozen of keys that are repetitive, although I admit, this could need more tweaking. But the effect is already pretty close.
This is about how the entire sequence should look like in the end:
If you want to change the playback speed of your Matinee, you can change it in the Matinee's properties under Playback Rate. Per default it is set to 1, you can increase or decrease it though.
I hope it was not too confusing and that everybody can understand what I did there! If anyone has any questions, feel free to ask me.