WARNING: This tutorial was written for use with the alpha leak. The information contained within is now outdated and does not apply to the retail game. In the retail version, the camera inspector is now completely defunct. Once a new method is worked out this tutorial will be revised or replaced.
Camera Tutorial
Introduction
First things first, I would like to thank Rayne, Zapp, and BNA for bringing this knowledge to my attention. Thanks to them not only do I know how to make a camera in game but I have expanded upon that knowledge. Guess what? You can make spline paths for cameras!

I have only been fooling around with this for a day. I know very little of what every little button in the camera inspector does. I'll figure out what peaks my curiosity but if I don't have any luck after about an hour or so I stop playing with it for a couple of weeks. That's how I am.
I already am the go to guy for scripting. Trust me on this one folks. I am passing this baby off to somebody else. If you start figuring out things that are not in this tutorial, guess what? You're the camera guy and it's time to start writing up tutorials.
Okay, now I'll get off my soapbox and try to teach you all something.

Apparently the camera system is functional in D3Radient. However, it has it's share of bugs.
Some of the buttons in the camera inspector don't work. Namely the delete button.
Also, if you make a mistake, your in trouble because there is no undo and since you can't delete you have to close out the editor and start all over again.
What does that mean? You have to have a game plan. Once an idea pops up in your head sit down and think about what you are trying to acheive and what combination of options will achieve it.
Basics of Cameras
Oh boy a new file type! That's right folks you'll make your first camera and a new file and folder will appear under the base directory. It's simple enough. The extention is
*.camera and you can find them in
base\cameras.
Just for show here is what the contense of a camera file looks like.
Code:
cameraPathDef {
time 30.000000
camera_Spline {
time 30000
type 2
name position
baseVelocity 0.000000
target {
granularity 0.025000
( -9.000000 -32.000000 -30.000000 )
( 2.000000 -80.000000 -78.000000 )
( 0.000000 -137.000000 -60.000000 )
( -130.000000 -179.000000 -81.000000 )
( -231.000000 -121.000000 -80.000000 )
( -198.000000 -31.000000 -60.000000 )
( -73.000000 -116.000000 -48.000000 )
}
}
target_Fixed {
time 30000
type 0
name POA
baseVelocity 0.000000
pos ( -175.000000 -95.000000 -44.000000 )
}
event {
type 4
param "POA"
time 0
}
fov {
fov 90.000000
startFOV 0.000000
endFOV 0.000000
time 0
}
}
What does it all mean? I dunno but some of it looks familiar. I didn't make it the Camera Inspector in D3Radient did. This just goes to show you that just about everything in Doom III is text based.
So, for all of you that are confused there is this neat little thing called the Camera Inspector. You can bring it up in D3Radient by clicking the camera button in the tool bar(4th from the right). If you hover your mouse over it you should see the text
Spline Options. Interesting enough, I didn't know this button existed along with the buttons to the right of it. You may have this problem too if you run at a resolution equal to or less than 1024x768. If so, you can undock the toolbar from the editor by clicking a blank spot and dragging down. From there you should have a long window that is resizable.
Okay, a camera consists of at least two things. A path and a point of aim. You create a path to control the position of the camera and a point of aim so the camera knows which direction to face.
First off there are three terms you should get familiar with right away. Not only do these terms apply to the path of a camera but also the point of aim.
Fixed: This type is static.
Interpolated: This type moves from point A to point B in a straight line.
Spline: This type moves along a series of points to form a curve.
Now a
*.camera file isn't all that you will need in order for it to function. You will have to create a trigger to trigger the event, and you will also need a level script to switch the view from the player to your camera and back.
Before we get into making a camera make yourself a simple box shaped map. Add a
info_player_start and a light. Save it.
Creating a Simple CameraYou should have a simple map ready to learn the basics. This would be confusing if you had a couple hundred entities floating around.
First thing we need to do is create a
func_camera_spline on the map. Disregard the name. Regardless of what type of camera path or point of aim being used you will always need a
func_camera_spline. Place this entity anywhere you like and ensure you name it in this case
Camera_Spline01. Now create a new key called
pathfile and set its value to
cameras\mycamera.camera.
Next you will need a trigger. Create a
trigger_once entity. Set its
target key to
camera_spline01. Create a key named
call and set its value to
camera_1. Place it so it intersects the
info_player_start entity. This will cause the camera to trigger as soon as the map starts.
Now you are going to create the camera file referenced above. Click the camera inspector button. Select
New Camera and then
Spline. A window should pop up with all sorts of weird looking garbage.
Take note of the name. You can change it to anything you want but in this case I am going to leave it
camera01.
Notice the type is listed as
Spline and for the most part the remainder of the window is enclosed in a border labeled
Path and Target editing.
Take a look at the drop down menu labeled
Edit >. Right now it is set to
path. Directly underneath it is a set of radio buttons labeled
Edit Points and
Add Points.
We can't edit points if they don't exist so to start we will select the radio button labeled
Add Points.
Keep in mind that we are creating a
Spline path for the camera to travel. This means we will need several points. So start plotting points in a quarter circle shape in top down view. After the fourth point you will notice a blue curve appear between the second and third points. This is your spline taking shape.
Note: Spline curves must have a minimum of
4 points to function.
After making around 5 or 6 points you should have enough to work with so stop there.
Now select the
Edit Points radio button. Now you can freely drag points to shape the curve however you see fit. Don't be afraid to drag them in different viewports as well.
Once your satisfied with the overall shape of your camera's path we can move on the the point of aim.
Press the
Add Target button. Just to make things simple name it
POA and select
Fixed as its type. Press Okay.
You should see a blue point appear in the viewports labeled
Fixed point. Now we are no longer interested in editing the camera path so select
POA in the drop down menu if it isn't already selected. Also ensure that the
Edit Points button is selected.
You should be able to drag this point into position in the viewports. Remember this is the point where you camera will be facing during the course of its motion.
Now, there is a textbox labeled
Length. This is the length of time it will take for your camera to move from one end of the curve to the other. 30 is a little on the long side but its your map. We'll Trim it down to 10 seconds.
Almost ready to save your camera file. First click the
Apply button. Then click the
Save button. Type in
mycamera for your camera name (without the .camera extention) and remember the name. You'll need it later.
Now if you click the right scroll arrow underneath
Length you'll notice the preview viewport change to the perspective of the camera. If you continue to click it repeatedly it will traverse the path you set one small increment at a time.
Your not completely finished with D3Radient yet. Save your map. Some form of camera data is stored in your map as well as the camera file you created. Anytime you change your camera you must save your map, camera, and recompile the map.
Close the Camera Inspector if you haven't done so and select an unimportant brush in your map. Press the N key to bring up the
Entity Properties window. You should see the properties of your
Worldspawn entity. Right now the only key listed is the
classname. Create a new key called
script and set it to camera.script
Now save your map again and exit the editor.
Open up Editpad or Notepad if your stubborn and copy and paste the following code.
Code:
////////////////////////////////////////////////////
//
// Setup binds and times etc...
//
////////////////////////////////////////////////////
void setup_objects()
{
}
////////////////////////////////////////////////////
//
// Block movement...
//
////////////////////////////////////////////////////
void camera_1 () // Here is the function that is called when the trigger is hit
{
sys.setCamera($camera_spline01); // This will change the view to that of the camera using the pathfile key
$camera_spline01.start(); // This will start the camera's movement
sys.fadeIn( '0 0 0', 0.75 ); // This will begin a fade in from black that will take 3/4 a second
sys.wait(10); // This will make the engine wait 10 sec (The same as the length)
sys.firstPerson(); // This will change the view back to that of the player
sys.fadeIn( '0 0 0', 0.75 ); // Again this will begin a fade in
}
////////////////////////////////////////////////////
//
// MAIN
//
////////////////////////////////////////////////////
void main ()
{
}
Now you should have a working camera in your map. Give it a shot. Compile that map and run it.
Now, get it yet? Maybe not. Don't worry I am gonna try to avoid leaving you in the dark. Here is a quick run through of how it all comes together to create a "cinema".
First you load the map.
Now, when the player comes in contact with the trigger the
call key is referenced. This calls the function
camera_1.
sys.setCamera($camera_spline01); is executed. The game looks for the
pathfile key in the entity
camera_spline01. The value is the name of your camera file. The camera file contains the path and point of aim data for your camera. Once this data is loaded it switches the view to that of the camera.
$camera_spline01.start(); will execute. This will set the camera and its point of aim in motion.
sys.fadeIn( '0 0 0', 0.75 ); will execute. This will set the view to the color black and fade in to normal over a period of 0.75 seconds.
sys.wait(10); will execute. This will halt the execution of any other script for a period of 10 seconds. This is also the length of the cameras movement.
sys.firstPerson(); will execute. This will return the view to that of the player.
sys.fadeIn( '0 0 0', 0.75 ); will execute. Again this will set the view to the color black and fade in to normal over a period of 0.75 seconds.
Conclusion
Now, do you get it? I hope so because I don't know how to explain things better. Anyway, post your questions and I will try to answer them.
Have fun making cameras.

Yes great tutorial.. im sure many more will come soon.'
On another note: Spline Type Cameras are very buggy and do not work in game. I do not suggest wasting your time trying to make them work. I wasted a good hour trying to get it to work. No luck. Make sure to save your map before you make a camera for your map. The function is very buggy.
Hey Zapp, I can send you a working copy of a Spline camera if you like.
It's not the spline camera type that is buggy. It is the Camera Inspector itself.
I'm spending nights mapping with zapp, and to figure out how to solve this fucking problem...
By the way, I know scripting now, thanks for your tutorials! They rocks!

I've just readed this
http://www.doom3world.org/phpbb2/viewtopic.php?t=838 so...
For now, Fred Nilson use Maya to make a camera, but i don't know if he use joints to attach and move it around, or simply a normal path animation... But, if you look in radiant, there are three func_camera stuff...
One of these is the func_cameraspline , another is just something like func_camera , and if you look in the description, there is something like
Key "joint" description "the joint to attach the camera"
I hope to fix the maya problem soon...
Ps: the D3X forums are dead... You can post tons of image, but if you missing the "idea", there is nothing to do...

This Forum is really great, 'cause even without images, maps, etc is the best for a DooM modder. Great work.
Rayne wrote:
For now, Fred Nilson use Maya to make a camera, but i don't know if he use joints to attach and move it around, or simply a normal path animation...
The .md5.xxx files are plain text - you can open them with a text editor and get a feeling how he did it. Might be an a bit cryptical hackers style approach to gain insight, but I'm sure it'll add to the deeper undesrstanding hence it'll turn you into a better mapper later.
Quote:
Ps: the D3X forums are dead... You can post tons of image, but if you missing the "idea", there is nothing to do...

Wasn't the D3X forum an attention seeking attempt which turned into a try to establish a real forum? I mean NIZMO was rather bigmouthing here and had no problem to sling dirt on us on his forum literally screaming how leet and cool he is and how much we suck.
Quote:
This Forum is really great, 'cause even without images, maps, etc is the best for a DooM modder. Great work.
Thanks - great compliment for the people who post here, write tutorials, provide support and so on!
I found out that the quality of the posts and the posters skyrockets once you're limited to explain / describe a problem / solution without an image.
This forces you to really think first and post later.
Keeps the attention seekers away too

the camera tools seem pretty easy. Are they done the same as in RTCW with externam .camera files? Or is it slightly different? I just wanna know cause RTCW cameras are easy to do and D3 uses the same editor so I put the 2 togther and I am hoping its the same.