I am currently working on developing a program that will allow geology students to learn about and practice taking strike and dip measurements of 3D models of geological structures.The main webpage for this tool can be found at the following link:

PSU SaD Tool Homepage

 

The current version of this tool can be played in a web browser at the following link:

PSU Strike and Dip (SaD) Tool

(It is recommended that Firefox or Chrome browsers be used when running this tool)


In this post I will cover some of the steps I’ve taken to create and develop this project. Then moving forward, I will post updates and links to newer demo versions and videos of the Strike and Dip (SaD) tool project.

Step 01: The Compass

The first steps in developing a strike and dip tool were of course learning what strike and dip are, as well as how one takes these measurements. I was put in contact with a geologist named Hannah Riegel who was extremely helpful in explaining these measurements to me and directing me to additional resources to learn about strike and dip.

The primary tool used to take these measurements in the field is a compass. So, my first step was to develop a functioning compass in the Unity engine. With a quick bit of vector math and a combination of DOT and CROSS products, I was able to create a compass needle that reliably pointed north regardless of the compass body was positioned or rotated. From there I was able to create code that would track the vertical and horizontal bearing of the compass needle and convert those measurements into usable forms for the strike and dip measurements.

 

Step 02: Saving and Displaying Data

Although the compass now tracked it’s orientation and converted that information into usable strike and dip data, I needed a way to save that data off in sets so it would not get overwritten as soon as the compass was moved next. I also needed a way to display the saved data so that the user could see the measurements they had taken. I created a data window containing individual data nodes which would save and hold strike and dip measurement sets which were then displayed on the data window.

 

Step 03: Compass Control Panel

Once I had a functioning compass, I needed a way for users to manipulate it. In the field the students would simply hold the compass against a geological structure to take strike and dip measurements. But until this project gets ported over to VR, just grabbing the compass tool was not an option. So, I started developing a compass control panel which would allow user to rotate and position the compass along and around it’s X, Y, and Z axes. This first control panel contained a rotation dial for each axis, a movement slider for each axis, a toggle to switch the rotation of the compass between local space rotation and world space rotation, position and rotation reset buttons, a set of buttons to save strike and dip measurements to a data node, and a set of buttons to draw and clear lines along the vectors of the saved measurements. I found as the project progressed that many of these functions, although useful, would need to be hidden to streamline and simplify the user experience.

 

 

 

 

 

 

Step 04: Demo Rocks

Now that I had a way for users to move the compass and take strike and dip measurements, I needed to give the user something to measure. Initially I placed a few generic rock assets in the scene for testing and demoing the tool. A video of that first iteration of the project can be viewed at the link located here. It quickly became obvious that generic fictional rocks would not cut it if we were going to catch the eye of the geo science education community. We needed some models of real world geologic structures.

 

Step 05: Real World Outcrop Models

With the help of Hannah, I found some fantastic resources for 3D models of geological outcrops in the form of two websites: Sketchfab.com and E-Rock.co.uk. These websites provided me with a number of open source models of real life geologic structures from around the world to import into the SaD tool project for use as measurement examples.

Using some of these models I put together a small demo scene to test out the SaD tool and start getting some feedback from geologists and other users. A playable prototype of that demo can be played in a web browser at the link located here. A demo video of this version of the SaD tool can be viewed here.

 

Step 06: Tour Guide

As we started to receive feedback from users, we got requests and suggestions for additional features to be added to the SaD tool project. The first of these new features requested was the guided tour feature. This feature allows instructors to create preset locations around the level referred to as “tour stops”. Users can teleport to these tour stops using the tour guide menu. Instructors can use this feature to exhibit specific features of selected outcrops around the level. Each tour stop displays the name of the stop as well as a small snippet of information about that stop’s content. The tour guide also gives the user the ability to teleport to the starting location of the level, in case they wander off and get lost.

     

 

Step 07: Annotation Nodes

Instructors that tested the demo requested a way to display additional images and information around specific features of outcrops. To facilitate these requests, I added a feature called annotation nodes. These nodes are a small button that can be placed around an outcrop. When clicked, these nodes open an information panel window which can display information as text, images, or both and can be
accompanied by 3d arrows which highlight the specific outcrop feature that the information describes.

 

 

Step 08: HUD Compass Face

The next request we received was for the user to be able to zoom in on the compass face to take measurement readings more accurately. This is a concept I had started implementing in the early stages of the project, as can be seen in the first two pictures of this post. Initially I had added a dedicated camera to the compass face itself, then linked that camera’s feed to a panel next to the data window. Unfortunately, this yielded unsatisfying results, since the panel displaying the camera feed always seemed to be very grainy and low resolution. I decided instead to create a 2D copy of the compass face and attach it to the Heads-Up Display. This solution not only solved the problem with low detail, but it also opened a route to a secondary improvement to the compass itself in the form of giving the user an easy way to rotate the outer disc of the compass face. Now the user can click anywhere on the HUD compass face and rotate it, which in turn rotates the face of the compass tool as well.

 

 

 

 

 

 

Step 09: Rotation Arrows

The next improvement I made to the project was to add floating rotation arrows around the axes of the compass tool. These arrows would appear when the compass is being rotated using the dials on the control panel. Each set of arrows display the axis the compass is actively rotating around, in hopes that users would have an easier time visualizing how each dial manipulated the compass tool.

 

 

 

 

 

 

Step 10: Menus

At this point the project had grown enough in complexity that we needed a consolidated way to inform users about what features exist in the project and how to use them. So, I added a menu system to the project. The first iteration of this menu was very simple, containing a few panels of guide information. As the project evolved these menus would grow and change to reflect additional features within the project which will be exhibited later in this post.

 

Step 11: Mouse Look

Up to this point the user could navigate the environment using the arrow keys, but I started getting requests for users to be able to change the angle they were viewing the compass tool and the environment. To facilitate this request, I added a mouse look function to the project. This mouse look allows the user to change the vertical and horizontal orientation of the camera by holding down the right mouse button and moving the mouse around the screen.

 

Step 12: Ground Needle

I was informed at the point that there is normally a small secondary needle on geology compasses which always points toward the ground. This needle is very useful is taking the dip measurement. So, I added a small black ground needle to the compass tool and HUD compass which
always points toward the ground.

 

Step 13: Data Input Options

Hannah Riegel suggested I add a secondary method of inputting the strike and dip measurements to the SaD tool at this point. So far, the user would save these measurements by positioning the compass tool then pressing a “save strike” or “save dip” button which would automatically save the correct angles for each piece of data. She suggested that, although this method was great for students who were just learning what strike and dip were, this method did not develop the user’s ability to actually read the compass itself. She suggested that I add a way for the user to manually type in the angles by observing and reading the compass themselves. This is when I added the manual data input mode to the data window. In this mode, each data node would have a text box for strike and a text box for dip what the user could click on, then type in the values they observed.

Auto Fill Mode                                                                  Manual Input Mode

 

 

 

 

 

 

 

Step 14: Options Menu

I received some feedback about some users having difficulties with the movement speeds and look speeds either being too fast or too slow for their liking. I decided to add an options menu to the main menus. In this options menu the user can change the speed for their movements around the environment as well as the speed that the camera would rotate when using the mouse look functionality. I also added an option to toggle the data input mode for the data window between auto fill and manual input.

 

Step 15: Level Select

Some of the instructors I was working with expressed interest in having multiple levels available to move between within the project in order to exemplify different concepts or areas of geological interest from various outcrop locations. To facilitate this, I built a dynamic level select system and level select menu. The dynamic level select system I built would load level in alternate ways depending on the platform of the project build, since versions of the SaD tool project were potentially going to be developed on different platforms such as a downloadable PC version or a webGL version which would be playable in a web browser. Each of these platforms loads level in different ways. So, my dynamic level select system will load local build scenes from a build index when the project is built on the downloadable PC platform. On webGL builds which are playable in a web browser, the level select directs the current browser URL to the URL where the level it is loading is located anytime a new level is selected. The third capability of the dynamic level select system allows the project to open new browser windows instead of redirecting the current window. This function gets used on the credits menu page, where I have added links to the PSU CIE web page and the PSU VFT homepage. Clicking on either of these menu buttons in the project will open a browser window and direct that window to the respective websites, regardless of the build platform of the current project.

 

Step 16: Hand Samples

I was asked about the possibility of integrating hand samples of different geological specimens into the SaD project. I was told that often during geology class outings, small rock samples called hand samples will be taken from the outcrops that the group is there to study. I implemented a hand sample viewing function to the SaD project. This function allows the user to view a small 3D model of a hand sample, as well as manipulate the sample using a small hand sample control panel. This panel lists the name of the hand sample and lets the user rotate the sample around the X and Y axes. The hand sample control panel also allows the user to change the scale of the hand sample, making it larger or smaller to better observe various details about the sample.

 

Step 17: Database

In order to make the SaD tool project more flexible I created a database system for all of the 3D models and photo resources used as references within the project. This database system allows the user to search all of the project resources based on a few criteria, pick which models or photos they would like to observe, and generate a copy of that resource within the level they are working with. My hope in creating this was to make a single dynamic database level that could fit a variety of educational needs and minimize the amount of time spend building case specific levels for each model or hand sample.

Within this database the user can search by primary categories, which currently are:

– All (all resources including 3D models and reference photos)

– Models (all 3D model assets which include landscapes, outcrops, and                    hand samples)

– Landscapes (large scale 3D models covering full landscapes with multiple                    outcrops)

– Outcrops (mid-sized 3D models of individual geological formations)

– Hand Samples (small scale 3D models of individual rocks)

– Photos (2D reference images of geological formations and examples)

Users can then narrow the search further by selecting from a list of specific geological classifications or categories including carbonates, clastics, crystalline, faults, folding, sedimentary, and unconformities. I plan to add more of these types of categories as I get more feedback from geology instructors about which categories are most common and useful in educational environments.

Once the user has found a resource they would like to observe, measure, or study, they can generate a copy of that resource at specific locations within the level. A video demo displaying this SaD database functionality can be viewed at this link.

 

Step 18: 360 Images

The most common resource used in the current PSU VFTs (virtual field trips) for geology are 360 degree images of geological outcrops and study locations. So, I decided to implement 360 view sphere functionality into the SaD tool. With this functionality the user can approach a location on one of the large scale database landscape 3D models where we have been able to acquire a 360 image of the corresponding real world landscape. Once at this location, the user clicks on a small button node and is transported into a 360 degree image of that real world location. The user can then use the mouse look function to look around the 360 image. Then once they are finished viewing the image the user can click an on-screen return button to be returned to the same location on the 3D landscape model. My hope is that this mix of resource mediums will complement each other, maximizing the learning potential of the material for the user.

 

 

 

 

 

Step 19: VFT Tutorial

I have created a short strike and dip tutorial in order to take steps to integrate a version of the SaD tool into the currently existing PSU VFTs. This tutorial version of the SaD tool only has a small focused sample of the functionality of the full SaD tool project. The goal with this tutorial version is to introduce the basics of strike and dip to the user in a format that fits the feel of the existing VFT projects that the tutorial will be implemented into. A playable web browser version of this VFT SaD tutorial prototype can be played at this link.

 


New Features For The Strike and Dip Tool

(07/02/2020)

As development on the SaD (Strike and Dip) Tool continues I have added a few new prototype features to the project. In this post I will go over what these new prototype features are, why they have been added, and where we hope to go with them moving forward. To try a playable demo of these prototypes please visit the following links:

New Features Prototype Demo Link

Intro Tutorial 01 Prototype Demo Link

Intro Tutorial 02 Prototype Demo Link

 

New Features Added

The new features which have been added to the project are:

  • Right hand rule hand outlines
  • Circular camera movement for dip measurements
  • Simplified intro tutorials

Each of these new features will be covered in more detail in their corresponding section below.

 

Hand Outlines – Right Hand Rule

During development of the SaD tool I have been informed by contributing geologists that one of the most common way to teach strike and dip is a method called the “Right Hand Rule”. The right hand rule helps students learn the relationship between the strike and dip measurements, as well as how to correctly orient the compass while taking these measurements.

The concept of right hand rule is that one places their right hand on the downward sloping face of a rock formation so that their fingers point down the slope and their thumb points to the left across the slope. When done correctly, the line made from the palm to the finger tips should roughly align with the dip of the formation, while the line made from the palm to the tip of the thumb should roughly align with the strike of the formation.

In order to help students learn this concept more easily in a digital environment it was suggested that I add a hand model to the SaD tool. The hand outlines I added to the project are basic place holders for now, but they exhibit the idea of where a hand model can go in the future.

While the compass is oriented horizontally in order to take a strike measurement, a purple hand outline can be seen attached to the bottom of the compass. This model is positioned so that the thumb points the direction the compass is pointing along the strike. (hand outline for strike images below)

 

 

 

 

 

When the compass switches to a vertical orientation in order to take the dip measurement, this purple hand outline is replaced with a green one. The green hand outline is positioned so that the fingers point the direction the compass is pointing along the dip. (hand outline for dip images below)

 

 

 

 

 

 

Circular Camera Movement

While working with the SaD tool it is easy to position the camera so that it is easy to see the orientation of the compass while taking a strike measurement or taking a dip measurement. Since these two measurements are perpendicular to each other it can be very challenging to position the camera in a single location that makes it easy to see the compass during both measurements. I decided to add a circular camera movement feature to the project to help alleviate this issue.

Now while taking a set of measurements the compass locks it’s world position and changes the camera movement style during the dip portion of taking measurements. Once a strike measurement has been saved, the left and right arrow keys now make the camera rotate in a large circle around the compass tool while keeping the tool centered in the screen. This feature is designed to streamline the dip measurement process and allow the user to position the camera to view the dip measurement angle with ease. When the dip measurement has been taken, the compass tool returns to following the movements of the camera, and the camera returns to linear movements based on the arrow keys pressed.

 

Simplified Intro Tutorials

I have created two new intro tutorials for the SaD tool project. These prototype intro tutorials are aimed at introducing basic elements of the SaD tool and its functionality to the user in small and simple steps.

The first tutorial introduces the user to the rotation function of the compass tool and walks them through orienting the compass to match a few sets of simple arrows in the environment. This gets the user acclimated with how to rotate and orient the compass horizontally and vertically using the rotate compass dial on the compass control panel. (See images below)

 

 

 

 

 

The second tutorial introduces the user to the most basic concepts of what strike and dip are. In this tutorial the user is asked to align the compass with sloped faces of example cubes to teach them about strike being a horizontal measurement and dip being a vertical measurement. Toward the end of the tutorial the user gets some practice taking both measurements together as a set to start learning the relationship between the measurements. (See Images Below)