Sunday, May 17, 2020

Circuit Adventures

Hello Bloggers,

As we continued to work on our circuit portion of our project we decided that our idea of creating a circuit building sandbox area was going to take far more time than we had left. After discussing the matter with our professor he advised us to create some demos to show off Ohm's Law and have the numbers on the voltage and resistors be intractable that way the player could still learn the lesson they needed to learn by watching how the current changed throughout a circuit given different configurations. This ended up being a very useful way to explain our lesson!

In the future if we have more time hopefully we can revisit our circuit building sandbox idea and create an even better environment for the player to interact in!

Scrapped Circuits Designs

We're in the final stretch of our project! We have been working hard on creating a Circuits demo and reached some hurdles getting there.
Our first idea was to use RayCast to draw lines to act as wires, but we soon realized that this simply wasn't possible. The only thing we found to draw with the lines at all was a Debug command, which did not work with what we wanted.
We then decided to create a grid which would allow us to "snap" pieces into place in order to allow users to create their own complicated circuits. While this is theoretically possible, we found it extremely hard to actually implement. The necessary algorithms to make it work correctly were just too complex with the time we had.
We would have needed to create a data structure in order to track proximity with other aspects of the circuit that would have taken weeks to formulate and implement.
So our final solution we ended up implementing was creating four scenes that had the circuits already set up and allowing users to change the values present in order to see how different set ups changed the interactions between components.

Saturday, May 16, 2020

Bugs



Hello Bloggers!

It's been a short while since we last talked, and we believe we have a video that has summed up the interaction we have had with Unity in a perfect manner. We have just been running into bug after bug, and I thought what better way to inform those that tread after me then to give an account of the most hilarious and frustrating bugs we have faced thus far.

Our hurdles began within our demo with the legendary cannon within our Newtonian Laws lesson. This cannon was so messed up from the beginning we molded multiple cylinders, spheres, and cubes together to form its prefab. In order to originally produce proper physics when firing the cannon we tried to use quaternions. A word to the wise, don't mess with quaternion angles unless you have at least a masters in mathematics. A bug persisted in the way the angles were shown, how the angles updated in the barrel of the cannon, and how the cannonballs were fired off. It would essentially just fire balls straight up, leaving us with no cannon at all just a glorified stacker.

Then, we have the hurdles that still loom in front of us. For our menu there seems to be a problem with the line-renderer so that users are unable to toggle the functionality of buttons in the menu. This is coupled with the bug that randomly changes the line-renderer's pigment based on the location of our directional light, which we have masqueraded as a rising and setting Sun. The problems compound still if you look at the amusing video posted above. The never ending spawning of objects has plagued us a few times, but this is by far the most comical. All we simply had to do to fix this was change one small integer. It's funny how the tiniest of numbers can have the most amazing impacts.

I'm sure many other bugs await us in our journey with this application, but the most important part of development is to look at these bugs with a smile and undaunted spirit. One solution always leads to another problem, but in a way that is the beauty of programming. The things you can do will never run dry. So, hopefully if any of you are facing daunting tasks you can read this and look at programming for the beauty that it holds rather than the frustration that it causes. All in all, stay strong, and thanks for reading.

Tuesday, April 28, 2020

Menu Progress

Hello again Bloggers!

This week a main focus of our project was the menu screen. A lot of time went into its design and the functionality of it. We decided to go with a simplistic design devoid of imported assets. Copyright is a troublesome beast to tip-toe around, and the less time we can spend doing that, the more time we can spend on this project. Our menu so far consists of a few buttons for chapter selection, options, and quitting the game of course.

For our background to the scene we decided to go with a procedural skybox. This would be good left the way it is, but we decided that a regular skybox didn't look quite good enough. So for our skybox we made a material to customize the look of the skybox itself with a couple of other cool features. We added Unity's special post processing package and put it over each of our cameras on this scene as well to add a special little flair to the skybox and menu. On top of this, we added a script to the directional light that made it slowly rotate on the x axis, creating a sunrise type effect. The video below this paragraph showcases this effect.


Another brief addition we made is the line renderer onto the end of our player controller hand objects. We wanted to make it easier to see where the user was pointing while simultaneously emulating the pointing systems in most VR applications. This would help with the user's ability to click the buttons as well as make the VR experience look just a little bit nicer.

That's all for this week. Thanks for reading!

Newtonian Lesson

To move forward with our project and get something worth showing by our first sprint, we decided to focus primarily on one lesson of the many we plan to complete. Our motto is quality over quantity. So, we have one three tables set up within a VR traverse-able scene, each of which will demonstrate a simple Newtonian Law.

The first table is showcasing Newton's first law, an object will stay at rest unless an outside object puts a force upon said object at rest. This is shown through a set of blocks we have set up, which stay at rest until either you push them yourself or you throw a sphere at them.

The second table showcases Newton's second law, force equals mass times acceleration. We have a few buttons and a ball on this table. The ball will grow in mass or decrease in mass with the press of these buttons, and a third button will display a free body diagram connected to the sphere on the table. This will feature adjustable arrows based on the mass of the ball itself.

The third table showcases Newton's third law, each force must have an equal and opposing force. We have an arrow that points outwards based on how far you poke into a block, signifying an immovable wall. Though we can't properly emulate the resistance a real wall would give, our arrow symbolizes that resistance.

A fourth feature towards the back of the map showcases the three laws with projectile motion! No-one can have a fun physics environment without at least one projectile launcher to play with, so we decided to add a cannon to include a bit of fun into the learning aspects of the first lesson.

Monday, April 20, 2020

Getting Started

Getting this project started has certainly been quite the task. There turned out to be a lot more planning, replanning, scaling back, and extra ideas than we thought there may be. Also, as it turns out, there seemed to be more beginnings than one would expect as well. First, you begin by creating a new project, but then you also begin by important the assets and packages you already know you'll need, and then the last part of getting started is usually by adding a Plane to your scene for the ground.

Getting started has definitely been inhibited by the COVID-19 pandemic, however we have seen great progress! Below is just a snapshot from one of the lessons and shows a little bit about what we are trying to do to make learning fun and more immersive.


Our Project Proposal

Over the past couple of years, in-home Virtual Reality headsets have rapidly increased in quality as well as availability. With the introduction of the Oculus Rift Development Kit 1 in 2012, all a consumer would need to immerse themselves in a virtual environment was the $300 headset and a PC with adequate components. This is still largely true, but now the PC-tethered headsets provide a higher quality experience than they had before, and a number of new standalone and/or console/mobile dependent headsets exist that provide a great experience as well. Overall, VR has become more accessible and better as a whole over the last decade.

While the primary purpose for VR is gaming, there are increasing opportunities in the educational space for providing a virtual environment where students can take classes, either as a supplement or even a full replacement to an in-person based class. Our app has the potential to be a replacement to in-person classes, or could just be used as a supplement in order to foster greater interest and comprehension in the subject matter, as well as incorporated into hands-on labs to further these aims.

There are a few requirements that are necessary to implement for a working app, as well as a few Stretch goals that are not vital to the project, but would better illustrate our mission and goals for the app as an educational resource.


Requirements
  • Be as interactive as possible in order to make full use of the virtual space
  • Keep complexity of controls low to make the app easy to use, so that the user can focus on learning the concepts at hand
  • Develop for Oculus Rift, because Oculus headsets are the second most popular headsets in use; while Sony’s PSVR is the most popular headset, it is more difficult to develop for
  • Create 7 weeks of content. One week of content contains a lesson where physics concepts are introduced, a demo where students are encouraged to play with the new concept in different tangible ways, and a lab where students can perform experiments and record/analyze data
  • Add a sandbox mode with content from all of the labs strewn about to encourage an open learning environment by combining lessons.



Stretch Goals

  • Support Oculus Go, HTC Vive, or PSVR headsets
  • Add more weeks of content
  • Add online support for multiple users in the same environment
  • Develop and use our own assets
User Stories
As an educator, I want to increase engagement with my class so that they can better understand the subject matter that we go over in class in a hands-on environment.
As a student, I want to have an interactive environment where I can play with the concepts I learn in class so that I can solidify the concepts I learned, as well as to have the ability to replay the sessions multiple times in order to really grasp the material.
As an institution, we want the software to be highly accessible on a variety of platforms so we can use it throughout our educational infrastructure.

Circuit Adventures

Hello Bloggers, As we continued to work on our circuit portion of our project we decided that our idea of creating a circuit building sandbo...