Elsevier

Computers & Graphics

Volume 22, Issue 4, August 1998, Pages 547-555
Computers & Graphics

Education
A self-visualizing rendering support environment

https://doi.org/10.1016/S0097-8493(98)00040-5Get rights and content

Abstract

OOGRAVIS, the Object-Oriented GRaphics Algorithm and VIsualization System allows a programmer to develop a computer graphics rendering program (like a ray tracer, scan-line converter, etc.) with built in support for visualizing the execution of the algorithm. OOGRAVIS includes a library of C++ classes that is useful for building rendering algorithms. These classes have hidden facilities for displaying internal aspects of the algorithm as it is executing. The programmer only needs to be concerned with developing the rendering algorithm using the OOGRAVIS classes—the visualization is implicit and automatic. This frees the programmer from the need to know about algorithm visualization techniques.

Introduction

Graphics rendering algorithms are very complex—efficient, robust implementations require an amount of time and a level of programming sophistication that are not usually present in an undergraduate course in computer graphics. It is simply not possible for student programmers to implement completely a reasonable number of “real” rendering algorithms during a single one-semester course. There are two standard approaches for dealing with this problem—the instructor can provide support libraries that implement many of the operations needed for a rendering algorithm and/or the instructor can provide an application framework that is a skeleton solution to the rendering algorithm. Both approaches allow the student to focus on the fundamental structure of a rendering algorithm, while avoiding the complications of implementing associated functionality such as scene input and storage, modeling and viewing code, low-level image generation, user interaction tools, etc.

The use of support libraries has long been a standard practice, not only for instructional purposes, but also for general graphics programming. High end graphics packages, such as Phigs[1], PEX[2]and OpenGL[3], provide extensive support for rendering, but are also extremely complex themselves, so that graphics instructors often prefer to use simpler (often home-grown) packages that don't have such a steep learning curve. In addition, most rendering algorithms also need object modeling and data structure support that are not provided by general purpose graphics packages. Consequently, there is a need for a more comprehensive set of support functions tailored specifically to the instructional environment. This motivation has led to packages such as MRT[4].

Application frameworks also provide a mechanism for an instructor to reduce the effort and complexity required of a student. In effect, the instructor provides a skeleton solution to the problem that typically includes object representation functions, scene input, scene and object storage, and perhaps viewing and modeling transformations.

In an object-oriented environment, a support library is implemented as a set of concrete classes that provide the specific useful functionality, whereas an application framework is represented by a set of abstract classes from which the programmer derives concrete child classes[5].

In this paper we describe OOGRAVIS (Object-Oriented Graphics Rendering Algorithm and VIsualization System), an object-oriented graphics rendering environment that includes both an application framework and rendering support classes to assist a student in implementing rendering algorithms. This system is unique, however, in that the rendering support classes all have hidden functionality that allows the objects of these classes to visualize themselves during the execution of the rendering algorithm. The objects accomplish this by communicating with a visualization process that executes in parallel with the user's renderer process. This environment provides automatic algorithm visualization for any algorithm implemented using the rendering support classes. Consequently, the system can be used to help a student debug his or her implementation of a rendering algorithm, or it can be used as a pedagogical tool to demonstrate visually how a particular rendering algorithm actually works.

OOGRAVIS was developed using object-oriented design techniques to take advantage of class expansion, code reduction, code re-use, and code maintenance. All support classes and the visualizer subsystem are written in C++. They work together to visualize the execution of the rendering algorithm and can help the programmer concentrate on the development of the rendering algorithm while minimizing the knowledge needed to visualize its execution.

We first present an introduction to the user's view of the system, followed by a summary of the programmer's view, and finish up with a review of the system design and the important considerations that led to that design.

Section snippets

User's view

An important goal of OOGRAVIS is to allow the integration of the visualization code with the rendering algorithm code to be as simple and unobtrusive as possible. This section begins with an overview of the rendering algorithm framework to further understand how a renderer works, followed by the user's view at execution time. Finally, we describe the user interface system and how it works. It is possible to execute the renderer either with or without the visualization functions enabled—this

Overview

The OOGRAVIS rendering support classes were derived from a set of classes provided by Pokorny[6]. These classes were re-organized and modified to include self-visualization behavior in order to provide a general hierarchy of object-oriented support classes to assist the graphics programmer. If desired, these classes can be compiled without visualization behavior.

All classes that are candidates for visualization during execution have been organized under the Visible Object (VO) class hierarchy

System design issues

The design and implementation of the first version of the OOGRAVIS system was driven by a number of philosophical goals desired for an ideal system, but constrained by many practical considerations.

Conclusions

OOGRAVIS (Object-Oriented Graphics Rendering Algorithm and VIsualization System) aims to meet three goals: (1) establish a set of support classes to help the programmer implement a rendering algorithm, (2) endow those classes with visualization support behavior, and (3) provide tools to interact with the visualization of the algorithm while it is executing and to assist in debugging its implementation.

OOGRAVIS has successfully added visualization behavior to Pokorny's set of rendering classes.

References (8)

  • Kasper, J. E. and Arns, D., Graphics Programming with Phigs and Phigs Plus, Addison-Wesley, Reading, MA,...
  • Gaskins, T., PEXlib Programming Manual, O'Reilly and Assoc., Inc., Sebastopol, CA,...
  • OpenGL Architecture Review Board, OpenGL Reference Manual, Addison-Wesley, Reading, MA,...
  • Fellner, Dieter, Minimal Rendering Tool: A Research and Teaching Platform for 3D Image Synthesis, IEEE CG and A, 16(3),...
There are more references available in the full text version of this article.

Cited by (1)

View full text