Dakota Access Pipeline in Unity- Final VR Project
For my final VR project, I wanted to recreate a timeline of the Dakota Access Pipeline situation in Unity. I am a broadcast major and this issue has not been getting a lot of news coverage until recent events and I thought that it would be different and informational to recreate difference scenes of the pipeline construction and protests to give viewers a better understanding of what the issue is and what is actually going on over there.
When I began I quickly realized that I was too ambitious in my idea. With the amount of time I had and my novice abilities in Unity, what I imagined in my head was going to take a lot longer to create in Unity. I had to scale back my project from the start so I decided to do four simple scenes that would walk you through the timeline. First, the scene will start out on the Standing Rock Reservation untouched to explain who the Sioux tribe is. Second, the character will jump to the beginning on the construction of the Dakota Access Pipeline. Third, would be scenes of the protests. The character first starts in the campsite to explain why protests began, then the character jumps to the middle of the protests to see them in action. Finally, the last scene would be the current situation, where construction has temporarily stopped and a quick perspective on what the future holds.
I decided it would make the most sense to be guided through each scene by a character so the player would stay on track and hit every trigger in order. This character is also the one who will be staying each narration.
As I began my first difficulty was with the pipeline scene. The asset I found to build the pipeline has each part of the pipeline in separate pieces, so I had to put it all together piece by piece. Although tedious, this was not too difficult. But, I forgot to think about scaling. After creating the entire thing, I realized that next to the people the scale was completely off. This was my first ah-ha moment when I realized I needed to plan right now how I wanted everything to be scaled so I didn’t waste any more time. This proved very necessary when I was creating the road for the protest scene because the asset prefabs were very large compared to the rest of my scene.
I quickly became efficient in I Tween as I rigged different construction vehicles together to move along the construction site. I learned that it is easier to trigger them all together in a string of I Tween attached to one object player rather than each of the individual trucks having their own FSM.
My next obstacle was the people in my scene. I needed a lot of people and I wanted to give a proper representation of who was attending and being effected by the pipeline construction. The characters also had to be animated so I knew I would have to use mixamo. I ended up creating a set of about 8 characters in Fuse. I split them between characters I would use as police officers, members of the Sioux tribe, and other protesters, both men and women.
Some of the tips in fuse I learned was that getting around the creative cloud, you need to export as a obj as well as exporting the textures. You must put the two exports together and zip the file. This file can then be uploaded into Mixamo where you will go in and map out each character based on its joints for animations to work properly.
In mixamo I learned to never use the pack download. Each animation has to be downloaded separately. Also, checking in place is a must! One odd thing I did notice and still could not figure out is why the color of my characters’ hair changed to a grey color when they were uploaded into Mixamo, they looked fine in Fuse. In Unity, when animating the characters I remembered to set all to legacy and loop their animations everything surprisingly worked without too many glitches.
My next battle though was with the transportation. I wanted the FPSController to be able to transport between these four scenes without having to lag or make the player feel nauseous. I also was trying to avoid coding. This was by far my toughest problem. I tried doing I Tween first but the object would just glide through the terrain. I tried putting the speed on 0 but when the FPS would collide with the trigger it would just glitch until you exited out of game mode. I then tried to import this teleport asset, but after hours and many different trials I couldn’t figure out how they got it to work on the demo. I then tried Move Object in FSM, but I was getting the same results as I tween. Now maybe 3 days later I somehow tried adding an additional state to my Move Object. All I needed was to add a Trigger Exit transition after my Finished transition. I go into detail on how to do this in the student tip post I wrote which can be found here, http://www.vrstorytelling.org/tip-how-to-transport-fpscontroller-within-a-scene/ . This was my most proud moment in the project because I had never put so many hours into trying to solve one little problem and this one solution really was the essence to my project, now the controller is able to move seamlessly throughout the terrain walking through each scene.
Another difficulty I had though was with making some of the sounds 3D. I learned though that the main reason is when importing audio, each import had to have 3D sound checked off.
At this point, about every 30 seconds Unity would quit on me so I quickly learned the importance of saving after every click. I’m not sure why Unity would quit so often, but the program definitely tested my patience.
I then added narration to the main character to guide the player throughout the scene. At this point the basics were done. There are a lot more things I wanted to do with this project if I had more time. For example, I tried to download the plugin that would animate a character’s lips when audio played. I spent about 3 hours on this, but for the basic concept of my project I decided to put this on hold. I also want to add into the protest scenes more people walking about and people sharing their person reason why they are there. I think personal stories will bring more empathy into the experience rather than just news facts about the situation. I also want to add a fire being started in the protest and that be the trigger to move to the next scene.
I have a lot more I want to do, but for the basics I think it turned out well. The next task though was exporting. This is where it all went downhill. I have been working in Unity 5.3.1 and I have tried numerous times to import the Oculus Utilities Package into my scene. When I import the package 8 errors automatically come up, one saying, “Oculus Utilities require Unity 5.3 or higher.” This is very odd because I am working in a Unity 5.3 version. I went ahead and took out the FSMController leaving just the OVR Controller in the scene. I went ahead and went to build and set it to build for a PC, Mac or Standalone, checking the VR Supported box in those settings. I tried to build, but each time no matter what I do the program will start to build, but then quit and add another error saying, “Oculus Utilities require Unity 5.3 or higher.” At this point I am not sure what to do. I was able to build my scene for a Mac, which is how I created my Screencast. I am frustrated because the scene will not work within Oculus, but at this point I am stumped and can only think it may be because I am working in Unity 5.3.1 and not a newer version.
After creating this project, I can confidently say that I learned most of my skills in Unity just by messing around and trying different settings. I know there are so many more things I can do in the program and I see the potential of my project once I am able to utilize the effects I wasn’t able to get to yet. Unity is an incredible, yet frustrating program, but the satisfaction of being able to see what you created out of an empty space is well worth the frustration.