The first example showed the use of VR with an
architectural example with an 'inside out' metaphor . The purpose
of this project is to give you experience using VR with
visualization with an 'outside-in' metaphor - in this case
visualizing earthquake hypocenter data.
Again we will use OmegaLib as the VR library. You should be able
to do much of the work on your project from a laptop or desktop
computer, but you should be sure to allow for enough time to test
and refine your project in the CAVE2 and on the Rift.
Another common use of VR is to look at complex datasets where the
patterns are more obvious in 3D, for example worldwide earthquake
hypocenter (epicenter + depth) data.
To get a C on the project the user should be able to:
- Visualize all of the magnitude 6.0+ earthquake hypocenters
for 2010-2014 for the entire planet (at some appropriate
size). The user should start outside the Earth looking at the
planet, but can move inside the planet if they wish.
- Show the outlines of the continents for context
- The user should be able to rotate the visualization to see
the visualization from any viewpoint.
- Choose an appropriate depth scaling to highlight the 3D
patterns of the hypocenters (the normal scale of the planet
will not highlight these patterns)
- Zoom into and away from the visualization
- Ability to reset the view and the zoom level
To get a B you need to add ...
- Show all of the magnitude 6.0+ quakes since January 1, 2000.
- Create a menu that allows the viewer to see either the
earthquakes for the entire planet or one of 5 parts of the
planet (e.g. North America, Japan, etc) in detail by limiting
the area being drawn and showing that area in more detail.
Here is where its much easier to see how the quakes help
outline the plate boundaries
- Color the points / boxes / spheres / sprites representing
the earthquake hypocenters based on their magnitude
- Change the size of the scaling of the points / boxes /
spheres / sprites representing the hypocenters through a menu
- Change the depth scaling through a menu and show what that
depth scaling is in the scene
- Change which magnitude quakes are shown though a menu and
have some text telling the viewer what magnitudes are being
shown
- Show the outlines of the continents and countries for
context
- Be able to turn on / off the outlines of the continents and
countries from the menu
- Ability to choose to see the particular area of the planet
from above, or from the side, from a menu
To get an A you need to add ...
- Choose whether to show earthquake magnitude by color or by
size of the points / boxes / spheres / sprites from a menu
- Menu to filter which years of earthquakes are shown from
1950 to the present
- Play back the earthquakes through the given years and show
them appearing day by day. Use audio to highlight the
appearance of the earthquakes - bigger earthquakes should have
stronger sounds
- Impress Me
Also note that there is a big difference between getting something
working and getting it working well. The first is not that hard.
The second takes much more time. You are expected to have things
working well so be sure to allocate time to test out your project
in CAVE2 and on the Rift. Make sure the user can see you world
with a high enough frame rate (at least 15 fps), and that the
models do not flicker or have missing sides.
A good place to get data is from the USGS at
http://earthquake.usgs.gov/earthquakes/search/
for example you can generate a csv file with lines that look like:
time,latitude,longitude,depth,mag,magType,nst,gap,dmin,rms,net,id,updated,place,type
2014-04-01T23:46:47.260Z,-19.6097,-70.7691,25,8.2,mww,,23,0.609,0.66,us,usc000nzvd,2015-01-28T14:44:48.195Z,"94km
NW of Iquique, Chile",earthquake
You will very likely want to convert the latitude and longitude
values into X, Y, Z. You can do this as a pre-processing step or
within your code.
There are a variety of ways to get outline data for countries and
continents on different scales. There is a fairly nice shapefile
dataset at
http://thematicmapping.org/downloads/world_borders.php
which gives you the border data plus name of the region and other
data which makes it possible to get the bounding box for different
regions for the B requirements.
Then you need to convert the shapefile to something you can use in
OmegaLib and pyShp could help you there
https://github.com/GeospatialPython/pyshp/wiki
I will be holding office hours after class
in the evl main lab with CAVE2 and the rift so people will
have some time to test out your work. These sessions tend to
get very busy near the deadline so its a good idea to start
early.