Graphics Group Page
This page contains resources and links for the CVE graphics group.
Our mission is to avoid the "3 deadly sins" of realtime 3D:
- too many polygons
- too thin walls
- too much lights
- from a usenet posting by MUFTI
Textures and Tiling
We need small textures that tile well. One way to do this is by hand
using a tool such as the Gimp. Here is a
tutorial.
Another way to do it is to find public domain textures of good quality that
are acceptable substitutes for our local textures.
A third way to do it is to develop automatic tools for taking digital
images and producing quality tilable textures.
Speeding Up Dynamic Textures
Virtual whiteboards and computer monitors beg for dynamic textures.
While these can be rendered via an off-screen window and installed
as a texture in Unicon, to make them fast we need primitives that
work on OpenGL textures in their native memory format. So far we
have implemented proof-of-concept capabilities in Unicon's DrawPixel()
and DrawLine() functions. For this to achieve ultimate coolness, the
whole 2D graphics API should work directly on textures and treat them
like any other graphics canvas.
It may be useful to study 2D memory-based graphics libraries that work on
(or could be adapted to) OpenGL-native RGBA memory arrays. Some candidates
include:
3D File Formats
We have studied 3D file formats and evaluated them for our
purposes. There are really two potential uses of 3D file formats,
modeling the "world" and modeling objects within the world.
Static "World" Data
So far we have rejected all candidates and used our own human-readable format.
For static information, candidates included
VRML (format example) (1.0, 2.0, or VRML97). Sample VRML world.
X3D, an XML-based successor for
VRML. A fatal flaw for X3D at the moment seems to be that the tools are all
commercial, and windows-centric.
U3D, an Intel-sponsored vaporware
format, may contest with X3D for future dominance of this market.
While these originated as "Web 3D formats", they are capable of
modeling our static data. I have been to NPS and met Don Brutzman,
he was very cordial. Unfortunately, I don't like X3D very well, it
seems too low-level. Perhaps we need a higher-level 3D format. Don
suggested mapping our higher level format onto X3D.
The VRML 97 grammar is not exactly context free. There is
supposed to be a public domain parser available, but if so it is not easy
to find.
3D Objects
Our severe allergy to expensive commercial tools might lead us to want
to use Blender or another open-source modeling tool. We have not found
a tool I've been especially pleased with yet. I do have a file format I
particularly like, the Simple3D format advocated by Ian Parberry.
"Level Editors"
We are interested in a drawing tool that will reduce the difficulty of
constructing our virtual environments. The kinds of features that would
make it useful include:
- open source
- easy to use for specifying objects and their vertices
- easy to use for associating textures and materials with objects
- saves files in a format that documented and/or simple enough for us to read in
Here are some tools that are out there, please add to this list.
Which ones of these best meet our requirements? Are there tools
particularly well-suited for creating 3D virtual spaces, instead
of generic 3D modeling?
tool | open source? | objects/vertices | textures | actually works?
|
---|
INT3D | no | ?? | ?? | ??
|
mjbWorld | ?? | ?? | ?? | ??
|
moonlight creator | GPL | ?? | ?? | ??
|
art of illusion | GPL | ?? | ?? | ??
|
blender | GPL | ?? | ?? | ??
|
ppmodeler | ?? | ?? | ?? | ??
|
cosmoworlds | ?? | ?? | ?? | said to be good for VRML
|
spazz3d | ?? | ?? | ?? | said to be good for VRML
|
vizx3d | ?? | ?? | ?? | X3D
|
outline3d | ?? | ?? | ?? | X3D
|
white dune | GPL | ?? | ?? | said to be good for VRML
|
wings3d | BSD | ?? | ?? | ??
|
milkshape | NO ($25) | ?? | ?? | ??
|
inkscape | yes | ?? | ?? | ??
|
Wynn Winkler is studying the issue of level editors and contributed
substantial notes during Meetings 3 and 6.
The Ruminator
Unless Wynn actually finds an editor we can use with our graphics engine,
we will end up writing our own. The department is very rectangular,
almost all the elements look alike and repeat over and over,
and the 2D coordinates are a lion's share of the job.
For the third dimension, a good first pass would be to specify
a generic wall section, complete with height and textures/materials,
and apply it to every room and cooridoor in the building:
Dr. J then went on to write a little Unicon program that would
allow a person to collect the 2D data by drawing rubberband boxes
around the CS department floor plan:
This tool has evolved a bit since then, see Dr. J's demo page.
"Avatar Editors"
I can easily imagine us using one or more tools in this category.
This could range from something as cartoonish as
a child's face builder tool, from which we still must extract polygons,
to a tool for digitizing from an actual scanned photograph of a person,
to something more sophisticated and 3D such as
the
ez Avatar Builder (which doesn't seem to work very well and seems
to have a misleading name). A ton of potentially useful links can be
found at
Digital Space's page of links.
H|Anim is an international standard for humanoid animation.
Here is a tutorial on 3D modeling of heads.
Whiteboard
Immersive Whiteboard
"Language" Feature Extensions Needed
Fonts
3D scenes have lots of text but OpenGL has no fonts built-in. We might
need to extend Unicon 3D with one of the following techniques. Then again,
the "textured fonts" technique might be usable now without any additions to
the Unicon 3D built-ins. We will need to check.
Transparency
A couple of folks have asked me about transparency. OpenGL supports it,
and most 3D accelerators have hardware support for it by now. Unicon will
require a minor addition to support transparency in RGBA materials' color
specifications.
Got 3D Hardware that Doesn't Do OpenGL?
Alt Software might have an
opengl/mesa driver for your Direct3D/DirectX graphics card that doesn't
do OpenGL.
Debugging OpenGL?
There is rumored to be a debugging library for opengl named bugle,
bugle.sf.net