Intersection Imaging

Proposed Software

The following proposal describes the look and feel of the software used to generate intersection maps. This project will build upon an existing implementation, which currently runs on the SGI workstations.

The current implementation prompts the user for many details such as eye location, viewing direction, up direction (of the camera used to view the scene), and the pixel to track in the scene. The existing implementation uses prompting within the console for user input and provides no options. These requirements will be simplified and options will be added to the program.

An extensible user interface will allow the user to define two parameters: the mesh to view and the angle, given in pitch and yaw, at which to view the scene. The pitch and yaw will be relative to the negative z-axis (the default viewing direction.) Eye position will be set statically at the origin and the up direction of the camera will be determined automatically.

Using the "Open" item of the "File" menu (Fig.2), the user will be able select a mesh to be used in the generation of the intersection map. The mesh will be automatically centered (meaning that in mesh space, the origin lies at the center of the mesh) and scaled so that all vertex values lie inclusively betwen -1 and 1.

Using the "Properties" item of the "Edit" menu (Fig. 3), the user will define the output file name, format, pitch, and yaw.

Finally the user will select "Run" from the menu (not shown in the images to the right) and the data collection process will run to completion. An example of the final application while running can be seen in Fig. 4.

Additional features that could be added include the ability to run many data collections sequentially using a list of meshes and pitch/yaw options. File output would conform to a user specified format varying by mesh name and pitch/yaw angle.

Fig. 1
Fig. 2
Fig. 3
Fig. 4

The Software - Version 1

The current software runs on the SGI machines. After some modifications, it now takes two inputs from the user: a model and a pitch/yaw angle (in degrees). The eye point is fixed at (0, 0, 0) and looking along the -Z axis (this is pretty standard OpenGL). The up direction for the camera is also computed from the pitch/yaw angle so the user need not enter it. The translation space for the mesh given by the user is from -2.5 to 2.5 in X and from -7 to -2 in Z. This means the mesh translates within a 5x5 square where the square is divided into 100 increments in width and 100 increments in length. Therefore intersection images are of size 100x100 pixels.

The application does not yet limit the user from selecting pitch/yaw angles which result in no intersection in the intersection image so without being careful, it's easy to get a blank intersection image.

The application saves intersection images as text files. Text files are named according to the mesh used and the pitch/yaw angle used. The format is: "result_[meshname.obj]_pitch_[pitch]_yaw_[yaw].txt". [pitch] and [yaw] are given in radians. The procedure to view a result in Matlab is: "a=load('result.txt');" "a=a*60;" "image(a)". Due to the meshod used for imaging, intersection images are horizontally mirrored from what you would expect to see if you were to simply look at the mesh (as a solid object).

A snapshot of the application in its current state can be seen to the right. The source code for the application can be found here. To compile the application on SGI machines, just unpack the archive and type "make". A precompiled version for 64bit R10K SGI processors is included.

 

Laboratory for Computational Vision | 214 OSB | Florida State University | Tallahassee, FL 32306