[comp.graphics] 3D object file formats

gavin@krypton.SGI.COM (Gavin Bell) (04/14/89)

I am looking for information on 3-D object file formats; if you have
a lot of experience with 3D formats, or know of any relevant
references, I would appreciate E-mail, or, if you think this might be
of general interest, a response in this newsgroup.

My general wants:

-- I want a format that allows me to express relations like "These
material properties are attached to these polygons", for example.  I
want the set of types to be extensible, but it should include at least
the following:
	polygons, vertices, colors, normals, material properties (i.e.
	index of refraction, diffuse, specular, etc.)
It should be easy to add:
	splines, nurbs, textures, CSG primitives, triangle meshes, etc.

-- I want a format that allows useful tools to be written:  i.e. a
filter that finds the normals for an object, a filter that
triangulates the polygons in an object, a filter that converts a file
from a CSG representation to a polygonal representation.  This means a
display-list type of format just isn't good enough.

I know about the following formats:
-- Dec's off file format.  Great for what it does, but too simple.

-- Princeton University Lincoln format.  A winged-edge format,
	definitely not easily extensible, concerned almost exclusively
	with topology.

-- Mathematica's format.  Quick and dirty.

-- At least 7 different formats used here at Silicon Graphics; most of
	them were written as one-time things, none of the do what I want
	them to.

-- Aliases object file format.  Specific to what their software is
	capable of.

-- Wavefront's object file format.  Specific to what their software
	does.

-- A couple of ray-tracer formats.  Specific to the kinds of
	objects/textures/etc that they support.

I am asking this since I would rather not invent Yet Another Object
File Format.  However, I haven't found anything appropriate.  Any
suggestions?

--gavin  (gavin@sgi.com)

bullerj@handel.colostate.edu (Jon Buller) (04/14/89)

In article <30686@sgi.SGI.COM> gavin@krypton.SGI.COM (Gavin Bell) writes:
>I am looking for information on 3-D object file formats; if you have
>a lot of experience with 3D formats, or know of any relevant
>references, I would appreciate E-mail, or, if you think this might be
>of general interest, a response in this newsgroup.
>
     [ he wants all sorts of things you might want to describe a picture]
     [ then some stuff about filters and tools to manipulate the description ]
     [ and finally some stuff about various current file formats ]
>
>I am asking this since I would rather not invent Yet Another Object
>File Format.  However, I haven't found anything appropriate.  Any
>suggestions?
>
>--gavin  (gavin@sgi.com)

     ME TOO, ME TOO, ME TOO!!!  This has been one of the things holding my
graphics programs back.  I don't want to write a new description interpreter
for every experiment/renderer I would like to try out.  Gavin could you
PLEASE keep me posted on what you find out?  Anyone else too.  I just don't
want to put so much effort into re-inventing the wheel (or at least re-coding
it 8-).  My only problem is that I graduate in 1 month, when this account will
go away, (and so will I 8-).  Although I belive I will have news and e-mail
access, I don't know whre it will be...  I'll try to keep you all up to date,
(even if you want to flame my simple bugs, simple programs, and simple mind 8-)

-------------------------------------------------------------------------------
Jon Buller                                      FROM fortune IMPORT quote;
..!ccncsu!handel!bullerj                       FROM lawyers IMPORT disclaimer;

kirby@bozo.wbst128.xerox.com (Mike Kirby (co-op)) (04/14/89)

>I am looking for information on 3-D object file formats; if you have
>a lot of experience with 3D formats, or know of any relevant
>references, I would appreciate E-mail, or, if you think this might be
>of general interest, a response in this newsgroup.

Hmmm, Well....I just happen to be developing one of those "yet another
format" for description of three-d objects.  It is based on an object
oriented approach to everything.  I think perhaps this might be something
along the lines of what you want, because if you forget anything, then
you simply create another message.  For example.

define bluesphere {
   color setcolor [0.0 0.0 1.0];
   sphere (radius #f ) (center []);
}

this definition indicates that a sphere should be defined as having the
properties of the following objects : color and sphere.  Color is passed the 
message "setcolor" (a little redundant, yes..I know) and a "point_type" which
is enclosed within square brackets.  

A sphere type takes 2 messages, radius and center.  In this case, they are
left as implicitly defined (i.e. they are passed in as messages when
the object blueshpere is used).  Explicit definitions (like setcolor) are
constant within the confines of the sphere.

Now, if you wanted to expand it and include textureing, you could do
something like this:

define bumpyblue {
   bluesphere (radius #f) (center[]);
   maptexture filename "/usr/textures/texture1" method inverse_spherical;
}

Here, we have taken our bluesphere and again, passed the implicit definitions
along and included a new object called maptexture.  maptexture takes
two messages, a filename (all string types are enclosed within "") and
a method.  The method type is one of several predefined texturing methods.

With what you seem to have in mind you could simply begin adding on more
and more objects as you see fit.  The specification would remain compatible
with previous version, and also continue to have new features.

Note, that the environment has not been defined as of yet.  In my system
it is always done first with the definition of a special object ENVIRONMENT.

Comments? Suggestions? I am still developing this idea, and would appreciate
comments. I like this method because (although verbose in 
some aspects), it is easy to construct complicated images, and it is
easy to implement.  while I was defining it, I was careful to keep
implementation details in mind.

Michael Kirby
mpk9172@ritvax.bitnet		(This works)
mpk9172%ritcv@cs.rit.edu	(this is a little flaky, but usually works)
kirby.wbst128@xerox.com		(never tried this one)