New Goal, Recent Work and Looking back
The unit 6 video with Rich Barham speaking on business plans and pitching really got me thinking about what kind of app I would like to make and how to go about presenting it. As of now, I know I’m looking to make an educational app using VR and at the moment it centered on the idea of creating a collaborative virtual work space where two students could work together fabricating 3D objects that could be saved out to a server and then printed on 3D printers. Inside the space students would be working with apps like, Tilt Brush, Medium and Blocks. After they would be able to save their work to a cloud space like Poly where they could download and print out their work on a local 3D printer or send it to a print service. This is a very rough idea that I have mentioned in our weekly meeting. The challenge going foreword is spent time flushing out the idea and then talking with friends for feedback before making a sprint goal for it.
Also, looking back on my latest sprint, VR movement using the VRTK framework, I able to accomplished two of the three goals (teleportation and object interaction) within the time frame I had set. The third goal of triggering sound effects remains unfinished. I tied sound to actions but was having an issue of syncing the audio to the event action. I will revisit using audio after I’ve had some time to dig a little deeper into how audio and audio effects work in Unity. Later, I can make interactions with audio effects part of a future sprint. Having a smooth integration between visual selection (when an object is selected) and an audio selection response to that interaction, will help reinforce immersion in the environment. The core issue I encountered audio was a lack of understand how audio in Unity really works. While adding ambient sounds to an environment was pretty straight forward, get audio events to trigger at a precise moments, was a bit more involved when I was trying to match animations to event triggers. I had looked at how people had implemented character interaction with game objects in RPG games and thought I could transfer something similar to a VR environment using hand controllers but that didn’t really work.
I am also thinking about how relevant have a deep understand of Unity audio is to my overall goals. This is quite similar to my experience with Maya. It is good to have a general understanding of the basic concepts but there wasn’t any need to be building my own characters when it would be more productive to contract that out and stay focused on my core goals. I’m thinking that contracting out the audio effects would let me spend more time working on the fundamental interactions.
Recently, I have been looking back on I’ve accomplished in the program for my week 6 video reflection. I started off the course with just the basic knowledge of Unity and realized that I would need to spend some serious time learning Unity because I didn’t understand how to use assets correctly or what a prefab was. Also, I was bit clueless on using simple game object actions with scripts.
After our first app jam in week 3, I knew that I didn’t have the depth of knowledge I needed with Unity and some of the important addons its uses( Probuilder, Progrids, Maya integration, and VRTK). I also wasn’t managing my time efficiently while learning and making. Going forward, I am studying Unity using Pluralsight and Lynda. I am focused on just the fundamental training courses and their examples without going off and exploring “too much.” To keep me on track, time management is the key, and I have set up a Trello board, also use a web app called Clockify to track my time. I’ve kept it to two-hour blocks in the evenings that can be increased on the weekend depending on other commitments. By the end of the week, my goal is to have finished a Pluralsight module and have spent time building a working example in Unity. Keeping a daily rhythm, setting deadlines with the Pluralsight modules, and keeping my timeline realistic will keep me motivated over the rest of the course. Learning to use the new concepts I’ve gained in the upcoming weeks has me excited.
I have been on track with my Unity studies using Trello. I am about to start a short sprint goal of testing what I’ve learned with VRTK. I have completed a few of the tutorial videos and have successfully installed the toolkit into an example project. The challenge now is to be able to repeat the process on a new project and then tie user interactions to my own assets rather than those used in the tutorial.
The sprint will have a time frame of one-week, with the total amount of time being 6 hours. This deadline for creating a simple working environment and importing the VRTK framework to the project is quite reasonable. The only issues I foresee at the moment is having to fine tune the VRTK components to get the assets to work correctly with the framework. First, I’ll need to clone VRTK into Unity from their github repository and then setup teleportation markers around the environment and test teleporting to them. After getting movement setup, I begin getting the controllers enabled and testing whether I can interact with objects. Having practiced with the examples, I expect these two goals to easily accomplished within the time frame I have set and should a good challenge. This sprint challenge is a test of what I have learned so far and a signal that it’s time to push myself a bit harder with the Unity. I am keeping the task realistic because this approach works well for me and keeps me focused.
I set have planned to spend 9 hours split into three hour blocks during the week and have some free time on the weekend in case I have to move one of the three hour blocks to the weekend. This will be a one week sprint and I will post the sprint to my Trello board to keep track of my progress. The goal is to be able to build basic interactive environments without having to always reference my training materials which means being able to iterate quicker and start working on projects with more confidence. I believe that the goal is resonalbe and easily achiveable given the amount of time I have set for the project and my recent practice with using the toolkit. Also, the VRTK developers also have a very active Discord giving me an additional resource for help should I need it.
I will update this post with a picture from the finished sprint.
Maya and Character Rigging
Spent the weekend doing some research after getting Maya installed and finishing a few of the tutorials. Its a really amazing what you can do with this and I’ve just scratched the surface. My goal is to get a basic understanding of the building a character and rigging it. I also installed Mudbox and was interested in how you export out the files as .fbx because the files in Mudbox save as .mud. There are some tutorials with Mudbox on the sight but I think I will play with that another day. I am exploring Substance Alchemist which can extract textures form scans which is pretty cool. I need to stay focused and come back to the other Maya workflows later when I more time to dive in.
Working now on building a simple character and its going pretty well, just taking a bit of time with the back and forth of moving through the tutorials.
Update: When I started exploring Maya, I thought I could somehow find the time to learn but after working with it for a week or so realized that it was a lot harder to use than I imagined. I wasn’t able to translate the image I had in my mind’s eye into the character I created with Maya. Then something that I hadn’t realized until my adviser mentioned was that it would be better to contract out work like that, rather than to spend the time that I didn’t have and wasn’t contributing my core goal of making a virtual reality app. In hindsight, it was good to have gained a basic understanding of how Maya worked and general insight into how character movement works. Having this working knowledge provides an opportunity for team communication, but more importantly give me the knowledge needed to communicate the what I am looking for when contracting out Maya work from a freelancer.
Looking Back / Time Management
Over the past few weeks I’ve finished a Unity fundamentals course, jumped into an App Jam and started studying C#. One of the most difficult things I have encountered is managing my time correctly while working on projects but also keeping up on other course studies while balancing that against real world commitments like work.
Going forward one of my SMART goals will be setting up a bi-weekly schedule for my C# and Unity studies using a Trello board that I have set up to track short sprints for the chapters in the Pluralsight courses on Unity and C#. The chapters are usually 2.5 hours of video, along with exercises for each video that take an hour to complete. The time frame for a chapter sprint is two weeks and gives me the time to also focus on the weekly units on Canvas. Being realistic in setting deadlines for the amount of course material that I have to study will allow me achieve my Pluralsight goals and keep me moving forward. The amount of material to covered will fluctuate depending outside commitments but as long I am realistic with time should not have a problem with reaching an intermediate level in both C# and Unity by mid-September 2019. I have set aside two hours of daily study time and my present schedule this is quite doable but I will reviewing this on a weekly basis. Setting realistic goals means accepting changes need to be made to the schedule when other commitments attention.
My commitment to learning Unity will help with one of the biggest obstacles I faced with the App Jam, which was trying to get a working Unity app while learning to use the software itself. At this point after the experience, I feel a bit more confident going forward and pretty excited about using Unity. I have sat down and really looked back over how I spent my time during the App Jam, being honest and asking myself “What did you really do?” I managed to put something together but it really seemed to happen at the eleventh hour or at least it felt that way. Not having a clear idea of what I needed to do and being able to assign a realistic amount to to getting it done, had me bouncing back and forth between different parts of my project and really using my time wisely. Now that I have a basic understanding of the software and what actually goes into make a basic project, I can better plan of time. I also believe that improving my Unity and C# studies will allow me to be more productive and I look forward to the next App Jam.
App Jam Submission
Having reached 40 hours it’s time to submit my project. Looking back I can say it’s been quite a learning experience. I started out with a basic idea and quickly realized that it wasn’t going to be anywhere as easy as I had imagined. The video below shows my progress to date.
I started off with just a cursory knowledge gained from watching a few youtube “how to’s” and Unity UI basics and understand a bit of the menus. After jumping in and quickly failing, I had to look for some help on Pluralsight and Lynda. I can saw there is quite a wide range of depth to the Unity fundamentals video. I had problems bringing in assets correctly and understanding what a prefab really was. How to correct prototype primitives and add basic game object actions with scripts. Eventually I found what I need between videos, Unity forums and Google. I have to say the biggest time sink was environment setup. Dragging, duplicating and snapping all the materials together, adding the textures to the right areas of the inspector was time consuming and far longer than I had imagined it would. I did learn about the different texture types and how to tweak their appearance.
I discovered ProBuilder and Pro Grids, learned the basics of Player and NPC movement and thought about level layout a bit more. The next learning experiences were lighting and baking, overlapping UV’s and particles. Along the way learning about NavMesh, Box Collision and how to fix dropping through the world which happed quite a few times.
Getting the player controller setup and running before time ran out was my final goal. I got my character moving around the level but not after having a problem with it stuck halfway in the floor. The bit of setup seen in the movie clip was getting Cinemachine hooked up and following the player character.
Overall, it was an amazing learning experience because it pushed me to grasp the basics of building a functional “prototype”. I had work through the process in a way where each new step built upon the last. The time constraint kept me from getting side tracked with experimenting too much. Some of the bigger challenges I ran into were trying use assets that were not compatible with the version of unity I was using, not understand the parent/child relationship early on, and having problems with character animation and staying above the floor.
In the end, I own a huge debt of thanks to Unity Instructor Joshua Kinney. He was able to really explain how to get things done and what settings needed to be tweaked to get things going.
Next steps for me are looking scripting, animation and UI interactions. I also wanted to explore character creation and rigging for a better understanding of character movement. I have started two new Unity modules recommended after completing the fundamentals training.
Hack n’ Slash
Prototyping App Jam Project
This week has been about just jumping in and getting something to work. At the beginning of the week I “just jumped in” and made a mess. After seeing that some of the online tutorials I had been watching didn’t really give me a prototype the just outlined the mechanic and a basic level layout, I felt like I was back to square one.
You watch a few Youtube videos on dropping in free assets from the assets store and think, “this will be pretty easy to get something up and running that looks good”. Looking back, I knew better but allowed myself to believe it was as easy as it looked.
I’ve now put a bit of time with Unity and have a better understanding of what I can do and just what a prototype is. I had to take some time and really think about what I needed to do and how that gets fleshed out. I went back to the tutorials on Pluralsight and worked on understanding basic scripting.
At this point, the player object understands the games objects and the cursor also reacts to the game objects, this is seen in the video below. Next steps are building out a test level and adding textures. At the moment I have put in 28 hours towards the App Jam while keeping up with my other studies. I didn’t realize short 40 hours would be but I feel I can get a test level working in the next day or two.
Second Build with Scripting
Finally made it through the Unity Fundamentals training video and have started the next in the series. I had a bit of gap between starting and finishing and found myself going back over about an hour of instruction. I have rethought my original approach and the fact that I had put things off to dig into the App Jam. I need to spend some time with the Unity study, even if its just and hour to keep things fresh while playing with my App Jam project. I also had the chance to get another AR app onto my iPad that will let me place objects in camera space. For right now, I am just using a cube as a place holder. I am working on creating a prefab object to use. I’ll update the blog with my progress once I’m happy with the result.
This iteration I actually went through the process of creating a game object and using a script to give it functionality. The video tutorial was using an older version than I had installed as well as an older version of the ARKit plugin for Unity. This cause problems with using a RayCast and ARSessionOrigin. It took Googling to get it resolved. This still needs a bit of fine tuning with regards to plane detection. You can see the result below.