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 |