Questions & Answers

Photorealistic VR Software


PhotoVR is a PC based interactive 3D walk through software package. It is a menu driven application which imports files directly from AutoDesks 3D-Studio design products. PhotoVR is capable of displaying real-time views of complex scenes in excess of 100,000 polygons which show texture, reflection, shadows, multiple lights and numerous other rendering attributes. PhotoVR requires a 386/387, 486DX, or Pentium based computer with an Intel ActionMedia II display board installed.

PhotoVR embodies several unique concepts which are important to master. Because PhotoVR is capable of directly importing 3D designs from many popular programs, it is important to understand how PhotoVR interacts with those programs and how to take advantage of their capabilities. Also it is important to understand how to best optimize virtual environments so that you minimize the time and space it takes to convert and prepare a reality for exploration.

Reality Files
In a PhotoVR environment, there will be several files involved which interact with each other. First there are the file(s) created by your 3D modeling program. For instance, with 3D Studio you must save both a .3DS binary file and a .Vue ASCII file. The .3DS file contains all of your geometric data and the .VUE file contains scene assembly information.

For each reality you design, you will generate on your disk a directory and three accompanying files. The .RLT file contains information including precalculation status, constraints, and links (defined below). The two other files with the extensions .IDX and .IDB contain the results of the precalculation process. You can expect the .IDB file to be quite large, ranging from 5 to 75mb.

PhotoVR has two main capabilities while you are exploring an environment. The first of these is changing your direction of view, i.e. turning your head. When turning, you have an infinite number of possibilities and combinations of looking up/down/right/left. Thus, turning is a continuous process.

The second capability, viewer motion, differs from turning in that it is a discrete process; you actually jump from place to place rather than moving smoothly in between. The magnitude of these jumps is decided when preparing a scene for exploration. Usually you will scale these jumps quite small, so that when you move from one place to another, you will actually make lots of small jumps, creating the effect of relatively continuous movement.

The way you describe these jumps is from the Layout Menu in the PhotoVR application. The size of the jumps is defined by using the Dimensions item on this Menu. Using the Dimensions, you define a three dimensional grid of a certain number of steps in width, depth, and height. Each square in this grid is known as an "instance."

Thus, if you defined a grid 8 wide by 8 deep by 8 high, you would have a total of 512 instances (8 x 8 x 8). This also means that you could move in any direction a total of 8 jumps before hitting the end of the instance grid.

This might not seem like a lot of jumps, but there are more sophisticated ways to create this grid. For instance, you might decide that it would be appropriate to only explore at eye level, and thus you could create a 16 wide by 32 deep by 1 high grid and still only have 512 total instances, but with much finer movement within the same 3D space. Clearly, understanding the usage of "instances" is one of the most important concepts in PhotoVR.

You probably are wondering why we dont just make the instance grid very, very fine with numerous instances so that our motion jumps are quite small. The problem is that the number of instances affects the time it takes to convert and "precalculate" the scene. The more instances, the longer this process takes. Typically, precalculation takes from 2 to 6 minutes per instance on a fast 486 based computer.

What is "precalculation?" PhotoVR is unique in that it allows you to explore scenes with unlimited complexity, far more than conventional virtual reality systems. No matter how complex the scene, PhotoVRs moving and turning features always maintain the same speed of operation. The way PhotoVR achieves this high level of performance is by dividing the "rendering" of the scene into two phases. "Rendering" is the calculation of a scenes view and in other systems is typically done for each individual view. PhotoVR does most of the hard part of the rendering process in the precalculation phase and saves the easy parts for when you are interactively exploring. This precalculation phase does all the processing involved in rendering where you are at, but does not do any calculations relating to what you are looking at. The calculations relating to what you are looking at are done at high speed while you are exploring.

You may now have an inkling why we dont want to get carried away with lots and lots of instances. This is because PhotoVR must do the precalculation of the "wheres" for each instance and therefore more instances imply more calculation and thus more computer time. Since the results of precalculation are stored on disk, waiting for the time when you want to explore interactively, more instances also mean increased disk storage.

PhotoVR has a powerful motion constraint system. Motion constraints are created by the reality designer to control which areas of the scene an explorer can visit, and which cannot be visited. For example, you could set up constraints which do not allow explorers to walk through walls, thus forcing them to use doorways to get from room to room. Similarly, you can "rope off" sections of a room, preventing explorers from getting to close to the objects in those areas.

You may already have guessed how PhotoVR implements motion constraints. It is done with the instance grid. The Grid item on the Layout Menu gives you the capability to turn individual instances on and off. By turning an instance off you do two things. Firstly, you prevent an explorer from entering that instance and secondly, the computer no longer has to precalculate that instance - saving you valuable time!

Constraints may also be set from within 3D-Studio or AutoCAD by creating non-rendering primitives called "bounding volumes." These bounding volumes are used to describe the useful limits of your three dimensional world.

A result of the precalculation process is that you may not interactively manipulate or move objects within a scene. Because locations are calculated during precalculation, the only thing which moves is you, the viewer. The following are several tricks which you may use to provide motion, as well as simulate object motion.

An extremely powerful capability of PhotoVR is the "links" feature. Linking allows you to piece together several different realities. A link is a one way connection from a single instance in one reality to a single instance in another reality. While exploring, if you move into an instance which contains a link, you instantly depart the reality you are currently in and arrive in another, pre-specified, reality. This allows you to build your world in small parts and connect them together with links. PhotoVR allows an unlimited number of links.

Even though we stated that links are one way, you can construct two links between the same two instances in different realities, each flowing in the opposite direction, so that the connection now becomes two way. The system prevents you from bouncing back and forth in a two way link, by forcing you to move at least one instance away from a destination link before moving back into it and linking back.

With a link, you may also connect a reality to itself. In other words, set up a link so that when you walk out a door on the right side of a room, you appear at an entranceway on the left side of that room. Youve created a circular connection with no exit!

Links enable you to create virtual environments with variable instance resolutions. Imagine a room with lots of empty space and only one very interesting and detailed object. You could create a reality for the entire room that was very coarsely gridded with instances. Then you might create another reality containing just the interesting object which was finely gridded. By linking the area around the interesting object in the coarse reality with the corresponding area in the finely gridded reality, you set up a world where you move around the room in large jumps, but when you get close to the interesting object, you move in very small jumps. Thus you can build detail only when you need it!

While an object cannot move within a single reality, linking can simulate motion by moving through essentially duplicate realities where only object(s) positions have changed. Alternatively, motion can be portrayed by using the following transition sequences.

Transition Video
When one reality is linked to another you have the option of playing a motion video sequence from a DVI AVSS file. This transition video will run after you have left one environment, but before you enter the next.

Animation Sequences
PhotoVR can also incorporate animation created in 3D-Studio. These are known as .MVI files. When you create or edit a link you may choose to use either an AVSS motion video sequence for the transition or an animation file from 3D-Studio. Of course, you may choose not to display any transition sequence at all.