| Jan. 9, 2005
|Updated to the Epoch 2005 World
Magnetic Model used for computing magnetic offset from true north.
|Added a method to VH Editor for
resampling a DEM at different resolutions.
| Sept. 18, 2004
|Added a model of the Earth's magnetic
field used to estimate the offset from true north that a magnetic compass
would show. The magnetic offset for a location is shown when the "cross-hair"
tool is used to click on the 2D map. Also, in the 3D view, there are
now a pair of buttons above the compass strip that toggle between true heading
and magnetic heading.
|Added a pop-up menu to the 2D map
view that can be used to move the 3D view point to any position on the 2D
map. The pop-up menu can also be used to zoom in or out of the 2D map
|Added a graphic that displays the
current 3D view window's position and view direction on the 2D map.
|Changed the button used in combination
with the magnifying glass tool to zoom out from "Control" to "Shift".
This is more standard and does not interfere with the pop-up menu functionality
on systems with a single button mouse.
| Aug. 4, 2004
|First public release of the
Virtual Hiker project. Includes code for both Virtual Hiker and VH
Editor. Includes binaries for VH Editor only. This is a pre-beta
release. Probably has bugs and definitely has missing features.
The idea for Virtual Hiker was born in either late 1994
or early 1995. At that time, I lived near Seattle, WA and hiking
was a big part of my life and the lives of many of my friends. Our
days jobs were on the rocks, so JW and I (names concealed to protect the
innocent) began to dream of somehow combining our love of hiking with our
careers -- and thus the idea of writing an electronic hiking guide was born.
Since I had experience with 3D graphics programming, the idea quickly morphed
into a 3D mapping program tied to a hiking information database.
The 1st prototype for VH was created in 1995, programmed in C, on a
Macintosh IIsi computer (25 MHz, 68030 processor, 4 MB of RAM!). This
was in the days before OpenGL was commonly available and hardware accelerated
graphics was a hot new item that my old computer didn't have. As a
result, this first prototype had a custom written 3D graphics engine and
extremely primitive graphics quality by today's standards. But, you
could recognize Mt. St. Helens and rotate the model around if you were patient
with the redraw time (30 seconds to 1 minute per frame as I remember).
In 1996, I got a new Power Macintosh 9600 with hardware accelerated
graphics. OpenGL still wasn't available on Macs, but Apple introduced
QuickDraw3D which was a ground breaking high level 3D graphics scene graph
system (like many things at Apple, years ahead of it's time). I ported
the VH prototype to QuickDraw3D and generated the 1st interactive low resolution
texture mapped images of Mt. Rainier (rendered at about 5 frames per second).
I also incorporated other Apple technologies at the time such as QuickTime
for animations of 3D models rendered in specialized rendering software (VistaPro).
During the summer of 1996, my friend JJO came up with the name "Virtual
Hiker" which has stuck ever since.
In late 1996 through early 1997, I finally cracked the USGS's SDTS
file format used on Digital Elevation Map (DEM) and Digital Line Graph
(DLG) formats and began to read in this widely available DEM and DLG data
and the 2D mapping improved (before this, I was depending on a few old ASCII
format DEM's that I scavenged off of public FTP sites that I found).
The database portion of the original idea was floundering (I know nothing
about databases) and the C code for the mapping program was becoming unbearably
complex. At the same time, my day job became busier and Virtual Hiker
fell on hard times.
In late 1997, I discovered Java. I saw the light and I haven't
wasted my time writing a C program since 1998. Over the next few
years I wrote a number of useful engineering programs in Java, but did almost
nothing with Virtual Hiker.
By 2000, I had moved to Southern California and, partly because I missed
Seattle, I began working on porting Virtual Hiker to Java. The program
was vastly simpler in Java than it had been in C (where a majority of
the code handled things that are automatic in Java such as memory management
and exception handling). I quickly implemented code for rendering
DEM's, DLG's and even DRG's. I then used JNI to gain access to the
SDTS reading library code from the USGS. All that remained was getting
back the 3D graphics. By this time I had a 350 MHz Blue & White
At the time, Java3D existed on SGI's and would soon be available on
Windows. But my primary target platform was MacOS, and Java3D was a
long way off on that platform (it finally appeared in late 2003).
Also, Java3D, which has a hauntingly similar API as Apple's now discontinued
QuickDraw3D, didn't look like it was going to give me the rendering flexibility
and performance that I needed. So, I began to look at other options.
At the time, the only realistic option was GL4Java.
So, in 2001, I began researching terrain rendering algorithms.
After trying out a few, I settled on developing a Java implementation of
the high performance GeoMipMapping
algorithm that used GL4Java to gain access to OpenGL. I believe
this is the 1st Java implementation of this algorithm and is the core
of my terrain rendering code. The GeoMipMapping algorithm written
in Java, combined with GL4Java on a 350 MHz G3 could easily render very
large terrains at 20-30 fps.
After this major breakthrough, I made my first pitiful stab at doing
the database integration that we always dreamed about, but database programming
is not my thing and my proof-of-concept implementation is lacking in many,
many, many ways.
In 2002, I moved to Northern Alabama and started a new day job.
Virtual Hiker again went onto the shelf and fell into disrepair.
Finally, in early 2004, I decided that obviously I'm never going to
be able to make much progress on Virtual Hiker myself and it's time that
the code be made available to others to play with if they want. So,
I decided to publish the code on SourceForge.net. Before doing that,
I cleaned up some of the really embarrassing code and made a few
minor improvements and bug fixes.