1103 lines
50 KiB
HTML
1103 lines
50 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
<META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (X11; I; Linux 2.0.30 i486) [Netscape]">
|
|
<META NAME="Author" CONTENT="Michael J. Hammel">
|
|
<META NAME="Description" CONTENT="The Monthly Column of Computer Graphics for Linux Systems.">
|
|
<TITLE>Graphics Muse</TITLE>
|
|
<SCRIPT LANGUAGE="JavaScript">
|
|
|
|
<!-- Hide script from older browsers
|
|
|
|
numitems=2;
|
|
SampleImages = new Array(numitems);
|
|
|
|
SampleImages[0] = new Image();
|
|
SampleImages[1] = new Image();
|
|
|
|
SampleImages[0].src="../gx/hammel/dog-1.jpg";
|
|
SampleImages[1].src="../gx/hammel/dog-2.jpg";
|
|
|
|
function navInfo(input_status, index) {
|
|
status = input_status;
|
|
document.dog.src = SampleImages[1].src;
|
|
}
|
|
|
|
function clearInfo(index) {
|
|
status="";
|
|
document.dog.src = SampleImages[0].src;
|
|
}
|
|
|
|
// End of hidden script -->
|
|
|
|
</SCRIPT>
|
|
</HEAD>
|
|
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#CC0000" ALINK="#FF6600">
|
|
|
|
<!--endcut ============================================================-->
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
|
|
|
|
<!-- =============================================================
|
|
These pages are designed by Michael J. Hammel. Permission to
|
|
use all graphics and other content is granted provided you give
|
|
me (or the original authors/artists) credit for the work and this
|
|
copyright notice is not removed.
|
|
|
|
(c)1997, 1998 Michael J. Hammel (mjhammel@graphics-muse.org)
|
|
============================================================= !--><!-- The Button box as a client side imagemap --><MAP NAME="nav-main"><AREA SHAPE="rect" HREF="#mews" coords="20,18 185,40"><AREA SHAPE="rect" HREF="#webwonderings" coords="10,60 185,83"><AREA SHAPE="rect" HREF="#musings" coords="90,102 185,130"><AREA SHAPE="rect" HREF="#resources" coords="70,152 185,180"></MAP>
|
|
<!-- The Button box as a client side imagemap -->
|
|
<MAP NAME="nav-main"><AREA SHAPE="rect" HREF="#mews" coords="20,18 185,40"><AREA SHAPE="rect" HREF="#webwonderings" coords="10,60 185,83"><AREA SHAPE="rect" HREF="#musings" coords="90,102 185,130"><AREA SHAPE="rect" HREF="#resources" coords="70,152 185,180"></MAP>
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/gm3.gif" ALT="Welcome to the Graphics Muse" NOSAVE HEIGHT=216 WIDTH=441 ALIGN=LEFT></TD>
|
|
|
|
<TD VALIGN=BOTTOM>
|
|
<CENTER><FONT SIZE=-1>Set your browser as wide as you'd like now.
|
|
I've fixed the Muse to expand to fill the aviailable space!</FONT></CENTER>
|
|
|
|
<CENTER><FONT SIZE=-2>© 1997 by <A HREF="mailto:mjhammel@csn.net">mjh</A> </FONT></CENTER>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<HR WIDTH="100%">
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
|
|
<TR>
|
|
<TD WIDTH="185"><IMG SRC="../gx/hammel/muse-image-map.gif" ALT="Button Bar"
|
|
BORDER=0 USEMAP="#nav-main" HEIGHT=200 WIDTH=185 ALIGN=LEFT></TD>
|
|
|
|
<TD VALIGN=TOP><B><FONT SIZE=+1>muse:</FONT></B>
|
|
<OL>
|
|
<LI>
|
|
<I>v;</I> to become absorbed in thought </LI>
|
|
|
|
<LI>
|
|
<I>n;</I> [ fr. Any of the nine sister goddesses of learning and the arts
|
|
in Greek Mythology ]: a source of inspiration </LI>
|
|
</OL>
|
|
<IMG SRC="../gx/hammel/w.gif" ALT="W" HEIGHT=28 WIDTH=36 ALIGN=BOTTOM>elcome
|
|
to the Graphics Muse! Why a "muse"? Well, except for the sisters aspect,
|
|
the above definitions are pretty much the way I'd describe my own interest
|
|
in computer graphics: it keeps me deep in thought and it is a daily source
|
|
of inspiration.
|
|
<CENTER><FONT SIZE=-1>[<A HREF="#mews">Graphics Mews</A>][<A HREF="#webwonderings">WebWonderings</A>][<A HREF="#musings">Musings</A>]
|
|
[<A HREF="#resources">Resources</A>]</FONT></CENTER>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<BR><IMG SRC="../gx/hammel/t.gif" ALT="T" HEIGHT=28 WIDTH=26 ALIGN=LEFT>his column
|
|
is dedicated to the use, creation, distribution, and discussion of computer
|
|
graphics tools for Linux systems.
|
|
<BR>
|
|
<BR> Can it be true? Has it really
|
|
been a whole year for the Muse? Time surely travels more quickly
|
|
as we grow older. The lazy days of youth have left me forever, replaced
|
|
by the hectic life of adulthood and responsibility. I love it.
|
|
No wonder life was so confusing for me as a youth. I was bored.
|
|
|
|
<P>So, another busy month gone by. I'm still in the throws of pre-shipment
|
|
testing at work but fortunately my code seems to be pretty stable now.
|
|
I've even managed to get far enough ahead that I've been able to work at
|
|
home on other projects while the rest of the gang catches up. To
|
|
their credit, their stuff was harder to work on than mine. I got
|
|
to design and write my code from scratch. No legacy code for me.
|
|
|
|
<P>One of the things I've been working on is getting deeper into the GIMP.
|
|
If you haven't seen it yet, take a look at the November Linux Journal.
|
|
The first of a 4 part series I wrote on the GIMP was published in that
|
|
issue. I also have started to learn much more about how to create
|
|
interesting effects. If you have some free time and online-money
|
|
to burn, check out my <A HREF="http://www.csn.net/~mjhammel/gimp/gallery.html">GIMP
|
|
Gallery.</A> I've put most of my more interesting images there.
|
|
|
|
<P>This month I'm going to talk a little about how to use the GIMP to create
|
|
a frame with a 3D metallic or plastic look. The process turns out
|
|
to be fairly simply and is one you will probably get to know by heart if
|
|
you use the GIMP very often.
|
|
|
|
<P>I'll also cover my notes from SIGGRAPH '97. I wish I could have
|
|
done this right after I got back when the conference was still fresh in
|
|
my mind, but things didn't work out that way.
|
|
|
|
<P>Finally, I'll be covering JavaScript image rollovers - those cute little
|
|
image swapping thingies that many people have added to their Web pages.
|
|
You can do these using a number of different techniques, but I'm only familiar
|
|
with JavaScript right now so that's what we'll talk about.
|
|
|
|
<P>As usual, feel free to <A HREF="mailto:mjhammel@csn.net">send me comments</A>
|
|
on any of this.
|
|
<BR><A NAME="mews"></A>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/mews.gif" ALT="Graphics Mews" HEIGHT=53 WIDTH=242 ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
Disclaimer: Before I get too far into this
|
|
I should note that any of the news items I post in this section are just
|
|
that - news. Either I happened to run across them via some mailing list
|
|
I was on, via some Usenet newsgroup, or via email from someone. I'm not
|
|
necessarily endorsing these products (some of which may be commercial),
|
|
I'm just letting you know I'd heard about them in the past month.
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
|
|
<TR>
|
|
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
|
|
|
|
<TD></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD WIDTH="50%" NOSAVE>
|
|
<H2>
|
|
CurveSoft announces release of FontScope.</H2>
|
|
CurveSoft(tm) is pleased to announce the availability of <B><I><FONT COLOR="#CC6600">FontScope</FONT></I></B>(tm):
|
|
A commercial, high-performance portable rasterizer ibrary for Type 1 scalable
|
|
fonts sometimes also called PostScript(tm) fonts.
|
|
|
|
<P>FontScope allows developers and programmers to build Type 1 scalable
|
|
font support directly into their applications thus roviding a fast, efficient,
|
|
high quality platform-independent solution to the problem of providing
|
|
scalable font support.
|
|
|
|
<P>See <A HREF="http://www.curvesoft.com">http://www.curvesoft.com</A>
|
|
for further details about the product.
|
|
|
|
<P>FREE DEMO
|
|
<BR>You can download a free demo for the Linux(x86) and SunOS(SPARC) platforms
|
|
from the web page at <A HREF="http://www.curvesoft.com">http://www.curvesoft.com</A>
|
|
. The demo lets you arbitrarily scale, skew or rotate characters from any
|
|
Type 1 font you may have and view either the bitmap or the outline on the
|
|
screen. If you have Multiple Master fonts, it lets you create instances
|
|
and then view characters from those instances.
|
|
|
|
<P>If you have access to a Linux(x86) or a SunOS(SPARC) machine, we strongly
|
|
suggest downloading the demo program since that allows you to test FontScope
|
|
on your own Type 1 fonts as well as get an idea of thespeed and quality.
|
|
If unanswered questions still remain, please email them to info@curvesoft.com</TD>
|
|
|
|
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
|
|
<TD VALIGN=TOP WIDTH="49%" NOSAVE>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD NOSAVE>
|
|
<H2>
|
|
The GRASP Environment for Ada 95, C, Java, VHDL</H2>
|
|
<B><I><FONT COLOR="#CC6600">GRASP</FONT></I></B> is commercial grade GUI
|
|
front-end for GNAT, gcc, and JDK. Users can compile, edit, and run programs
|
|
directly from GRASP. The editor provides complete syntax coloring with
|
|
user selected colors and fonts.
|
|
|
|
<P>GRASP provides complete support for generating, editing, and printing
|
|
Control Structure Diagrams (CSDs) from Ada 95, C, Java, and VHDL source
|
|
code. The CSD is a diagram intended to increase the comprehension efficiency
|
|
of source code.
|
|
|
|
<P>GRASP runs under SunOS/Solaris, IRIX, Linux, and WinNT. It is freely
|
|
available via the GRASP homepage at
|
|
<BR><A HREF="http://www.eng.auburn.edu/grasp">http://www.eng.auburn.edu/grasp</A>
|
|
<BR>
|
|
<BR> </TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=3></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD VALIGN=CENTER NOSAVE>
|
|
<BR>
|
|
|
|
<P>The Texture Library-mirror in Vienna has changed. Please update your
|
|
bookmarks and links from:
|
|
<CENTER>http://klein.htu.tuwien.ac.at/~rs/</CENTER>
|
|
|
|
<CENTER>to</CENTER>
|
|
|
|
<CENTER><A HREF="http://freibier.ml.org/texlib/">http://freibier.ml.org/texlib/</A></CENTER>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
|
|
<TD NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD></TD>
|
|
|
|
<TD></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000" NOSAVE><IMG
|
|
SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<BR><!--
|
|
-- Did You Know Section
|
|
-->
|
|
<H4>
|
|
Did You Know?</H4>
|
|
... Adobe Acrobat contains some nice fonts you can use with your X Windows
|
|
environment? You get these scalable PostScript fonts:
|
|
<BR>
|
|
<CENTER><TABLE BORDER=0 COLS=4 WIDTH="70%" NOSAVE >
|
|
<TR>
|
|
<TD>Courier-Bold</TD>
|
|
|
|
<TD>Courier-BoldOblique</TD>
|
|
|
|
<TD>Courier-Oblique</TD>
|
|
|
|
<TD>Courier</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD>Helvetica-Bold</TD>
|
|
|
|
<TD NOSAVE>Helvetica-BoldOblique</TD>
|
|
|
|
<TD> Helvetica-Oblique</TD>
|
|
|
|
<TD>Helvetica</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD>Times-Bold</TD>
|
|
|
|
<TD>Times-BoldItalic</TD>
|
|
|
|
<TD NOSAVE>Times-Italic</TD>
|
|
|
|
<TD>Times-Roman</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD>AdobeSansMM</TD>
|
|
|
|
<TD>AdobeSerifMM</TD>
|
|
|
|
<TD>Symbol</TD>
|
|
|
|
<TD>ZapfDingbats</TD>
|
|
</TR>
|
|
</TABLE></CENTER>
|
|
I checked the License file and there doesn't appear to be anything against
|
|
using these for general use on your system, but you should read the License
|
|
yourself to be certain. Then search all the old CD-ROMs you can find for
|
|
*.pfa and *.pfb files. For example, Lotus 123 v1.1 for Windows has these:
|
|
<BR>
|
|
<CENTER><TABLE BORDER=0 COLS=4 WIDTH="70%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD NOSAVE>ArialMT</TD>
|
|
|
|
<TD NOSAVE>Bodoni-BoldCondensed</TD>
|
|
|
|
<TD>BrushScript</TD>
|
|
|
|
<TD>Courier</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD>DomCasual</TD>
|
|
|
|
<TD>LetterGothic</TD>
|
|
|
|
<TD>NewsGothic</TD>
|
|
|
|
<TD NOSAVE>Perpetua</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD>Symbol</TD>
|
|
|
|
<TD>TimesNewRomanPS</TD>
|
|
|
|
<TD>TimesNewRomanPS-Bold</TD>
|
|
|
|
<TD>TimesNewRomanPS-BoldItalic</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER VALIGN=CENTER COLSPAN="4" NOSAVE>TimesNewRomanPS-Italic</TD>
|
|
</TR>
|
|
</TABLE></CENTER>
|
|
You can then use the <A HREF="http://goblet.anu.edu.au/~m9305357/type1inst.html">Type1Inst</A>
|
|
script to set up the directories with the new files. Don't forget to run
|
|
<B><I><FONT COLOR="#CC6600">xset</FONT></I></B> to tell your X server about
|
|
the new directories!
|
|
|
|
<P><!--
|
|
-- Q and A Section
|
|
-->
|
|
<H4>
|
|
<B><FONT SIZE=+0>Q and A</FONT></B></H4>
|
|
<I>Q:</I> Whats the latest on VRML?
|
|
|
|
<P>A: Check out the VRML update on BUILDER.COM:
|
|
<CENTER><A HREF="http://www.cnet.com/Content/Builder/Authoring/Vrml/index.html?dd">http://www.cnet.com/Content/Builder/Authoring/Vrml/index.html?dd</A></CENTER>
|
|
|
|
|
|
<P><I>Q</I>: Whats the latest news on commercial game development
|
|
for Linux?
|
|
|
|
<P>A: There was an important announcement from Crack.com recently.
|
|
Check out
|
|
<CENTER><A HREF="http://www.gamecenter.com/News/Item/0,3,1190,00.html">http://www.gamecenter.com/News/Item/0,3,1190,00.html</A></CENTER>
|
|
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=1></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<H2>
|
|
Reader Mail</H2>
|
|
Dr. Norman Fahrer <<A HREF="mailto:fano@norcov.com">fano@norcov.com</A>>
|
|
wrote: <IMG SRC="./gx/hammel/nolimits.jpg" HSPACE=10 VSPACE=10 BORDER=3 HEIGHT=235 WIDTH=356 ALIGN=RIGHT>
|
|
<UL>I read your article in the Linux journal. I was running the older version
|
|
of gimp (0.5..) and yesterday I wanted to get the new gimp version running.</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>: The 0.5 is quite
|
|
old. 0.61 was the last publicly released Motif version.
|
|
<UL>I configured + compiled + installed. Everything built fine. Now
|
|
when I type 'gimp' it says :
|
|
<UL><B>gimp: can't load library 'libgtk.so.1'</B></UL>
|
|
I have that library built and installed into /usr/local/lib where it is
|
|
symboliclly linked to 'libgtk.so.1.0.0'. Do you have any idea what I can
|
|
do to get the Gimp running ? Thanks for your help,</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>: After installing
|
|
the GTK library, be sure the loader knows about it. First run "ldconfig
|
|
-p | grep gtk" to see if it already does know about the GTK library.
|
|
If you get no output from this then run "ldconfig" again, but without the
|
|
-p option. When that completes, run "ldconfig -p | grep gtk" to verify
|
|
the library can be found. You'll need to run ldconfig as the root
|
|
user if you've installed the library in /usr/local/lib.
|
|
|
|
<P>ldconfig generally looks in /usr/local/lib, along with a few other places,
|
|
for libraries. To make sure it does, check /etc/ld.so.conf and make
|
|
sure that directoy is listed there. Check the man pages for ldconfig
|
|
if you have any further problems.
|
|
|
|
<P>If ldconfig -p shows gtk is already installed then the other possibility
|
|
is to add the following to your .profile:
|
|
<UL><B>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib</B>
|
|
<BR><B>export LD_LIBRARY_PATH</B></UL>
|
|
This may help the loader find the library at run time too.
|
|
|
|
<P><A HREF="mailto:kar@webline.dk">kar@webline.dk </A>wrote:
|
|
<UL>Do you know of a tool that can convert Corel's cdr and wpg formats
|
|
into a more commonly accessibly format?</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>: Image Alchemy supports
|
|
wpg. It may also support cdr by now although the version I have doesn't
|
|
list it (I know there are a number of formats it supports that aren't listed,
|
|
however). Check out my Graphics Muse column in the August 1997 Linux
|
|
Gazette. There are links there to their web site. The Linux Gazette
|
|
is at http://www.ssc.com/lg.
|
|
<UL>It's a little much to buy a package just for that - perhaps you could
|
|
ask in your column if anybody knows other programs that can?</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>: Ok. So readers,
|
|
anyone know of a cheaper method? If so send it to him. I'm
|
|
satisfied with knowing there is a commercial solution.
|
|
|
|
<P>Tethys <<A HREF="mailto:tethys@ml.com">tethys@ml.com</A>> wrote in
|
|
respose to a Musing last month about NetPBM not having JPEG conversion
|
|
tools:
|
|
<UL>Yes, you're right. Netpbm doesn't come with tools to convert to and
|
|
from JPEG. Maybe it should. However, this is probably because the libjpeg
|
|
distribution that it would use already comes with cjpeg and djpeg. By default,
|
|
these already act like ppmtojpg and jpgtoppm. They also accept other formats
|
|
like GIF, BMP, TGA etc.</UL>
|
|
David Maha <<A HREF="mailto:cmulator@pacific.net.sg">cmulator@pacific.net.sg</A>>
|
|
wrote:
|
|
<UL>My installation diskette for my image256 software was destroyed by
|
|
coffee, and I've been looking for the software for quite some time now.
|
|
I have a A4 Tech A4Color AC 4096 hand-held scanner. Do you know of which
|
|
software can be used to operate the scanner and if possible in Windows
|
|
environment? Can you tell me where I could download it or get it on the
|
|
net?</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>: I'm not familiar
|
|
with MS platforms. I don't use them. However, there are apparently
|
|
some Linux drivers for this scanner on the Sunsite Linux archives. Take
|
|
a look at: <A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/scanners">ftp://sunsite.unc.edu/pub/Linux/apps/graphics/scanners</A>.
|
|
|
|
<P>I did a review of all the Linux scanner information I could find in
|
|
my Graphics Muse column in March of this year. You can take a look
|
|
at it starting at the Linux Gazette's (which is the online magazine that
|
|
carries my Graphics Muse column) table of contents at <A HREF="http://www.ssc.com/lg">http://www.ssc.com/lg</A>.
|
|
|
|
<P>Gregory Gardener <<A HREF="mailto:GardenerG@code20nl.npt.nuwc.navy.mil">GardenerG@code20nl.npt.nuwc.navy.mil</A>>
|
|
wrote:
|
|
<UL>I work for the DOD. From reading your column in Linux Journal
|
|
it appears that you have expertise in the area of PC graphics...so I'm
|
|
directing my question to you. If I wanted to develop a PC software product--an
|
|
interactive educational system--what PC graphics package is "state of the
|
|
art" for Linux or Windows?</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>: Good question.
|
|
|
|
<P>Don't choose a platform, choose a technology: Java and/or VRML.
|
|
Why? By doing so you remove the need for your end users to be required
|
|
to have a particular platform to use your software. Second, you can
|
|
more easily fit into any organization no matter what platforms they might
|
|
already have.
|
|
|
|
<P>Problems:
|
|
<OL>
|
|
<LI>
|
|
Java is not quite standard on all platforms yet.</LI>
|
|
|
|
<LI>
|
|
VRML is very new and has the traditional problems with new technologies
|
|
(acceptance, standards, etc).</LI>
|
|
|
|
<LI>
|
|
VRML requires the availability of a VRML browser on your end-users platforms.</LI>
|
|
</OL>
|
|
#1 is not going to be a problem by the middle of next year (my guess).
|
|
Depending on your roll-out date it might be worth starting with Java right
|
|
from the start. In fact, I'm investing my own time in learning Java.
|
|
I do GUI development for a living and feel my skills in X may not be enough
|
|
for the long run. Java GUI is the next big thing for people like
|
|
me.
|
|
|
|
<P>#3 is a problem. There are only a few VRML browsers for Linux
|
|
right now and I don't know much abou them. Liquid Reality is one
|
|
- it requires you have the Java runtime environment installed and working.
|
|
VRML on non-Linux is actually better supported right now, but that's probably
|
|
a situation that will be fixed within the next year (again, my guess).
|
|
|
|
<P>Now, assume you go with these two. Now you can choose your *own*
|
|
development platform. I'd pick Linux. Why? Because MS
|
|
is not being very forthcoming about their support of Java - Linux has embraced
|
|
it quite happily. I'm just getting started with Java development
|
|
so I can't tell you how to use the tools, but the Java Development Kit
|
|
(JDK), all the way up to version 1.1.3, has been ported to Linux.
|
|
There is a commercial Java IDE kit, Vibe, for Linux already.
|
|
|
|
<P>VRML is like HTML and you can write it using vi or EMACS or whatever
|
|
text editor you'd like. Eventually there will be WYSIWYG editors
|
|
for VRML, but for now it shouldn't be difficult to do by hand. In
|
|
fact, many of the current VRML texts are written from the point of view
|
|
that you <I>are</I> writing it by hand.
|
|
|
|
<P>Alternatives: OpenGL/Motif/C. This is the way I'd do it
|
|
<I>right</I> now simply because I already now Motif and C and OpenGL is
|
|
something I've been studying off and on for a few months now. I really
|
|
like OpenGL, but if you use Motif/C your application is less portable across
|
|
platforms (i.e., it's not very easy to port to MS or Macs). OpenGL has
|
|
been ported to lots of platforms, but it doesn't provide a windowing toolkit
|
|
so you have to use it with a toolkit native to your platforms (Motif/X,
|
|
MS Windows, etc).
|
|
|
|
<P>Now, this still might not address your problem because "an interactive
|
|
educational system" can encompass all sorts of display data so it's hard
|
|
to say if Java/VRML will work for you. What sort of graphics do you
|
|
need to display? How do they need to be displayed? User Interfaces
|
|
(UI's) is a big area of study that few people hear about because the hype
|
|
from the technologies you use for them gets more attention. The problem
|
|
still exists - which technology do you use? The answer - whatever
|
|
one you're most comfortable with for now. Eventually, you need to
|
|
get familiar with Java and VRML.
|
|
|
|
<P>
|
|
<HR WIDTH="100%">
|
|
<BR><A NAME="webwonderings"></A>
|
|
<BR><IMG SRC="../gx/hammel/webwonderings.jpg" HEIGHT=57 WIDTH=246>
|
|
<H2>
|
|
Adding JavaScript rollovers to Web pages.</H2>
|
|
Last month I talked about browser detection with JavaScript. Like
|
|
most Web technologies, JavaScript is new and prone to problems, even within
|
|
the applications for which it was developed - the Netscape Navigator Web
|
|
browser. In order to make the best use of JavaScript with Netscape
|
|
Browsers you'll want to make sure you understand what versions of the browser
|
|
support which JavaScript constructs. Browser detection helps you
|
|
do this.
|
|
|
|
<P>This month we'll talk about a common trick many people are using in
|
|
their Web pages today: image rollovers. An image rolllover
|
|
is an image that changes based on user input. For example, if you
|
|
look at my <A HREF="http://www.csn.net/~mjhammel/gimp/gimp.html">GIMP pages</A>
|
|
(you'll need Netscape 3.x or later for this) you'll see image rollovers
|
|
in the menus. When you place the mouse over the text for one of the
|
|
menu items, the Gallery for example, the text background changes to a light
|
|
blue or cyan color. The text is actually an image, not ordinary HTML
|
|
text. When you place the mouse over the image it is swapped out for
|
|
another image, the cyan colored version. Thats a rollover.
|
|
|
|
<P>Adding rollovers is actually fairly easy. First, you need to make
|
|
two copies of an image (we're taking a very basic approach to this - you
|
|
can actually create multiple versions of the image to be displayed based
|
|
on different types of user input). The first copy is the original,
|
|
the image to be displayed initially or when no user input is being applied.
|
|
The second is the image to be swapped in when the user moves the mouse
|
|
over the original or clicks on the image. Creating these images can
|
|
be done in any number of ways. Personally, I use t<A HREF="http://www.gimp.org">he
|
|
GIMP.</A> It's well-designed for these kind of image processing tasks.
|
|
|
|
<P>Next you need to understand how JavaScript interprets user input.
|
|
These are called events. There are number of different events that
|
|
JavaScript can recognize Not all are applicable to images, however,
|
|
nor to use with rollovers. The ones of interest are:
|
|
<BR>
|
|
<CENTER><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=3 WIDTH="70%" BGCOLOR="#FFCC00" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD BGCOLOR="#66FFFF" NOSAVE><B>Event Name</B></TD>
|
|
|
|
<TD BGCOLOR="#66FFFF" NOSAVE><B>Meaning</B></TD>
|
|
|
|
<TD BGCOLOR="#66FFFF" NOSAVE><B>JavaScript and Netscape versions</B></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>onclick</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>User clicks on an image.</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>1.0 (Navigator pre-3.x)</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>onmouseover</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>User moves the mouse over the image</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>1.0 (Navigator pre-3.x)</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>onmouseout</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>User moves cursor out from link or image
|
|
map.</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>1.1 (Navigator 3.x)</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>onmousedown</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>User presses a mouse key down but doesn't
|
|
release it.</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>1.2 (Navigator 4.x)</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>onmouseup</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>User releases the mouse button.</TD>
|
|
|
|
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>1.2 (Navigator 4.x)</TD>
|
|
</TR>
|
|
|
|
<CAPTION ALIGN=BOTTOM><B>JavaScript Events useful for rollovers</B></CAPTION>
|
|
</TABLE></CENTER>
|
|
These are all fairly self explanatory. They are all associated with
|
|
the way a user handles the mouse in relation to the image. Note also that
|
|
the event name is case insensitive. You will often see examples where
|
|
the evens are written like onMouseOver or onClick.
|
|
|
|
<P>Finally, you need to understand how JavaScript references images on
|
|
a Web page. The trick to rollovers is to update the correct image
|
|
- in some cases the image to update is not the image over which the mouse
|
|
currently rests. For example, see my <A HREF="http://www.csn.net/~mjhammel/nav-top.html">contents
|
|
page</A> where I update a central image when the mouse is placed over images
|
|
that surround the central image. That page doesn't do a good job
|
|
checking which browser is being used and as a result it doesn't work well
|
|
with non-Netscape 3.x browsers, or even 3.x browsers on non-Unix platforms.
|
|
Still, the rollovers do work right on the Linux Netscape browser.
|
|
|
|
<P>JavaScript references images as objects and as such treats them just
|
|
like any other object. Images in a document (documents are HTML pages)
|
|
are referenced using names, such as
|
|
<BR>
|
|
<CENTER><TABLE BORDER=0 CELLSPACING=3 CELLPADDING=3 COLS=1 WIDTH="350" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER VALIGN=CENTER NOSAVE><A HREF="javascript:void(null)" onmouseover="navInfo('Happy Dog, eh?', 1); return true;" onMouseout="clearInfo(0);return true"><IMG SRC="./gx/hammel/dog-1.jpg" NAME="dog" BORDER=0 HEIGHT=240 WIDTH=320></A></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER VALIGN=CENTER NOSAVE><B>document.dog.src</B></TD>
|
|
</TR>
|
|
</TABLE></CENTER>
|
|
The <I>document</I> name means the current document (page), the <I>dog</I>
|
|
name references the NAME= tag given to the above image, and the <I>src</I>
|
|
name refers to the name of the image, such as "dog-1.gif".
|
|
You'll notice, if you have an appropriate browser (I was lazy - there is
|
|
no browser detection code included!), that the above image changes when
|
|
you place the mouse over the dog. So does the text in the status
|
|
bar at the bottom of the document. Lets look at the code that handles
|
|
this.
|
|
|
|
<P>First, lets look at the image's HTML definition:
|
|
<UL><B><A <FONT COLOR="#009900">HREF="javascript:void(null)"</FONT></B>
|
|
<UL><B><FONT COLOR="#009900">onMouseOver</FONT>="mouseIn('Happy Dog, eh?',);
|
|
return true;"</B>
|
|
<BR><B><FONT COLOR="#009900">onMouseOut</FONT>="mouseOut(); return true"></B></UL>
|
|
<B><IMG SRC="../gx/hammel/dog-1.jpg" <FONT COLOR="#009900">NAME</FONT>="dog"
|
|
<FONT COLOR="#009900">BORDER</FONT>=0 HEIGHT=240 WIDTH=320></B>
|
|
<BR><B></A></B></UL>
|
|
Notice the name of the image: NAME="dog". This gives JavaScript
|
|
the object reference it needs to access the correct image. You can
|
|
also access images using a documents <I>images</I> index, but that's a somewhat
|
|
haphazard method (one I use with my contents page) and a bit harder to
|
|
use. I recommend using NAME tags for rollovers.
|
|
|
|
<P>A few other things we should note about this bit of HTML:
|
|
<OL>
|
|
<LI>
|
|
There are event handlers for when the mouse enters the image area (<B>onMouseOver</B>)
|
|
and for when the mouse leaves the image area (<B>onMouseOut</B>). We'll
|
|
discuss the values we associate with each of these in a moment.</LI>
|
|
|
|
<LI>
|
|
The event handlers are placed in an anchor with an HREF tag. The
|
|
HREF points to a JavaScript function called "void", which is a simple method
|
|
for doing nothing. In this case we want only the event handlers to
|
|
do anything and the anchor to do nothing.</LI>
|
|
|
|
<LI>
|
|
We've set the border width to 0 for the image so that no border will be
|
|
placed around the image. If we didn't do this a border would be added
|
|
that used the link and visited-link colors because the image is wrapped
|
|
in an anchor tag. This way, the image doesn't really look like a link.
|
|
Thats good, since it's not really a link to anything.</LI>
|
|
</OL>
|
|
Before we talk about the event handlers, we should take a look at the JavaScript
|
|
code:
|
|
<UL><B><SCRIPT LANGUAGE="JavaScript"></B>
|
|
|
|
<P><B><!-- Hide script from older browsers</B>
|
|
|
|
<P><B>numitems=2;</B>
|
|
<BR><B>SampleImages = new Array(numitems);</B>
|
|
|
|
<P><B>SampleImages[0] = new Image();</B>
|
|
<BR><B>SampleImages[1] = new Image();</B>
|
|
|
|
<P><B>// Establish the two image objects we want to use.</B>
|
|
<BR><B>SampleImages[0].src="../gx/hammel/dog-1.jpg";</B>
|
|
<BR><B>SampleImages[1].src="../gx/hammel/dog-2.jpg";</B>
|
|
|
|
<P><B>// Event handler called for onMouseOver event</B>
|
|
<BR><B>function mouseIn(input_status)</B>
|
|
<BR><B>{</B>
|
|
<BR><B> status = input_status;</B>
|
|
<BR><B> document.dog.src = SampleImages[1].src;</B>
|
|
<BR><B>}</B>
|
|
|
|
<P><B>// Event handler called for onMouseOut event</B>
|
|
<BR><B>function mouseOut()</B>
|
|
<BR><B>{</B>
|
|
<BR><B> status="";</B>
|
|
<BR><B> document.dog.src = SampleImages[0].src;</B>
|
|
<BR><B>}</B>
|
|
|
|
<P><B>// End of hidden script --></B>
|
|
|
|
<P><B></SCRIPT></B></UL>
|
|
For this example you are safe in placing this bit of code inside the <HEAD>
|
|
</HEAD> section of your HTML.
|
|
|
|
<P>The two event handlers call JavaScript functions. The mouseIn()
|
|
function is called to change the image when the mouse enters the image
|
|
area. As you see in the HREF tag the event handler associated with
|
|
this function is the onMouseOver event. This function has two lines.
|
|
The first takes the text passed as an argument and places it on the status
|
|
bar at the bottom of the browser. The second line replaces the image
|
|
referenced as "dog" by the second image in the SampleImages array. Pretty
|
|
straight forward, don't you think?
|
|
|
|
<P>The second function, mouseOut(), is called when the mouse is moved out
|
|
of the image area. It, too, has two lines. The first clears
|
|
the status bar and the second places the image in the first element of
|
|
the SampleImages array over the image currently in the object called "dog".
|
|
In this case, the SampleImages array's first element holds the same image
|
|
source as the original image displayed in the IMG tag in our HTML source.
|
|
|
|
<P>A few things to note about the code: I used an array to hold the images
|
|
I wanted to use for my rollover. In this simple example I could just
|
|
have easily used
|
|
<CENTER><B>document.dog.src = "../gx/hammel/dog-1.jpg"</B></CENTER>
|
|
instead. If you use an array be sure to define the storage for the
|
|
array objects. I first defined the array with
|
|
<CENTER><B>SampleImages = new Array(numitems);</B></CENTER>
|
|
I then defined the image storage for each element of the array with
|
|
<CENTER><B>SampleImages[0] = new Image();</B></CENTER>
|
|
Of course this could be done in a loop, like with a for() statement.
|
|
The definition of these objects with the "new" keyword causes JavaScript
|
|
to load the image but not actually display it. You could use these
|
|
scripts to preload images to a page so that when subsequent pages were
|
|
accessed the images could be pulled from cache immediately.
|
|
|
|
<P>The image object also contains a number of other properties, such as
|
|
the BORDER width, image HEIGHT and WIDTH, and the VSPACE attribute for
|
|
setting the vertical space around the image. By not specifying the
|
|
HEIGHT and WIDTH for the document.dog object in the functions I have assumed
|
|
the new image has the same dimensions as the old. If this were not
|
|
the case you might want to update the image dimensions in your functions
|
|
as well.
|
|
|
|
<P>Well, that should get you started. Image rollovers are kinda cool
|
|
to play with and can add a little pizazz to an otherwise drap Web page,
|
|
but be careful. Like most of the neat toys on the Web, too much of
|
|
anything can be annoying.
|
|
|
|
<P>
|
|
<HR WIDTH="100%">
|
|
|
|
<P><A NAME="musings"></A>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/musings.gif" ALT="Musings" HEIGHT=52 WIDTH=247 ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
|
|
<TR>
|
|
<TD ALIGN=LEFT VALIGN=TOP COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
|
|
SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=1 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
|
|
|
|
<TD></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD ALIGN=LEFT VALIGN=TOP ROWSPAN="3" WIDTH="50%">
|
|
<H2>
|
|
SIGGRAPH 97 Notes</H2>
|
|
For those that don't know, SIGGRAPH is the yearly conference on computer
|
|
graphics sponsored by the ACM. To be exact, SIGGRAPH is the Special
|
|
Interest Group - Graphics of the ACM and the conference is an extension
|
|
of that, but in the past few years this conference has grown into a major
|
|
exposition where all the big names in the computer and entertainment industry
|
|
show their latest wares. This year the conference was held in Los
|
|
Angeles. It was also my inaguaration into this madhouse.
|
|
|
|
<P>I should tell you that what follows is not specifically Linux related.
|
|
I will try to associated what I saw or learned with Linux as much as possible,
|
|
but in general Linux is not a powerhouse at SIGGRAPH, In fact, with
|
|
the exception of one technical course and a couple of engineers manning
|
|
booths at the show, I didn't hear anyone talk about Linux. We have
|
|
some work ahead of us to get real notice.
|
|
|
|
<P>For me, SIGGRAPH lasted 4 days, Sunday through Wednesday, even though
|
|
the conference actually ran for 6 days. I went as my vacation (sick,
|
|
isn't it) and after 4 days had been run so ragged I decided my last full
|
|
day would do something quite and peaceful - so I went to Universal Studios.
|
|
SIGGRAPH, for those who've never been, is non-stop energy drain, both physically
|
|
and mentally.
|
|
|
|
<P>My first day there I spent going through lines - at the airport, at
|
|
the car rental (my god, what a mess), and at the conference registration
|
|
booths. I had preregistered and so I only needed to pick up my conference
|
|
materials, but that took about 45 minutes. Having not been to a conference
|
|
of any kind since a trip to Interop back in 1991, I was a bit disappointed
|
|
to see no texts provided for the courses. In fact, the courses weren't
|
|
really courses, they were presentations in front of monster sized audiences.
|
|
I remember the Interop courses being a bit more personal, more like real
|
|
classes.
|
|
|
|
<P>Although I got there late, I did managed to get into the Introductory
|
|
class on OpenGL that was given by SGI staff members. It was mostly
|
|
a discussion on basic OpenGL syntax. I did manage to wind up sitting
|
|
right next to Bruce Peren's office mate at Pixar - a very nice fellow named
|
|
Jim W. (my notes didn't include his last name - hope he doesn't get made
|
|
at me). That seemed strange until I found out that Pixar sends just
|
|
about everyone to SIGGRAPH. A few days later I saw Larry Gritz but
|
|
didn't get a chance to talk to him. Like most people at SIGGRAPH,
|
|
he was in a hurry to get somewhere.
|
|
|
|
<P>The rest of the day I spent wondering around the LA convention center
|
|
looking for where other classes and events would be held. There was
|
|
a career center downstairs where people could post resumes and companies
|
|
posted job positions. Xi Graphics had a posting there, but other
|
|
than that I didn't see any Linux-related postings. By the time I
|
|
got back to my hotel it was about 9pm - and I had yet to eat that day.
|
|
One word of warning to future attendees: take snacks! Finding
|
|
food can be hard and what you do find can be awful (at least in LA by the
|
|
convention center) and you <B><I>will</I></B> need the enegy! Being
|
|
a running, I should have brought a few energy bars with me. Well,
|
|
that's a lesson learned.
|
|
|
|
<P>The next day I went to the Advanced OpenGL course, also taught by SGI
|
|
staff. This was a more interesting class to me, since it talked about
|
|
techniques a bit more than just syntax. There were some good discussions
|
|
on using environment maps (mapping an image to surface), projecting textures,
|
|
and billboarding. This last one is a cool technique I wasn't aware
|
|
of. An image is mapped onto a planar surface and that surface is
|
|
programmed to always face towards the viewer. It is sort of like
|
|
taking a photo of a tree, cutting away all of the photo except the tree,
|
|
and pasting it to a popsicle stick. The stick is then rotated so
|
|
that the photo of the tree always faces you. It simulates a 3D effect
|
|
without all the overhead of huge polygon counts for a real tree.
|
|
This technique works well for scene objects that are in the distance but
|
|
looses its effect up close. You can see billboarding effects in many
|
|
games.
|
|
|
|
<P>Another effect they covered was the creation of fire. They used
|
|
a noise function along with what are called "quad mappings" to blur regions
|
|
of the noise. They then added some turbulence and an absolute value
|
|
<CENTER><TABLE BORDER=0 COLS=1 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/flame.jpg" HEIGHT=256 WIDTH=256></TD>
|
|
</TR>
|
|
</TABLE></CENTER>
|
|
function to create veins in the fire. It turns out you can do something
|
|
similar with the GIMP by using the solid noise filter, followed by some
|
|
blurring and waves adjustments, and cleaned up with a combination of curves/color
|
|
balance adjustments (for color), and sharpening (for details).
|
|
|
|
<P>When I got home I went to visit my sister and her kids and watched them
|
|
play Super Mario Bros on their ... Sega? Anyway, having just returned
|
|
from SIGGRAPH I could see the effects they talked about in the advanced
|
|
OpenGL course. It was very enlightening.
|
|
|
|
<P>One of my reasons for going to the OpenGL courses was to get an idea
|
|
for how multimedia applications could be built for Linux. An alternative
|
|
to an OpenGL based multimedia kit would be one based on VRML. I attended
|
|
the VRML Demo SIG on Monday night and it had some very cool demos using
|
|
VRML 2.0. If based on CD-ROM this could be a very good cross platform
|
|
environment for multimedia packages (edutainment, for example). The
|
|
current drawback is that the demos required 2.0 capable browsers, but there
|
|
should any number of those showing up in the next year or so. According
|
|
to CGW (freebie that was dropped at my hotel room - very nice touch), Netscape
|
|
4.0 has the SGI Cosmo Player embedded in it now. I haven't been able
|
|
to get this to work yet, however. Since I have a 2.0 kernel installed
|
|
now I can try some of the other VRML browsers available. Maybe I'll
|
|
get to that next month.
|
|
<CENTER><A HREF="#next-column">-Top of next column-</A></CENTER>
|
|
|
|
<CENTER> </CENTER>
|
|
</TD>
|
|
|
|
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
|
|
<TD WIDTH="49%">
|
|
|
|
<P><BR>
|
|
<LH><A NAME="next-column"></A><B>More Musings...</B> </LH>
|
|
<LI>
|
|
<A HREF="more-musings.html">GIMP Tip</A> - 3D metal and plastic borders.</LI>
|
|
|
|
<BR> </TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD VALIGN=TOP NOSAVE>On Tuesday I arrived 1/2 hour early to take the 3D
|
|
Animation Workshop. I was about 20th in line of 100 or so, but somehow
|
|
managed to miss getting a little blue ticket. Despite the people
|
|
at the door having seen me there for 30 minutes waiting (before others
|
|
had showed up) I still didn't get in. I was very pissed. This
|
|
class was one of my prime reasons for my going to SIGGRAPH. Hint:
|
|
if you get in line at SIGGRAPH, make sure you check with the people in
|
|
front of you to see if you need to have some special form, ticket, or sacrificial
|
|
offering to get in.
|
|
|
|
<P>My fallback course was the GUI/Multimedia class. There really
|
|
wasn't much multimedia discussion - mostly it covered how to design GUI
|
|
intefaces. Lots of design criteria which I'd learned by fire long
|
|
ago. When they finally did get around to multimedia they talked about
|
|
the lack of standards and how most applications are reinventing GUI rules.
|
|
This was my assessment before going to the class, but it was nice to have
|
|
it reinforced by someone who studies such things for a living.
|
|
|
|
<P>Next I skipped out to Mark Kilgard's OpenGL w/Windowing systems class.
|
|
Pretty good stuff. Brian Paul talked about MesaGL a little as well
|
|
as some portability issues. Both are very nice guys - I chatted with
|
|
them a bit after the class. One thing Mark mentioned was that there
|
|
arent' any toolkits specifically built with OpenGL, which makes sense.
|
|
There is an overhead in creating widgets using OpenGL that would make it
|
|
unsuitable for most applications. Instead, OpenGL is integrated into
|
|
applications using some other toolkit, like Motif, XForms, or Tk, using
|
|
a toolkit specific OpenGL-capable widget.
|
|
|
|
<P>Later on I stumbled into the Java3D class for a few minutes. Looks
|
|
interesting but I didn't get too many details. Sun is saying a beta
|
|
release of a sample implementation of the specification is due out
|
|
in December of 1997 but the course speakers said they hoped to have it
|
|
out much sooner. They also expect that since the specification is
|
|
public and being openly developed that sample implementations from non-Sun
|
|
sources are likely to show up before the Sun release. Or at least
|
|
they expect that - they didn't have any information on any specific implementations.
|
|
At this point I haven't heard of any Java3D announcements from my usual
|
|
sources.
|
|
|
|
<P>I talked to a couple of recruiters at the career fair, mostly just to
|
|
get a feel for what companies are looking for these days. They mentioned
|
|
that the best way people can avoid getting lost in the crowd of candidates
|
|
at the fair is to submit resumes based on job postings from the corporate
|
|
web sites. If you go next year looking for work, check out some of
|
|
the participating companies job listings before heading to the career fair.
|
|
|
|
<P>First day of the show for me was Wednesday. It looked more like
|
|
a cross between a theme park ride and a disco, especially when Intel rolled
|
|
out their MMX "clean-room dancers". SGI offered a 1/2 hour demo ride
|
|
with their O2 systems. Cute demo but really didn't give a good feel
|
|
for what you were really buying. After talking to some of the show
|
|
staff and taking the demo ride I still don't know exactly what applications
|
|
come with the stock O2 box. The $4995 price offered to conference
|
|
participants wasn't bad, however. Certainly compares well with a
|
|
comparably equipped PC running NT. There is a freeware/shareward
|
|
CD available for O2 developers according to one of the engineers I talked
|
|
to, but I didn't see it.
|
|
|
|
<P>The SGI O2 demo showed me one thing which I had hoped I'd find out from
|
|
the show: how to create multimedia applications. In fact, after
|
|
the demo a White Paper was passed out explaining how the demo was put together.
|
|
Some items, like the networking that allowed real-time texture mapping
|
|
of live video, are not really possible on Linux boxes with available software.
|
|
But most of the rest is: OpenGL rendered in Motif widgets was used
|
|
for the GUI and OpenGL and VRML were used for interactive 3D displays.
|
|
OpenGL is available commercially and with MesaGL. Motif is available
|
|
commercially. I'm not certain VRML is available for integration into applications
|
|
via an API, but animation could be done using MPEG. There are some
|
|
MPEG API's, such as MpegTV's API. ImageMagick's PlugIn distribution
|
|
appears to have an MPEG library, but I don't know if it provides a decent
|
|
enough API for commercial multimedia applications.
|
|
|
|
<P>After seeing the SGI demo and the VRML SIG demos I've changed my mind
|
|
about VRML - it's ready for prime time. I wouldn't recommend it for
|
|
network applications yet, at least not Internet based applications, but
|
|
for private networks (such as kiosks) or CD-based multimedia applications
|
|
it could offer some unique possibilities.
|
|
|
|
<P>Wacom was at the show and a few of the staff didn't get defensive when
|
|
I brought up Linux (it all depends on how non-abrasively you bring up the
|
|
subject). They were even quite apologetic about not having any info on
|
|
which tablets were supported by XFree86. They now have a pad that
|
|
is actually a full-color flat screen - you simply draw on it like you do
|
|
with the tablets. Very cool, but currently runs > $2200.
|
|
|
|
<P>Cosmo Software (new division of SGI) staff were pleasant as well, mentioning
|
|
that it might be possible to provide someone with the source to port the
|
|
Cosmo Player to Linux. The player (which plays VRML 2.0 scenes) is
|
|
free for various other platforms. I guess they just need someone
|
|
to ask for it and provide some credentials to prove they could do a decent
|
|
port. Unfortunately, I'm not certain who to talk to about this.
|
|
|
|
<P>Huge crowds formed around the Apple booth right at the entrance.
|
|
One demo I caught caused an OS lockup, but for the most part people were
|
|
quite excited about the products. I don't know much about Mac's so
|
|
didn't stay long. However, like LInux, Mac is an underdog in the
|
|
OS world and I can't help but hope they survive.
|
|
|
|
<P>The one thing about this trip that stood out for me was LA itself.
|
|
It was Hot. Outside. Inside. In classes. In the
|
|
car. In the hotel. Everywhere. Hot. LA also has an ugly
|
|
downtown compared to others I've seen. It also apparently has very
|
|
few restaurants anywhere near the Convention Center. A 6 block walk
|
|
in Colorado is no big deal, but a 6 block walk in LA in August....*sigh*.
|
|
Food was a big problem for me. I hope the same problem doesn't exist
|
|
in Orlando next year.
|
|
<BR>
|
|
<BR> </TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1>submitted
|
|
resumes based on job postings from their web sites.</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/resources.gif" ALT="Resources" HEIGHT=57 WIDTH=246 ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
The following links are just starting points for finding more information
|
|
about computer graphics and multimedia in general for Linux systems. If
|
|
you have some application specific information for me, I'll add them to
|
|
my other pages or you can contact the maintainer of some other web site.
|
|
I'll consider adding other general references here, but application or
|
|
site specific information needs to go into one of the following general
|
|
references and not listed here.
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD NOSAVE><A HREF="http://www.csn.net/~mjhammel/linux/lgh.html">Linux
|
|
Graphics mini-Howto</A>
|
|
<BR><A HREF="http://www.csn.net/~mjhammel/ugu/ugu.html">Unix Graphics Utilities</A>
|
|
<BR><A HREF="http://www.digiserve.com/ar/linux-snd/">Linux Multimedia Page</A>
|
|
|
|
<P>Some of the Mailing Lists and Newsgroups I keep an eye on and where
|
|
I get much of the information in this column:
|
|
|
|
<P><A HREF="http://www.gimp.org">The Gimp User and Gimp Developer Mailing
|
|
Lists</A>.
|
|
<BR><A HREF="http://www.irtc.org">The IRTC-L discussion list</A>
|
|
<BR><A HREF="news:comp.graphics.rendering.raytracing">comp.graphics.rendering.raytracing</A>
|
|
<BR><A HREF="news:comp.graphics.rendering.renderman">comp.graphics.rendering.renderman</A>
|
|
<BR><A HREF="news:comp.graphics.api.opengl">comp.graphics.api.opengl</A>
|
|
<BR><A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A> </TD>
|
|
|
|
<TD><IMG SRC="../gx/hammel/gmuse.jpg" HSPACE=10 HEIGHT=270 WIDTH=190></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<A NAME="future"></A>
|
|
<H2>
|
|
Future Directions</H2>
|
|
Next month:
|
|
<BR>I don't know yet. Things are very hectic right now, but I'll
|
|
think of something. Thanks to everyone who has made suggestions in
|
|
the past! I do keep all your suggestions, even if I haven't gotten
|
|
around to all of them yet.
|
|
|
|
<P><A HREF="mailto:mjhammel@csn.net">Let me know what you'd like to hear
|
|
about!</A>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H4>Previous ``Graphics Muse'' Columns</H4></center>
|
|
<p>
|
|
<A HREF="../issue11/gm.html">Graphics Muse #1, November 1996</A><br>
|
|
<A HREF="../issue12/gm.html">Graphics Muse #2, December 1996</A><br>
|
|
<A HREF="../issue13/gm.html">Graphics Muse #3, January 1997</A><br>
|
|
<A HREF="../issue14/gm.html">Graphics Muse #4, February 1997</A><br>
|
|
<A HREF="../issue15/gm.html">Graphics Muse #5, March 1997</A><br>
|
|
<A HREF="../issue16/gm.html">Graphics Muse #6, April 1997</A><br>
|
|
<A HREF="../issue17/gm.html">Graphics Muse #7, May 1997</A><br>
|
|
<A HREF="../issue18/gm.html">Graphics Muse #8, June 1997</A><br>
|
|
<A HREF="../issue19/gm.html">Graphics Muse #9, July 1997</A><br>
|
|
<A HREF="../issue20/gm.html">Graphics Muse #10, August 1997</A><br>
|
|
<A HREF="../issue22/gm.html">Graphics Muse #11, October 1997</A>
|
|
<P><HR><P>
|
|
<center><H5>Copyright © 1997, Michael J. Hammel<BR>
|
|
Published in Issue 23 of <i>Linux Gazette</i>, December 1997</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
|
|
LT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./procmail.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./bench2.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
<!--startcut ==========================================================-->
|
|
</BODY>
|
|
</HTML>
|
|
<!--endcut ============================================================-->
|