[comp.archives] [graphics] Re: Scene Description Standard

dean@cs.mcgill.ca (Dean NEWTON) (05/06/91)

Archive-name: languages/scheme/elk/1991-05-01
Archive: export.lcs.mit.edu:/contrib/elk-1.2.tar.Z [18.30.0.238]
Original-posting-by: dean@cs.mcgill.ca (Dean NEWTON)
Original-subject: Re: Scene Description Standard
Reposted-by: emv@msen.com (Edward Vielmetti, MSEN)

In article <MATT.91Apr30142917@mandala.think.com> matt@mandala.think.com (Matt Fitzgibbon) writes:
>In article <30137@rouge.usl.edu> msr@gator.cacs.usl.edu (Srinivas R. Manapragada) writes:
>
>   Yes it would be nice to have a standard. However it should be more
>   expressive
>   and powerful than the language of say rayshade, which allows hierarchical
>   objects to be defined rather easily. However one should also have some
>   kind of procedural features.
>
>Rather than define another new language, has anyone explored using
>Lisp or some subset as a geometric description language?
>


You may want to consider using scheme for this purpose.  I have appended a
brief description of the Elk (Extension Language Kit) scheme interpreter at the
end of this message.

Since scheme is a general-purpose interpreted language, embedding Elk into
your system not only gives you a language for storing scenes, but you also get:
  -- an interpreted command language
  -- a cleaner (than the C binding) interface to Xlib/Xt/Motif
  -- an interpreter to Xlib/Xt/Motif

In fact, this will completely eliminate the dichotomy between "scene description
files" and "programs".

Elk is available for anonymous ftp from export.lcs.mit.edu

Enjoy,

Kaveh Kardan
Taarna Systems, Inc.
Montreal Quebec Canada
(posting from a friend's account)

----------------------------------------------------------------------------

Implementation:         Elk
Implemented by:         Oliver Laumann <net@tub.UUCP> <net@tub.BITNET>
Hardware:               VAX, Sun-3, Sun-4, ISI 680x0, Intel 80386, Mips,
                        IBM/RT, and others
Operating Systems:      UNIX/SunOS/Ultrix
Price/Availability:     Free.  Available as source code through the usual
                        sources archives and by e-mail from the author
Intended Use:           Primarily as a general extension language

Elk (Extension Language Kit) is a Scheme interpreter intended to be
used as a general extension language; it is also useful as a stand-alone
implementation of Scheme.

One purpose of the Elk project is to end the recent proliferation of
mutually incompatible Lisp-like extension languages.  Instead of
inventing and implementing yet another extension language, application
programmers can link the Scheme interpreter into their application
in order to make it extensible and highly customizable.

The Elk project was started in 1987 to support ISOTEXT, an ODA-based
document system (a WYSIWYG editor) that is being developed at the
Technical University of Berlin.  Elk has been successfully demonstrated
as the extension language kernel of ISOTEXT, e.g. at the Hanover Fair 1989.

The Elk Scheme interpreter is R^3RS compatible (with some minor exceptions
listed in a separate document); future releases will conform to the R^4RS
and/or P1178 as soon as the respective standards become available.

Non-standard features of the Scheme implementation include:

      o  dynamic loading of object files
      o  creation of an executable image from the running
         interpreter (``unexec'')
      o  a macro facility
      o  environments as first-class objects
      o  dynamic-wind, fluid-let
      o  autoloading, provide/require

The Scheme interpreter can easily be extended by application-specific
new types and primitive procedures.  Such extensions are typically
written in C or C++ and dynamically loaded into the running interpreter.

The current release of Elk includes several such extensions, e.g.
interfaces to the X11 Xlib and to the application programmer interface
of the Xt intrinsics, and interfaces to the Athena, HP, and Motif
widget sets.

-- comp.archives file verification
export.lcs.mit.edu
-rw-rw-rw-  1 ftp      30         585722 Sep 16  1990 /contrib/elk-1.2.tar.Z
found elk ok
export.lcs.mit.edu:/contrib/elk-1.2.tar.Z

craig@weedeater.math.yale.edu (Craig Kolb) (05/09/91)

Archive-name: graphics/3d/psc-p3d/1991-05-03
Archive-directory: calpe.psc.edu:/pub/p3d/ [128.182.62.148]
Original-posting-by: craig@weedeater.math.yale.edu (Craig Kolb)
Original-subject: Re: Scene Description Standard
Reposted-by: emv@msen.com (Edward Vielmetti, MSEN)

In article <MATT.91Apr30142917@mandala.think.com>, matt@mandala.think.com (Matt Fitzgibbon) writes:
>Rather than define another new language, has anyone explored using
>Lisp or some subset as a geometric description language?

Enclosed is an annoucement for the Pittsburgh Supercomputing Center's
P3D, which "uses lisp with slight extensions to store three-dimensional
models".  I've yet to look at P3D myself, but it may be relevant to
this disucssion.

Craig

---
            PSC P3D VERSION 2.0 AVAILABLE
            -----------------------------

   The third release of the Pittsburgh Supercomputing Center's P3D
software is now available.  This software uses lisp with slight
extensions to store three-dimensional models; we are using it as the
standard format for 3D models within the PSC.  A simple lisp
interpreter is included with the P3D release, so there is no need to
have access to any vendor's lisp to run this software.

   The copyright to the P3D software is owned by Carnegie Mellon
University, of which the Pittsburgh Supercomputing Center is a
department.  We copyright it so that no one can grab it and market it
as their own.  Feel free to copy it and distribute it around your own
site, and to modify it.  We ask that you do not redistribute it, as we
want new users to get it from us so we can keep track of it and
maintain a mailing list.  If you have modifications to the code or bug
reports, or would like to arrange to redistribute it, please contact
us.  This code is provided 'as is' without expressed or implied
warranty; the PSC makes no representations about its suitability for
any particular purpose.

HIGHLIGHTS

The highlights of the new release are the mouse-driven user interfaces
for Motif, Open Look, and Silicon Graphics GL, and the DrawP3D subroutine
library for generating P3D without ever looking at the underlying Lisp.
Renderer interfaces have been added for generic, DEC, and Sun Phigs,
and version 3.0 of Craig Kolb's Rayshade ray tracer.  We have also 
installed a new parser, which should be more robust and provide better 
diagnostics on P3D files containing Lisp errors.  It also will allow 
the rendering of larger models on some platforms.

RENDERERS

The PSC P3D software currently supports seven renderers.  They are:

	Painter, a Painter's Algorithm renderer.  This runs on just
	about everything, but requires the PSC's DrawCGM library and
	can only draw flat-shaded polygons.  If you need the DrawCGM
	library, get the GPlot software distribution by anonymous
	FTP from calpe.psc.edu, in the directory pub/gplot.

	Dore renderer, which is an interface to the Stardent Inc. Dore
	renderer software.  This is the recommended renderer for
	Stardent workstations.

	Silicon Graphics Inc. GL language renderer interface.  This
	is the recommended renderer for SGI workstations and IBM R6000
	workstations.

	Generic Phigs renderer interface.  This renderer should work with
	only minor modification on any implementation of Phigs, but because
	(like generic Phigs) it does not handle light sources it is not
	the recommended renderer on any platform.

	Sun Phigs+ renderer interface.  This renderer should work with
	Sun Phigs.  It produces excellent results with Sun hardware with
	graphics accelerators and a 24 bit display, but because of limitations
	with some versions of the Sun Phigs software it may not work
	properly on platforms with 8 bit displays.  Try this renderer 
	if you have a Sun platform, and if you don't like the results,
	switch to the Painter renderer.

	DEC Phigs+ renderer interface.  This renderer should work with
	DEC Phigs.  It is the recommended renderer for DEC platforms
	with 24 bit displays and graphics accelerators, for example
	accelerated DECStation 5000's.  For 8 bit DECStations, one might
	want to try both this renderer and the Painter renderer.

	Rayshade ray tracer renderer interface.  This renderer is an
	interface to Craig Kolb and associates' Rayshade ray tracer
	(version 3.0, patch level 5).  It produces some very nice images,
	very slowly.  The current implementation is a first release
	of the interaface and does not properly support all P3D
	model elements (for example, text primitives and vertex colors).


GETTING THE CODE

   The code is available via anonymous FTP from the machine
calpe.psc.edu.  If you do not already have the PSC's GPlot and DrawCGM
software, you can get that also from the same machine.  (You will need
GPlot/DrawCGM if you are using the Painter renderer, which is the
recommended renderer on machines lacking special 3D graphics
hardware).  To install the software on a Unix system, do the
following:

  - FTP to calpe.psc.edu (internet address 128.182.66.148).

  - Log in as anonymous, with your name as password.

  - cd to the directory pub/p3d (the GPlot software is in pub/gplot).

  - Set file transfer mode to Binary or Image.

  - Get p3d_2_0.tar.Z, (or p3d_2_0.tar if your machine doesn't
    have the 'uncompress' utility).

  - Move the tar file to an otherwise empty directory on your machine.

  - Uncompress the tar file with the command 'uncompress p3d_2_0.tar'.
    If this doesn't work, you should have gotten the uncompressed
    version;  see above.

  - Extract the contents of the tar file with the command 
    'tar -xvf p3d_2_0.tar' .

  - Follow the directions in the README file contained in the tar file.

To install the software on a VMS system, do the following:

  - FTP to calpe.psc.edu (internet address 128.182.66.148).

  - Log in as anonymous, with your name as password.

  - cd to the directory pub/p3d (the GPlot software is in pub/gplot).

  - Get tar2vms.c, a freely distributable tool copyrighted by Sid Penstone,
    Dept. of Electrical Engineering, Queen's University, Kingston, Ontario,
    Canada K7L3N6.

  - Set file transfer mode to Binary or Image.

  - Get p3d_2_0.tar, giving it the local name p3d_2_0.tar .

  - Move the tar file and tar2vms.c to an otherwise empty directory on 
    your machine.

  - Compile and link tar2vms.c.  It's a stand-alone program needing no
    libraries except the usual sys$library:vaxcrtl.olb.

  - Give the following commands to unpack the tar file:

      $ assign p3d_1_1.tar tape
      $ tar2vms:== $dev:[directory]tar2vms.exe   
                  (where dev and directory are your current default device
                   and directory).
      $ tar2vms xv

  - Follow the directions in the README file contained within the tar file.


------
NOTE:  The Motif and Open Look user interfaces in this release require a
bugfix to the PSC's GPlot/DrawCGM software which is not yet in the released
version (as of March 14, 1991;  the release is expected before the end
of March).  The symptom of the problem which this fixes is incorrect color
map handling using these user interfaces.  The fix is to relink DrawCGM
with the version of xws_color.c in the pub/p3d anonymous FTP directory
on calpe.psc.edu, or to include that module in the linking of the 
P3D executables.
------

   If you get this software, please send your name and network address
to me at welling@seurat.psc.edu so that we can send you announcements of
updates and bug fixes.  If you find bugs, that is also the address to
which to send the bug reports.


-Joel Welling
 Pittsburgh Supercomputing Center
 welling@seurat.psc.edu
 (412)268-6352

-- comp.archives file verification
calpe.psc.edu
total 7902
-rw-r--r--  1 0           29578 Mar 15 12:06 xws_color.c
-rw-r--r--  1 0            6876 Mar 15 08:58 README
drwxr-xr-x  2 0             512 Mar 11 12:34 SPARC
-rw-r--r--  1 0         2041393 Mar 11 12:29 p3d_2_0.tar.Z
-rw-r--r--  1 0         5969920 Mar 11 10:28 p3d_2_0.tar
-rw-r--r--  1 0           16519 Jun  7  1990 tar2vms.c
found psc-p3d ok
calpe.psc.edu:/pub/p3d/