Camera Matching
Team Member: Everett
Location: Boiler Island
Challenge: Creating perfectly accurate scenes
For the first post on our brand new dev blog, I thought I’d explain the ins and outs of โcamera matchingโ, a process we use to recreate the environments of Riven. At the time of writing this post, I’m deep in the process of camera matching for Boiler Island, which makes it a great time to feature it here.
Camera matching for our project is the process of taking the original images from Riven and using them to rebuild the scenes exactly as they were. It’s generally a process of trial and error, piecing together information little by little until a scene begins to take shape, matching the original line-for-line.

The Ytram cave walkways and balcony are portrayed here in wireframe. The orange pyramid shapes are cameras matched to images from the original.
The first step in the camera matching for any new scene is always the same: find a predictable object to line up the first shot. You need an object which you know for certain is an exact shape, like a circle or a pentagon, on which to base the perspective and angle of the rest of the scene.
For Boiler Island, that shape was the boiler. Its perfectly cylindrical shape made it a wonderful fit to start matching with. The first shot is very important. You have to be sure that it’s nearly perfect before you move on to matching others. If not, the errors you made in matching the first image will greatly affect your ability to match later images, making the entire process much more of a fumble in the dark, constantly attempting to correct early mistakes. The boiler made the first shot much simpler, by supplying a clear visual representation of the camera’s rotation and location in respect to the shapes of the boiler.
Matching an exact camera angle is a tougher prospect than you might think. Each camera basically has 7 relevant variables: X, Y and Z location, X, Y and Z rotation, and the lens angle.
X, Y, and Z locations describe the camera’s exact point-based location in the 3D space. Figuring out the general location is usually the first step to matching a camera. Often when figuring out location, I can use parallel lines in the scene to estimate a general range. For example, in the image above, the boiler is built of circular rows of bricks. By looking at which row is completely parallel with the image itself, I can tell that the camera is probably at a height which is level with that row of bricks. Then I can lock the camera to that specific height and move onto other variables.
Lens angle is the pin that holds it all together. This variable can make or break a camera angle. Basically, lens angle describes the exact section of perspective which is seen by a camera. When you zoom using a camera, lens angle gets very narrow, showing only a tiny piece of a point’s perspective. Zooming out, on the other hand, shows a wider lens angle, framing a much larger portion of the view. Needless to say, getting this value exactly right is imperative, as it directly affects the apparent scale of objects in the camera’s view. If you can manage to estimate the lens angle with accuracy, the rest of the matching is quite simple.
Once the first shot is lined up reliably, the rest of the process is simply branching out from that information. Then, more cameras are lined up with the basic model. These multiple camera angles then allow more models to be added in which match all of the current camera angles.
Sometimes, angles need to be adjusted to match new models, as well. For example, on Boiler Island, I had most of the boiler area set up and matching well. Then I moved ahead to matching the balcony and cliffs, and realized that none of my camera angles were matched accurately enough for extremely distant features to line up properly. This led to me going back and realigning every camera angle I had set so far, so as to match the new details of the cliff walkways and the balcony.
Of course, the process of camera matching is only a precursor to the final environment. During the course of matching camera angles with the geometry on the scene, I try to use as little detail as possible to convey the basic lengths and angles necessary to match each new camera angle. I do this both to keep the scene uncluttered, as I do much of my matching work in a wireframe view, but also because what I’m building will not be used in the final game, so dwelling on its details would be a waste of time. The models I create during the camera matching stage are simply to be used as guides when creating the final game assets. The camera matching stage is very freeform and branching, whereas the final modeling stage will likely be much more structured and organized, simply because of the detail involved.
The stage of camera matching is certainly where we get our most concentrated exposure to the details of Riven’s original images, exposing some of the mistakes and odd anomalies that dot the images. For example, in an image standing by the boiler’s controls, looking up towards the pump system, you can see towards the lower left of the screen the handle of the paper press, an object that was intended to be completely removed from the game before it was released. (The image’s filename is “287_bislandcrater.1590.png”, for those interested enough to look for it.)
All of this work will culminate to a set of guideline meshes which will span the island and make the final asset creation that much more accurate and streamlined. Camera matching, while tedious and time consuming on its own, stands as an integral part of the process. It allows a level of loyalty and exacting similarity to the original not available by any other means.
April 12th, 2012 at 9:07 pm
I love you.
April 13th, 2012 at 1:33 pm
But really, in all seriousness, this was really fascinating, and further enforces by confidence in this project. ๐
April 13th, 2012 at 4:20 pm
Rrgh. *my.
April 12th, 2012 at 11:27 pm
So cool. I’m glad to know you’re still working. ๐
April 13th, 2012 at 4:49 am
Fantastic – what an interesting piece – having played around with Vue, 3DMax and Maya myself (no expert so I am of no practical use to anybody with any of these packages)I am aware of much of what you are saying. The big Riven book gives a fascinating insight into the construction of Riven as well. Stuff like this is not only informative but also helps people to understand the challenges you all face in making this work. A fantastic piece – thank you. Kind regards JD
April 13th, 2012 at 7:03 am
I rememberd that the boiler was ready ?!
April 13th, 2012 at 8:59 am
It was (partly), but Ev decided he wanted to redo it with better accuracy.
April 13th, 2012 at 2:49 pm
That’s amazing news. I was not very convinced witht he former boiler, not realistic enough to my mind. More accuracy will be welcome…
April 13th, 2012 at 11:02 am
Will you be including the paper press in the new game?
April 13th, 2012 at 1:55 pm
Since it was taken out of the original game for a good reason, I don’t see us including it in ours.
April 15th, 2012 at 5:52 am
Of course in the Purist Mode it should not be there, but what if you reconsidered adding it to the enhanced version ? I mean, Cyan chose to remove it because people didn’t identify it as a paper press and they thought it was supposed to actually open or activate something in the game, but everything in Riven is like that… what if they had been wrong in making this decision ? And anyway the press can be seen far away in one of Riven pictures, so isn’t the enhanced version supposed to remove such contradictions. I don’t know, it could be awesome to include it…
April 13th, 2012 at 12:12 pm
Awesome, it’s good to see that there’s so much activity now. The website’s been dead for a few months and this gives new hope!
April 13th, 2012 at 12:24 pm
You’re gonna have fun camera-matching these two
http://victov.com/rivenfail_one.png and
http://victov.com/rivenfail_two.png
As you’re getting near the tree it should become bigger right? Well this tree gets smaller when coming near it… Good job Cyan ๐
April 13th, 2012 at 3:56 pm
How bizarre!
You would have thought that once they created the image and rendered it all they would have to do is move the camera and re-render which should automatically take in the new ‘enlarged’ view…
April 14th, 2012 at 5:44 am
It’s bizarre indeed, but it was only at my fourth run though the game when I first noticed it, so it’s no big deal ๐
One of the first things I did notice though is that the temple “inside” that island is way to big to fit in, wonder how they’re gonna fix that…
April 16th, 2012 at 8:12 am
Ah, that’s interesting as I have recently been trying to work out the island dimensions from the Riven maps – I think I estimated the temple to be around 22ft long by 13 and a half feet wide (based on the footpath width and using that as a scale- not perfect science I know). Will go back and look at this as I haven’t worked out the island size yet.
April 16th, 2012 at 8:39 am
I wonder how you’re going to solve it. Maybe you could make it “fake”. From the outside you see the island as it is in the original Riven, even though the temple wouldn’t fit in, but from the inside you see the temple. I know it’s possible, World of Warcraft did that with all the cities before Cataclysm came out. (version < 3.3.5)
June 18th, 2012 at 1:56 pm
What you’re actually seeing there is a change in the camera angle, more commonly referred to as Field of View, if you tab back and forth between the images you’ll notice the clouds in the background stretch at the edges, this is because the camera’s zoomed to a different field of view in the second image causing something similar to fisheye lens effect, this is why the tree appears to be a different size. Cyan also had a filter used in the rendering that could generate a barrel lens distortion which will make some images difficult to match up properly.
August 3rd, 2012 at 2:44 am
Interesting, XeresRazor. Could you elaborate on the barrel lens distortion filter? For example: where did you find the info Cyan used it, and how does the output of this barrel lens filter differ from setting Field of View in the camera settings?
October 19th, 2013 at 11:05 pm
It’s part of the Lumetools collection that was developed for Riven and later shipped with Mental Ray. http://www.lume.com/description.html
The barrel filter specifically is the Distortion filter listed near the bottom of that page. There’s some discussion of the filter in From Myst to Riven.
April 13th, 2012 at 11:14 pm
Interesting read. Glad to see things are still going – this project has me really excited.
April 14th, 2012 at 3:56 pm
Thank you very much for the hard work you put in Riven’s legacy.
April 14th, 2012 at 7:00 pm
Hey, is the game ready for any beta testing at all yet?
April 16th, 2012 at 10:59 am
Believe me, you’ll know when we’re ready to start beta testing.
April 20th, 2012 at 6:42 pm
Ok sweet. I can’t wait!
April 15th, 2012 at 9:40 am
As a 3D hobbyist, I’m still impressed by the hard work you made so far. Congrats and keep on, guys !
April 15th, 2012 at 2:23 pm
Cool work. Keep it up guys.
April 15th, 2012 at 7:27 pm
Thankyou for having a separate dev blog. Good idea – put official news on the front page and leave the nitty gritty to this page. Can’t wait for even more awesome updates!!!
April 18th, 2012 at 2:02 pm
Great read! ๐
April 20th, 2012 at 7:23 pm
Really cool, I understand, it’s so deductive
it’s like you’re getting information out of the game you’re not supposed to have, but getting down to the fundamentals of the game, spatially.
I wonder what else you’ll uncover… especially on Jungle island
April 20th, 2012 at 7:45 pm
However, people keep wondering whether Cyan are willing to team up with you and give you the rights. This is the primary issue right now.
April 21st, 2012 at 4:59 am
Interesting, lets hope Cyan is in a good mood… I wonder however, isn’t there an expiry date when it comes to copyrights? Riven’s pretty old…
April 21st, 2012 at 10:07 am
Yeah, but I think it’s really old. For example, most of Disney’s characters still belong to them, even though they’re something like a million years old. And I’m not quite sure, but I think part of that is because Disney bribed the government to extend the length of copyright protection.
April 21st, 2012 at 12:19 pm
Copyright expires 50 years after the death of the author(s).
April 21st, 2012 at 2:16 pm
I really hope they’re not getting in any trouble. But I honestly don’t think this is going to be a problem. They have contacted Cyan before starting this… right? I mean, it would be unbelievably irritating when Cyan shuts this down right when it’s finally finished…
April 30th, 2012 at 9:03 am
I think that when Cyan sees the amount of work that will have gone into it and the philosophy of the guys behind it they will be quite open and welcoming. This can only be of benefit to them if it is done well – and from the look of what we have seen it will be done extremely well. Cannot wait to see this in the flesh – fantastic job guys…
April 24th, 2012 at 3:02 am
Thanks for doing this guys, I’m looking forward to many more blogs. Your devotion to this project is awesome!! SO excited to play this when it’s all finished up.
April 25th, 2012 at 7:32 pm
How will you handle the islands being seen from afar with all the polygons? Could it transform into a prerendered sprite when you leave the island and view it from another island?
April 25th, 2012 at 11:23 pm
We’re not entirely sure how it’s going to work, but we definitely aren’t going to have the full islands pre-loaded. Most likely, just a low-poly version of the land mass, with some sprites, or low-poly building models will suffice.
May 1st, 2012 at 9:52 pm
Good job! Reverse engineering can be quite hard…
May 7th, 2012 at 10:33 am
After reading this I just had to make a donation!
I love what you’re doing and wish you all the best~
May 12th, 2012 at 4:42 pm
What about the landscapes? Applying the same degree of precision to those complex shapes can’t be that simple; I assume you must eyeball a lot here. Is that correct?
Or do you go fully obsessive and try to get it right no matter what?
May 13th, 2012 at 10:53 am
“Fully obsessive” is a pretty good description of the team.
May 16th, 2012 at 4:05 pm
So, what’s the magic lens angle? I’ve been trying to do this with Temple Island and 73.74 degrees comes pretty close, but there’s still a margin of error.
May 25th, 2012 at 2:11 pm
Will the forum be available again?
Another one, sometime?
July 30th, 2012 at 12:59 pm
I have a question about the beta signup. Is it true that not everybody that signs up will be able to participate in beta testing?
-Nyreal
August 4th, 2012 at 7:55 am
Congratulations on getting the original assets from Cyan! Will having the original models make camera matching obsolete?
December 4th, 2012 at 1:24 pm
Hey, how is this project coming? I’m a programmer/video editor, I would love to help in any way I can.
February 1st, 2013 at 3:50 pm
Just outstanding guys !
Greetings from Holland.