Placing the point_viewcontrol camera in the exact correct location is a real pain. You set it where you think you want it, then you run_map and wait. Then you go into hammer and make your scene move to the correct point and then you watch it and want to change it. You go back into hammer and tweak it and go through the cycle again. This makes developing your shots very time consuming. We have come up with a solution that will work, but you need to be REALLY CAREFUL with it.
The basic idea is that you load up your game into half-life 2. Then you wander around the environment and pick the exact locations that you want for your cameras. You record what those locations are and then go and move the cameras to those exact positions. This works because you, as the player are basically nothing more than a camera yourself. So, if you can position yourself exactly where you want the camera to be, then you have all of the information that you actually need.
First of all, let's go over some console commands that we will be using:
Here are the steps for finding your camera location:
Note - if you are going to have a particular camera use a special FOV value, then make sure that you use the fov command before you start positioning the camera so your camera location and your fov match.
Now comes the tricky part. In hammer, when you set the properties of a particular entity (such as a point_viewcontrol) you can't just type in the position of the entity. You have to actually move it around. Well, this defeats the purpose so we have a different solution. First make sure that you have created all of your cameras by unique names. Save your file and close hammer. Now go and find your map file (with the vmf extension). Make a backup copy of the file. This is because if you make a mistake editing the file, you could end up making it so your map won't load at all. Now, using a text editor (notepad will work just fine) open the file. Don't use word or wordpad. As you will notice, the specifications of your map are a bunch of structured text statements. Search the map file looking for each camera that you want to place. When you find it you will see something like:
entity
{
"id" "35156"
"classname" "point_viewcontrol"
"acceleration" "500"
"angles" "0 90 0" <<<< THIS IS THE ANGLE (the third parameter is always zero)
"deceleration" "500"
"spawnflags" "24"
"target" "lookatme"
"targetname" "BobMarkCamera"
"wait" "100"
"origin" "2 140 26" <<<< THIS IS THE POSITION
editor
{
"color" "220 30 220"
"visgroupshown" "1"
"visgroupautoshown" "1"
"logicalpos" "[0 500]"
}
}
Simply edit the lines with the new coordiates and then do this for each camera. The angles field is the angle of the camera. The origin field is the position. Save the file and load into hammer. The cameras should be set up.
Note - you could put all of these commands into a command file that is automatically loaded. You also could add in keyboard bindings to let you change in and out of the various values.