ThreeSpace
DESIGN DOCUMENT

Adam Chodorowski & John Nilsson

June 28, 2001


Contents

1. Introduction

1.1 Purpose

The purpose of this software design specification is to provide an design view of ThreeSpace. It shall provide sufficient information on structural organisation and component composition. It shall not specify implementation-specific information. This document is based on the standard IEEE 1016-1998.

1.2 Scope

ThreeSpace is a 3D drawing program. Its design is driven to allow easy scaling by allowing external plugins access its 3D scene and objects through well-defined interfaces.

1.3 Definitions

Please see the Requirements Document for the full list of definitions.

1.4 References

  1. IEEE Std 1016-1998 ``IEEE Recomended Practice for Software Design Descriptions.''
  2. Java 2 SDK API Documentation, Sun Microsystems
    http://java.sun.com/j2se/1.3/docs/api/
  3. Java3D API Documentation, Sun Microsystems
    http://java.sun.com/products/java-media/3D/releases.html
  4. Java3D API Tutorial, Sun Microsystems
    http://java.sun.com/products/java-media/3D/collateral/
  5. ''Debugging Java'', Will David Mitchell

2. Module description

2.1 Scene module

2.1.1 Scene component

The Scene component handles:

2.1.1.1 Dependency

The Scene component depends on the Shape component.

2.1.2 Shape component

The Shape component handles: It does not change the structure of the scene object but does provide a reference to the Geometry.

2.1.2.1 Dependency

The Shape component depends on the Geometry component.

2.1.3 Geometry component

A component which handles the structural composition of the geometry of an object. It handles the vertices that make up the scene object and their attributes, ie. color and position. It calculates the normals for the polygons, which is used for shading, and provides the Java3D Geometry object which is later inserted to the Java3D components. Generally it handles:

2.1.3.1 Dependencies

The component does not depend on any other component.

2.2 User Interface module

2.2.1 ViewPanel component

A component which adds the Java3D view component received from the Scene component.

2.2.2 PropertyPanel component

A component which handles the layout of the Property Panel in Camera state and Object state. The Camera state provide controls for changing: The Object state provide controls for changing:

2.2.3 ToolbarPanel component

A component which provide buttons for the most important actions in the program. There exist buttons for the following actions:
  1. New scene
  2. Load scene
  3. Save scene
  4. Save scene as
  5. Switch to Camera State
  6. Switch to Object State
  7. Switch to rendering mode 1, Gouraud Shading
  8. Switch to rendering mode 2, Flat Shading
  9. Switch to rendering mode 3, Wireframe mode
  10. Switch to rendering mode 4, Point mode

2.2.4 Menubar component

A component which provides a menu for:

2.3 Plugin module

2.3.1 PluginManager component

A component which handles the loading and creation of Plugin-objects. It provides lists which the application can use to populate the menu and some parts of the Property Panel. The PluginManager loads classes from directories and recognises their implemented interfaces.

2.3.2 Plugin component

A component with a clear interface so that third-party developers can create plugins. The component shall provide dialogs for user interaction and should modify objects and object geometry according to user selection. A plugin can also create an entirely new object based on dialog-interaction from the user.

2.3.2.1 Interfaces

The Plugin interface provides:

2.3.2.2 Interfaces that extend the Plugin interface

The ShapeCreator provides an interface to:

The Filter provides an interface to:

The SceneLoader provides an interface to:

The SceneSaver provides an interface to:

The ObjectLoader provides an interface to:

The ObjectSaver provides an interface to:

The ViewExporter provides an interface to:

3. Use cases

3.1 Overview

This is a general overview of the actions available to the user.

\epsfig{figure=diagrams/Events1.eps}



Adam Chodorowski 2001-06-28