![]() Home Overview FAQ Documentation Download Mailing List Geomview For Windows? Support Users Development Bug Reporting Contributing Contact Us Sponsors
|
[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 |
|||