go to www.geomview.org home page
 
Home

Overview
FAQ
Documentation

Download

Mailing List

Geomview For Windows?

Support
Users
Development

Bug Reporting
Contributing
Contact Us

Sponsors

 

Site Search

 

Advanced
Search

 
About the software@geom archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ANNOUNCE] Object-Oriented Graphics (Tcl/C++): GOOD 0.70



Here's an interesting announcement I noticed on the net...you might
want to check it out...in some ways it sounds similar to Geomview,
but with more emphasis on production rendering and scientific viz,
and with a somewhat more explicitly object-oriented (if you are
generous enough to call C++ object-oriented) kernel.  I notice
they also mention providing a class that reads OFF files :-)

ekki at prakinf.tu-ilmenau.de (Ekkehard Beier) writes:
> TU Ilmenau, Germany
> Faculty of Computer Science
> Department of Computer Graphics
> 

> We want to announce the 0.70 Release of the GOOD project. GOOD is
> an object oriented framework for graphical applications running
> under X Windows with special support to SGI GL, OpenGL, etc.
> 

> GOOD is free available with all sources. Everybody is invited to
> use, modify and extend GOOD. Its our aim to provide a public
> domain framework that should be helpful to other people.
> 

> New features in this release are:
> 	* usage of GNU autoconfig
> 	* AIX GL and OpenGL interfaces
> 	* supersampling camera
> 	* g++2.5.* support
> 	* bounding boxes for universal variables
> 	* improvements on the Tcl API
> 	* support for Tcl7.3 and Tk3.6
> 	* man page for parameter types of the Tcl API
> 	* some changes in the source code (naming conventions)
> 	* IOM: load&save for scenes
> 	* IOM: manual pages for the user interface classes
> 

> GOOD consists of three essential parts
> 

> 	* The Tcl/C++ Raytracer/Shader/Radiosity YART
>         YART is an extensible, object-oriented C++ kernel
>         with consistent interpretative language binding (Tcl) 

> 	and supports raytracing, radiosity and shading. 

> 	The shader may be used as integrated previewer especially
>         for animations or simulations before generating a lot
>         of key frames on disk using the raytracer. 

> 	contact: yart at prakinf.tu-ilmenau.de 

> 	[YART will be described more detailed behind the GOOD text.]
> 

> 	* The Interactive Object Manipulator IOM (for Yart)
> 	This is Tk based Application Builder for YART with
> 	support to Spaceball, Mouse allowing real interactions	
> 	and dialog boxes, tree widget, class browser for non-direct
> 	interactions	 

> 

> 	* The Module Application Framework MAF
> 	This is a C++ classlib for dataflow-driven applications  
including
> 	ipc, data transfer. Currently MAF is not available, 'cos
> 	we are reimplementing the prototype.
> 

> Additional there is a YART extension available, that implements a  
lot
> of stuff for scientific visualization, especially field  
simulations,
> streamlines, color mapping, etc.
> 

> * DIRECTORY STRUCTURE and INSTALL
> 

> To avoid a set of defines, Shell-Variables etc. you should create  
following directory structure:
> 	XXX - the root dir, give to it any name you want
> 		set an environment variable GOOD_ROOT_DIR to that dir
> 

> 	XXX/YART - install YART in that dir (rename YART*.** to YART)  
or
> 		create a link
> 

> 	XXX/IOM - the dir of the interactive object manipulator - the  
application
> 		builder for Yart; install the package inside or make  
a link
> 

> 	XXX/MAF - install MAF in that dir or make a link
> 

> 	XXX/packages - additional packages basing on the YART kernel
> 

> 	XXX/packages/scient - install here the scientific package if  
ya
> 		need that
> 

> 	XXX/classes - this dir contains a library of Tcl classes and  
is contained
> 		in the Tcl-include-path; subdirectorys are supported
> 

> 	XXX/fonts - install all additional fonts here
> 

> 	XXX/html - WWW documents  

> 

> 	XXX/man  - man dir - include that dir in your man path:
> 		setenv MANPATH ...:${GOOD_ROOT_DIR}/man
> 

> 	XXX/man/man3 - YART API
> 

> 	XXX/man/man1 - binary man pages
> 

> 	create a file XXX/man/mandesc:	
> 		1(1) User Commands (GOOD)
> 		3(3) Subroutines (YART)
> 

> 	XXX/require - the parent directory of all external stuff that  
will
> 		be  needed for GOOD
> 

> 	XXX/require/tcltk - link to the install directory of Tcl/Tk
> 

> !LINUX GUYS: please remove older Tcl and Tk stuff before! In  
(older) SLS 

> installations is contained tcl6.4, tk3.2 and preinstalled it  
/usr/local/
> lib, include, bin. 

> 

> 	XXX/require/tkTree - install here the Tk tree widget or make  
a link
> 

> * FILES *
> Following files are contained in pub/PROJECTS/GOOD0.70
> on metallica.prakinf.tu-ilmenau.de
> ( ftp anonymous, password: "Harley Fuckin' Davidson" )	
> 

> !NOTE! Not all of these files already exist inside the directory.
> 

> 	YART?.??.tar.Z - YART Graphics Kernel
> 

> 	IOM?.??.tar.Z - YART front end
> 

> 	MAF?.??.tar.Z - the framework
> 

> 	SCIENT?.??.tar.Z - scientific package
> 

> 	tcl*.tar.Z - the Tcl release we used
> 

> 	tk*.tar.Z - the Tk release we used
> 

> 	tkTree.tar.Z - the Tk Tree Widget
> 

> 	fonts.tar.Z - font files for YART text primitive
> 

> 	classes.tar.Z - Tcl composite classes
> 

> 	        * YART - Yet Another Ray Tracer *
> 

> YART is an obj oriented system for interactive 3D graphics.
> It's more than a raytracer; in the mean time Shading and 

> Radiosity had been integrated.
> 

> YART is platform independend. Currently ports to SGI GL, PHIGS
> PLUS, X11 and others do exist. An MS Windows port was done, too.
>  

> YART has two consistent language bindings: C++ and Tcl. Tcl allows
> an interpretative access to the graphical classes and objects.
> 

> YART is built around some essential abstract terms (representing
> abstract classes, too) 

> 

>        	* CAMERA takes PRIMITIVEs from a SCENE and puts 'em  
to a PIXMAP	
> 		- the kind of projection, rendering, etc. 

> 		and special features like supersampling, stereoview  
are
> 		hidden into the specific camera class
> 		- any new camera can be implemented using transparent  
subclassing
> 		- YART currently has following camera classes:
> 			OneRayCamera - for raytracing test purposes
> 

> 			LookatCamera - a cam with SGI GL like lookat
> 			features, allowing shading, raytracing,  
radiosity
> 

> 			SuperSamplingCamera - supersampled raytracing
> 

> 			[StereoCamera - only for SGI GL]
> 				
> 		- more than one camera can look at one scene
> 

> 	* PRIMITIVE is a polymorph object derived from an
> 		 abstract class RT_Primitive, defining different
> 		 rendering protocols
> 		- Primitives can have any modelling aspects.
> 		- HiLevel primitives can be inherit using multiple
> 		inheritance:
> 

>                       Quadmesh        Quadirc  

> 			|               |      

> 	    		-----------------	
>                                |
>                              Sphere	
> 		(using raytracing interface of quadric)
>                 (and shading interface of quadmesh)
> 		
> 		- composite objects will managed automatically
> 		- display lists will be used, if there are any  
available 	
> 		- a primitive can have a parent primitive	
> 		- children inherit geometrical and other attributes  
from their
> 		  parent object (hierarchical modeling)	
> 	
> 	* ATTRIBUTEs are properties of PRIMITIVES
> 		- attributes can be procedural implemented,
> 		 polymorph and will be inherited with priorities.
> 		- attributes can be additionally class related:
> 		 "Button.surface"
> 		- attributes are handled efficiently using
> 		  references for non-directly assigned attributes
> 		- every object can be assigned every attribute
> 		- every object can be asked for every attribute
> 		- examples for attr are: 

> 

> 			Surface  	Fillstyle
> 			Resolution	Mapping
> 

> 		* SCENEs are unordered lists of PRIMITIVES
> 		- Scenes are the input for cameras.
> 		- Operations on scene objects can implemented using
> 		  subclassing.
> 		- An example for a special scene is our Radiosity  
scene
> 

> 		* LIGHT sources are like PRIMITIVES objects those can
> 		 be inserted into a scene 

> 		- different lighting models can be implemnted in
> 		 light classes
> 

> 		* a MAPPING is also an object like the others
> 		-  MAPPINGS can change surface parameters (emission,
>                   diffusion, normals, ...) of primitives
> 		- the mapping can be done in a 2D area or in a 3D
> 		  solid wolrd
> 		- the parameters of mappings can be changed
> 		  interactively
> 		- mappings can use the local or global coordinate  
system or 

> 		the system of the father of the primitive ...
> 

> 		* PIXMAPs are abstract units for displaying raste-
> 		rized images
> 		- pixmaps are very different: Online-Display,  
MPEG-based
> 		  storage pixmaps
> 		- pixmaps can be coupled with IMAGES
> 

> 		* IMAGEs represent abstractly image files, the
> 		access to an image is independendly from the specific
> 		formate such as TIFF, GIF, RGB, ...
> 

> 		* INPUT DEVICES are objects, too. They're event-
> 		controlled, callback-oriented, extensible,
> 		platform independend and can be coupled with objects
> 

> 		- Input devices can be driven stand-alone or coupled
>                 to a camera (in this case, they can have a scene
> 		independent, camera specific visual feedback
> 

> *CURRENT STATE*
> 	* vector and matrix classes, complex numbers, dl list
> 	* Tcl support for math lib 

> 	* PRIMITIVES: 

> 	  Polymarker(s), Polyline, Polyvertex, Spline, Quadmesh,
> 	  Axes, Sphere, Torus, Cylinder, Cone, Polyhedron, Text,
> 	  Plane, Ellipsoid, Quadric
> 

>           the universal primitives are full editable(points,
> 	  surfaces, normal-  per vertex and/or global)
> 

> !NOTE! not all primitives are complete. Especially the universal  
primitives
> (Poly*, Quadmesh) do not have a raytracing interface 'til now.  
Sorry about
> that, but there wasn't enough time.
> 

> 	* a class reading OFF files 

> 	* two lights classes: Ambient and Point (90 degress arc) 

> 	* complete surface props: diffuse[], specular[],
> 	emmission[], transparency, shininess, refraction  

> 	* a perspectivic "lookat" camera and other cameras
> 	* classes for surface mapping + some demo classes
> 	* a pixmap class for immediate display
> 	* persistence of objects, complete modelling functions
> 	 (scale, rotate, translate ),
> 	 Persistence has been realized by dumping Tcl code that
> 	represents the current objects
> 	* complete Tcl/C++ support 

> 	* a little shell allowing interactive programming (rtsh)
> 	* a further shell with Tk support (integration of YART  
pixmaps
> 	 into Tk 2D user interfaces)
> 	* editable hierarchy of objects with 

> 	  inheritance of modelling transformations and  attributes 

>         * typeorthogonal assignment of attributes meaning that
> 	  Every primitive can be assinged every attribute 

> 	  the attribute context is easily extensible
> 	* automatic management of parts of high level objects 

> 	* Inputfunctionality. Input devices:
> 		Pick 			Locator
> 		FileDevice 		FileHandler 

> 		Manipulator
> 	
>        	Every input device manages both Tcl and C++  
callbacks.
> 	  Other devices can be implemented easily ( Drag'and Drop,
> 	 ...). 

> 

> DESIGN AIMS:
> 

> 	* YART is a framework that is easy extensible at any stage
> 	* minimization of the platform dependend stuff (currently  
less than
> 	3 per cents are platform dependend)
> 	* no device drivers, no platform defines!
> 	the YART lib is totally platform independend. just
> 	link the specific base lib and that's it
> 	* Network Transparent access to C++-objects is easily
> 	possible when using the Tcl interface (via tclIPC or wish's  
send)
> 

> 	* for Tcl to C++ conversion there are used parse tables
> 	for (half)automatic parameter conversion. These tables have
> 	additional informations (descriptions) and can be inquired
> 	interactively
> 	-> that informations are used for:
> 	- interactively programming: "sphere1 ?"
> 	returns descriptions of methods of OBJECT sphere1 

> 	- interactively programming: "Sphere ?"
> 	returns descriptions of methods of CLASS Sphere 

> 	- automatical generation of WYSIWYG user interfaces
> 	- automatical generated documentations (NROFF or
> 	HTML pages for all classes will be created automatically
> 	at installation time
> 	* a stereoview demo is also part of the distribution
> 	* an interpretative class system is also part of YART
> 	allowing fast implementation of Tcl classes (Composite
> 	primitives, etc.)
> 

> *CONTACT*
> 	* ekki at prakinf.tu-ilmenau.de
> 	* there is an (english-speaking!)  mailing list:  
yart at prakinf.tu-ilmenau.de 

> 

> *PLATFORMS*
> 	* OS:
> 		SGI Iris R3000, R4000
> 		SGI Indy (IRIX 4.0, 5.1)
> 		SUN Sparc
> 		Linux-PC 

> 		HP 9000	(HP-UX 9.01)
> 		NetBSD (0.9a)
> 		RS/6000
> 

> 		[MS Windows - ported but not released]
> 

> 	* Graphics:
> 		SGI GL (+ Tk)
> 		GTS GRALPHIGS (ISO-C binding) 

> 		IBM PC SVGA
> 		X11 (+ Tk)
> 		OpenGL (+ Tk)
> 		AIX GL
> 		[? SUNPHIGS ?]	
> 		[? PEX ?]
> 

> 	* Compilers: 

> 		AT&T CC (cfront2.1, 3.0, 3.2)
> 		GNU 2.3.3, 2.4.5, 2.5.*
> 

> *INSTALL*
> 	* get "YART0.70.tar.Z" in binary mode via ftp from
> 		 metallica.prakinf.tu-ilmenau.de 

> 	= 141.24.32.29 : pub/PROJECTS/GOOD0.70
> 	* login "ftp" password "HARLEY FUCKIN' DAVIDSON"	
> 	* the newest release should also be available from:
> 		ftp.luth.se:/pub/graphics/sources/oographics
> 

> 	        wuarchive.wustl.edu:  
/graphics/graphics/mirrors/metallica.
>  			prakinf.tu-ilmenau.de
> 

> 		plaza.aarnet.edu.au: /graphics/graphics/metallica.
>  			prakinf.tu-ilmenau.de
> 

> 	* "zcat YART0.70.tar.Z | tar xvf -" ( a subdirectory will be
> 	  created automatically)
> 

> 

>   !IMPORTANT!
> !	* read README.GOO and set the links and the
> !          GOOD_ROOT_DIR env variable!
> !
> !	* "cd src; configure; make install"
> !	
> !	* in "<YART>/FILES" all files of the distribution are shortly
> !	  described	
> 

> 

> *PRECONDITIONS*
> 	* Tcl7.3, Tk3.6, TkTree3.3 (tkTree.tar.Z), { GL or X11 or  
PHIGS PLUS or AIX GL
> 	or OpenGL }
> 

> *REQUEST*
> 	* Looking for contributions, ideas, bug fixes, discussion,
> 	nice screen dumps, applications, demos, etc.
> 	* Everybody is welcome to use and extend YART 

> 	* The X11 shader is very slow and not suitable for
> 	realtime interactions on Linux, for instance.
> 	 Thus it would be cool
> 	if somebody could make a very fast wireframe shader
> 	* for people that want to make extensions: there is a long
> 	list of todoables in <YART>/TODO, but -please- read
> 	<YART>/GUIDELNS before hackin' any stuff
> 	
> *DEMOS*
> 	on metallica there are located some traced images and a small
> 	animation in SGI movie formate (Dir:  pub/DEMOS) 

> 

> ENJOY with YART,
> 		Ekki.
> 

> ****************************************************************
> * Ekkehard 'Ekki' Beier                                        *
> *   email: ekki at prakinf.tu-ilmenau.de                          *
> *   phone: ++49-3677-691243          fax:   ++49-3677-691201   *
> *   talk : ekki at metallica.prakinf.tu-ilmenau.de [141.24.32.29] *
> * Technical University of Ilmenau                              *
> * Faculty of Computer Science and Automation                   *
> * Department of Computer Graphics                              *
> * Am Ehrenberg, PSF 327, 98684 Ilmenau, GERMANY                *
> *   private:                                                   * 

> * Kopernikusstra3e 8, 98693 Ilmenau, GERMANY                   * 

> ****************************************************************


--
--------------------------------------------------------------------
Paul Burchard	<burchard at geom.umn.edu>
``I'm still learning how to count backwards from infinity...''
--------------------------------------------------------------------


 
Home | Overview | FAQ | Documentation | Support | Download | Mailing List
Windows? | Development | Bug Reporting | Contributing | Contact Us | Sponsors
 
site hosted by
SourceForge Logo