logo.JPG

By Jose Parrot

 

                                                                       

SOL3d is a solidus modeler and wire-frame renderer.

 

 

Contents

 

Introduction

Windows Version

DOS version

Deep description

Data Structure

Features

3ds importer

Sol models

Linux

Future enhancements

 

 

 

Introduction

This package was developed to create wire-frame drawings for line plotter output.

It was used for some years, until I was hired by IBM and the package was abandoned.

 

But I think that the source code, and mainly the principles on which SOL is based, are very useful for students

and researchers that would like to learn a different approach for 3D rendering.

 

Sol is essentially a vector based application, in contrast to most of 3D packages, devoted to realistic (or almost) rendering engines, based on ray tracing. Sol doesn't produce images, but wire-frame drawings instead.

 

Another important point in SOL is the simple geometric calculation, based exclusively in right rectangles

properties, not using matrix calculation, as usual in computer graphics. Such approach results in very fast

perspective calculation.

 

The C pointers are used also for faster execution, contributing for high performance of SOL.

 

Windows version

I decided to port the package to Windows, by using .NET environment to allow execution in Windows xp

and Vista computers. Some improvements were made, as GUI, although maintaining the C style for the math. This new version is under development, and the menus are in English to make it easy to all to participate.

 

The Windows version is all in English and includes executables.

The source code is entirely in Microsoft Visual C++ environment. The code mixes both C and CLR syntaxes, although both are compatible with the complier.

 

The porting strategy was (1) to maintain as much as possible the original code (as it is very stable) for the core math calculations and for file I/O and (2) to create entirely new code for the GUI, by using the VC IDE resources, at same time providing a good and compatible interface, which works perfectly in both Windows xp and Vista computers.

For that reason, it needs the .NET 2.0 (or newer) run time dlls.

 

DOS version

As SOL was developed in Brazil, the original DOS code and menus are in Portuguese.

The complete package includes code for HPGL output (for line plotters), camera animation and some automatic tasks for animation. It is the foundation of the Windows version. SOL first version was written in MS C in DOS 6.3 environment, by using Borland's Pascal 3 graphics library.

 

3ds importer

The new 3ds2sol package is available at sourceforge to allow sol3d users to work with 3ds models.

It imports only the geometry (vectors, triangular mesh), skipping the others chunks.

Optional automatic or customized scaling and translations commands are available.

 

Sol models

The package includes some few models for using with sol3d.

 

Features

Version 0.9.3 added the following features

·         Maximum number of points, lines and faces grow by an order of 10

·         Default values set to avoid user mistakes

·         By using 3ds2sol, another package in sourceforge, viewing of 3ds models

 

Version 0.9.2 added the following features

·         Save modified or merged object files

·         New polyhedron (under development)

 

Version 0.9.1 has the following features

·         Read and merge polyhedron dat files

·         Transform one or more objects

·         Plot a perspective in the screen, with optional hidden line removal

 

Linux

There is no plan to port it to Linux, although the source files for DOS are easily portable to Linux, except the graphical output.

 

Future enhancements

·    In the present project, I think a version 2 jump is to abandon C style of file I/O and to refine precision, by using float variables for the coordinates..

·    I plan to develop a parallel version, with no graphics output, but capable of creating HPGL files, thus allowing post printing drawings.
Such implementation will support really large arrays, large number of objects and fast execution.

·    Frustum and level-of-detail for speed optimization.