Statewide Integration of CI‐Visualization

PIs and Institutions:

Donna Delparte and Rob Edsall (ISU); Nancy Glenn and Steve Cutchin (BSU); Luke Sheneman, Bruce Godfrey, and Tim Frazier (UI)

Other Investigators:

Beth Scott (UI); Eric Lindquist (BSU); Thomas Wuerzer (BSU); Keith Weber (ISU); John Anderson (UI), Post‐docs, Graduate Students and MURI participants across the three institutions

Project Description

This project launched a highly innovative, creative and cross-institutional investigation into effective Visualization strategies for ecosystem services in Idaho. This endeavor created a statewide visualization working group with participants from all three institutions and interested stakeholders and partners. Our emphasis was on developing intuitive 3D visual interfaces to enable researchers, stakeholders and the public to interactively view modeling products emerging from the MILES program.

Visualization Products

View a 3D rendering of Pocatello in 1959

Meg Tracy, Idaho State Univ

3D Visualization of the Pocatello Valley

Meg Tracy & Brock Lipple, Idaho State Univ

Future Pocatello

Meg Tracy, Idaho State Univ
Compare this future scenario with the previous two (past and present scenarios).

Boise West End (currently unavailable)

Josh Johnston, Boise State Univ
A CityEngine web scene of Boise's West End along the Connector, Main, and Idaho streets. Density of development is shown at three levels.

3-D Fernan Lake

Kevin Henry, Univ of Idaho
This 3-D visualization of Fernan Lake Village, Idaho and surrounding area demonstrates the capabilities of ESRI's CityEngine for use in SES research and communication. Analysis products such as wildfire severity and lake sensitivity analyses can be viewed in conjunction with infrastructure and development derived from existing GIS data.



Integration Tools

Matplotlib colormaps for Unity3d

Description: CubicYFcolormapShader_*.unitypackage contains a prefab of a Quadwith a customized shader capable of reading single channel float32 geotiff datasets and applying a colormap with monotonically increasing luminance. Internally the shader normalizes the float data to between 0 and 1 based on the Min Value and Max Value fields specified in the inspector. The example depicts Normalized Difference Vegetation Index maps with a range of -1 to 1 so these values are specified as the Min and Max values respectively.

GitHub Link to GitHub

Python DEM library

Description: This is a beta stage release of a Python library (using gdal, matplotlib, numpy) for manipulating raster datasets, performing gradient analyses of DEMs and producing georeferenced normal maps for Unity.

GitHub Link to GitHub

Unity3d Collider Rigidbody Sandbox

Description: This provides an example project illustrating the collider and rigidbody functionality of Unity 5. The default.unity scene contains an inverted cube (a cube with the normals reversed. Inside of the cube is a sphere representing an ionic particle (a particle with charge) The ion has a sphere collider with a physics material (Bouncy) and a rigidbody component. Together they make the ions and cube interact with the Unity Physics Engine. At start the Ions game object spawns a collection of Ion Prefabs. These ions all start with a random velocity and a positive charge. When they hit the walls they bounce and their polarity flops. If they hit an ion with an opposite charge they bond with one another by adding a FixedJoint component. The FixedJoint component also responds to the Unity Physics Engine. The joints are setup such that they will break if sufficient force or torque is applied. When the bond is broken the particles speed away from one another in opposite directions by applying forces to their respective rigidbodies that are proportional to their break force.

GitHub Link to GitHub

Unity3d ListView User Interface

Description: Here's a demonstration of a listview for Unity's new UI. Provides a sortable list view interface for Unity's new UI system. The columns are type aware such that the numerical values, datetimes, and timespans can be intelligently sorted. The row selection is configurable such that one, many or no rows can be selected using mouse clicks or shift+click for selecting multiple rows. The manager exposes an OnSelectionEvent to which other scripts can subscribe.

GitHub Link to GitHub

Unity3d Procedural Terrain

Description: This tool contains a static ProceduralTerrain class for building Unity Terrain's with a bump mapped basemap texture (no detail maps). The ProceduralTerrain class also includes functionality for building a Texture2D normalmap from a 2d array of surface heights. The class a static method for reading a single channel 32bit Geotiff to a 2d array of floats. See the ProceduralTerrain\Tests\tests.unity scene for usage.

GitHub Link to GitHub

Unity3d SimTimeControls

Description: SimTimeControls.unitypackage contains a prefab of a UI Panel for representing and controlling time. The time control functionality is primarily intended to aid in the visualization of biophysical processes (e.g. a hydrology model of a watershed). Such biophysical models are discrete time models with "simulation steps" at equal intervals throughout the duration of the model. A TimeSlider component is attached to a Unity 4.6+ UI Slider gameobject. The TimeSlider component provides a public interface for controlling whether or not the slider is playing (running through time) and for setting the playback speed relative to wall time. The TimeSlider component also exposes public properties conveying the current simulation step and simulation time.

GitHub Link to GitHub

Unity3d SlideProjector Shader

Description: SlideProjector.unitypackage contains a prefab of a Projector object with a customized shader capable of projecting animated or static textures onto surfaces. The animation renderer alpha blends between frames. The projector is intended to display thematic color maps on the terrain and is oriented towards the ground. The x, z position corresponds to the center of the projector. The projector is configured with an orthographic projection. The "Orthographic Size" specifies the radius. For more details see:

GitHub Link to GitHub

Unity3d SolarLunarTracking: C# library for solar tracking

Description: The SolarLunarTracking.unitypackage package for Unity 5 provides astronomically accurate solar and lunar tracking. The tracking is used to position lights and objects representing the sun and moon. The color temperature of the sun light is adjusted as a function of elevation. This project depends on the SimTimeControls package published by the VTL. To use this package first add the SimTimeControls prefab to your scene. Then place the SolarLunarTracking prefab in your scene. Position the prefab such that it is centered on your terrain. In the inspector specify your location and UTM timezone in the fields provided under the "Solar Lunar Tracking Geolocation" component of the SolarLunarTracking GameObject. In your lighting settings set the SolarLunarTracking/Sun/Light as the Sun. (Unity seems to forget this. If you can't see the Sun double check this.) Make sure the clipping distance of your main camera is beyond ~8000 meters to ensure the moon is visible. Or move the Plane under Moon to within your viewing range.

GitHub Link to GitHub

Unity3d Trend Graph UI

Description: This tool implements a UI trend graph display for single variable timeseries. Create a Canvas and add the TrendGraph Prefab to your project. The TrendGraph is dynamically resizable so you can have it stretch or anchor with a fixed width and height. You can also adjust the scale on the TrendGraph and all the elements should scale correctly. To add timeseries data records get a reference to the TrendGraphController, then just call the add method and pass it a DateTime and float value. The rendering should take care of itself. If you need to procedurally set the public yMax, yMin, Timebase, and Value fields call OnValidate to set the text.

GitHub Link to GitHub

Unity3d Wide FOV CameraRig

Description: Prefab Camera Rig for a 135 degree field of view comprised of three 4:3 projectors with the left and right screens oriented 45 degrees from center. This project also contains a modified first person controller adapted for the camera rig.

GitHub Link to GitHub