I search for solutions in this order: Past Code, Unreal Source, Wiki, BUF, groups.yahoo, google, screaming at monitor. – RegularX
Legacy:Making An Interpolation Path
What the heck is an interpolation path? Quite simply, a triggered path that sends the player to different points in it, in a specific order. An interpolation path was used for Unreal Tournament's CityIntro map that starts up when you first load UT. Some of the editable variables include skipping the next point, speed of the game (this makes cool matrix-like scenes possible if you know what you're doing), speed of the camera, etc.
An interpolated curve doesn't actually touch the points at all. It is pulled towards the points, but without actually going through them. (It is not the same as splining. A spline is a smoothed line that goes through all of the points in the path. This is commonly used for smooth paths, but not in Unreal.)
Laying the path
|Events -> Tag||Tie all the points with the name|
|InterpolationPoint -> Position||order of each point in the path, starting with 0|
|InterpolationPoint -> bEndOfPath||This value in the last point determines whether the path is open or closed|
You need at least 3 points for a closed path, 4 for an open path. When any point of the path is selected, UnrealEd shows the path as a curved white line, with little axes glyphs at intervals. These don't actually mean anything, and they will never rotate.
First of all, lay out your path. Find Actor >> Keypoint >> InterpolationPoint in the Actor Classes Browser. The camera will travel in a straight line from one point to the next, so set your path up accordingly.
Define the order of the points with the InterpolationPoint -> Position property. This must be set to 0,1,2... etc.
Tarquin: No-one mentioned the freaky lines and circle that appears in UEd at this point! O_o Or that you need a minimum of 3. And bEndOfPath makes the lines disappear.
EntropicLqd: And how the heck do you figure out which way the camera is actually pointing? I've spent hours trying to figure out how to get my InterpolatingSkyZone to actually travel the path I want without any crazy rotations but to no avail. It's fine most of the way around and then it suddenly goes wacky and spins randomly.
Tarquin: I've just got this to work. Doesnt seem any way to take the player off the path again. The direction of each IP gives the directio the player will point in, but the path glyphs in UEd dont show this. I've just made myself seasick.,,, urg
Mychaeel: No, it doesn't spin randomly. It interpolates the angles numerically, so if one of your interpolation points is set to 355° and the next to 5° (a 10° difference, you'd think), it'll not rotate 355°...359°...0°...5° but backwards. To make it behave as you want it to, you'd have to set the second InterpolationPoint's rotation to 365° rather than 5°.
Neveos: Everything is set correctly on mine (it is important that it starts at "0", btw, or it crashes at the end), but it wants to head back to the first point at the end of the path, before ending. It doesn't make it all the way to the beginning before it ends, but it definitely is heading to the first point as though it were the last point. Why is this happening?
The main use of a path is to make the player follow it. This is done with a SpecialEvent.
(what about making movers folow paths?)
Match the following to initiate the path
- SpecialEvent's Events -> Event
- All the IP's Events -> Tag
Question: How does one set the object which will take the path?
Set up a Trigger to trigger the SpecialEvent to set off the whole process.
Once you have your path laid out, right click on one of the points and select "Select All Interpolation Point". Now open the actor properties and change their Event Tags to "Path1" or, if you'd like, a different name of your choice. Just make sure that you use that name instead of "Path1" wherever we mention it, if you do use something different.
Now add a regular Trigger (Actor >> Triggers >> Trigger) wherever you like – just make sure you'll be able to find it. To see it in game, either
- set it to display the trigger's sprite in game with Advanced -> bHidden = True
- set it to cast a small circle of light (set Lighting -> LightType and LightColor properties)
Now, anywhere you like (it can be literally anywhere in the map, doesn't matter where), add a SpecialEvent from the same menu. Change its event tag to "PathStart", and its Event to "Path1". Now open up the regular Trigger's properties and change its Event to "PathStart".
Flopsy: Just a comment you need to set the Default State of the Special Event actor to PlayerPath under Object>>InitialState.
Setting up the path's parameters
In the properties for each point are modifiers for Game Speed (the speed of everything going on, including that of the camera - bullets will move slower based on this value, for example) and Camera Speed (the actual speed of the camera. This rate of movement depends on the value in the game speed property). Note that these are not the actual names of the properties - again my memory is foggy. It should, however, be pretty obvious. You'll just have to experiment with the values and se what speed works best for you. Start with low numbers however.
While the interpolation path should now work in any game mode, playing it in, say, DM, will show your weapon as you move along the path. You probably don't want this, unless you're making some sort of ride for the player (in single player for example). In order to make the player appear without any HUD or weaponry of any kind, you'll have to set the default game type (under level properties) to the appropriate actor. You can find these under Info>GameInfo. Again I forget the proper name (sorry about all this folks, it's been over a month since I've messed with interpol points), but it should have something to do with "intro" and will be fairly obvious. Finally, you will need a playerstart in any case, of course, and rebuilding is just as mandatory as ever. Unless you're doing something special, you'll probably just want to start the player hovering in the air over the trigger, so that they drop onto upon start, triggering your cutscene.
Please note that interpol points can be rotated just like playerstarts. Whatever direction they are facing is the direction the camera will rotate to.
If I missed anything important, or if anybody wants to look up what the proper names are, feel free to edit it into this page.
The following pages also have tutorial-style information on making paths. Merging those into this might be a good idea:
content from other pages... refactoring & mergine needed.
Adding Interpolation Points to your map
- InterpolationPoints (hereafter called IP's) can be found under Keypoint >> InterpolationPoint in the Actor Classes Browser. The first thing to do is to add one to your level where you want the Interpolation path to start. IPs show a directional arrow in UnrealEd, which defines (funnily enough) the direction that the actor on the path will be pointing. Set their direction with the Brush Rotate tool or the Movement -> Rotation property.
- In InterpolationPoint Properties -> InterpolationPoint -> Position, you should put the number that defines what point in the path this IP is at. This should start at 0, and I have been informed that the upper limit is 127 (thanks to TheMapper for that).
- I think the best thing to do, is to first add the IP's to your level, in approximately the right places. Then you can get the path set up correctly, before changing the speed.
- Once you have got all your IP's in, there are two more that you have to put in. At the last point, you need to have two IP's. Then, put another one in the same position as the first, and give it the next Position after the last one. This is because IP paths actually loop, and the only way to get the path to go through a point is to put two IP's on top of each other. The reason the highest number IP is at the beginning of the path is because the actor following the path will start half way between the first and last IP's.
Setting the speed of the Interpolation Points
- Once you have your path correct, you may want to play around with the speed. You will find that it looks a lot nicer if the speed does vary. Knowing when to vary the speed isn't something that I can teach you.
- To change the speed, go to InterpolationPoint Properties -> InterpolationPoint -> RateModifier. Again, it is a matter of trial and error to find a series of values which you like. On each IP, the rate will be at that point, and it will change between the two points. If you want to change the rate very quickly, have two IPs very close to each other with different rate values.
- You can, if you want, change the speed of the game with the GameSpeedModifier, but this works separately from SetSpeed. If you do use GameSpeedModifier, then make sure that it is reset back to 1 for the end of the IP path.
- Note: Most of the content from this page is adapted from a tutorial for UMS that Hugh wrote, and this section certainly isn't complete - the specifics of how to get an actor to actually follow the Interpolation path without using UMS I'm not clear on, maybe someone else could help out there – Birelli
This tutorial I'm only going to tell you the basic technical things you need to do to set up a regular interpolation path. I'm not expert in this area, but I do know how to create one. Please note that the terminal I am typing this up at is not equipped with Ued, so I may not tell you the exact name of things. An interpolation point is actually "InterpolPoint" or something like that, it should be pretty obvious when you're staring at the Keypoint menu.