That Donut Tutorial

I’ve been working on bringing in my 3D modeling skills up to date. This tutorial by @blenderguru is definitely one of the most thorough I have seen. I rarely had to back up and say “What did he just do?!?” Which seems to be a theme with most Blender Tutorials. Especially for those who first learned 3D in a program without Blender’s insane number of hotkeys.

Skills touched on in this tutorial are:

  • Basic modeling
  • Sculpting
  • Shading including procedural shading
  • Using geometry nodes
  • Lighting
  • Animation
  • Rendering

Once the png sequence was finished, I imported it into Adobe Premier and created the titles, added the music and synced the animation to the music.

Butterfly Game Planning

Game Purpose: Allow students to learn about cost/reward in foraging for butterflies.

Planned Features:

  • Butterfly flies is able to change directions and come to rest. ✓
  • Wing flap rate changes to give the appearance of randomness Wing flap rate changes based on behavior. ✓
  • Butterfly can come to rest on objects and will slow wing flap when it does ✓
  • Birds occasionally try to eat the butterfly –Level 2
  • Energy drains from the butterfly during flight ✓ This works bun needs to be refined.
  • Stopping on flowers adds energy
    • Different flowers give different amounts of energy ✓ This works, but needs to be refined.
      • Purple flowers are preferred, then red, last white
      • Clustered flowers preferred, then daisy-like, large single flowers last
      • http://dev-www.amnh.org/Explore/Resources/Young-Naturalist-Award-Winners/2011/Butterfly-Buffet-The-Feeding-Preferences-of-Painted-Ladies
    • Stopping too long increases chance that a bird will come — Level 3
  • Being in sunlight warms the butterfly and they fly faster for the same energy cost — Level 4
  • Being in shade lowers speed.
    • Maybe changes based on time of day?
  • Goal is to get to a surplus of energy so that they have enough energy to mate-
  • Need to add win screen and death screen
  • Need to add instructions

Stretch Goals

  • Additional levels
    • Find a mate
    • Laying eggs on the plants that help with survival

State of the Game 4/8/21

4/12/21 Update

This week I was able to get the animation to change based on the player behavior. The butterfly flaps faster when flying up, and slows when there is no horizontal movement. I tweaked the gravity settings as well. I added in the two most remote backgrounds and scripted them to move at different rates (parallax) depending on which direction the butterfly is flying. Some more tweaks will be needed to the speeds once all the elements are added in. The backgrounds were painted by me in Adobe Fresco for the iPad.

4/17/21 Update

Several new features have been added. I’ve added in a new midground that also parallaxes. I’m not thrilled with the way the transparency is appearing, and plan to work on it more later. There is an energy/health bar in the upper right hand corner. Flying depletes energy, flying upward not only makes the butterfly flap faster, energy is depleted faster. Flowers have been added that the butterfly can land on. I’m not sure that these will be the final images. I am working on painting some images of my own… we’ll see how that comes out… Landing on a flower starts to increase the butterfly’s energy bar. Some flowers give more energy than others. A neat detail is that if the butterfly lands on the flower from above, they will not pass through the flower, but they can still pass through the flower from below, allowing them to then land on the upper side.

5/3/21 Update

The watercolor background has been abandoned. All flowers have been implemented with differing nectar values and landing zones. Random spawning of both grass and flowers has been added. It took a surprisingly long time to get everything to spawn in the correct locations, and the method for creating new items could probably be streamlined. Next up is to implement death and victory screens. After that predators need to be added, and maybe competition from other butterflies?

Teamworks Udacity VR Challenge

Last month I completed my first Udacity Teamworks Challenge. It was a fantastic experience. I worked with people from around the world, and we produced a fun little app.

The Team: Team Crunch

Pedram Haghzaban- Network Engineer, Purchase Coordinator in Houston, Texas, USA
Julie Stubbs- Distance Learning Specialist, Burlington, North Carolina, USA
Alina Kadlubsky- Art Director, Digital Designer, Hamburg Germany
Vikas Rajput- Designer, Game Developer, Gandhi Nagar, Gujarat, India

The Platform: Google Cardboard

The Theme: Change

This was a challenging and fun collaboration. Since the team was spread across the world we often had to work asynchronously. We started by brainstorming many ideas. Some of them, such as a focus on metamorphosis, were culled quickly in order to be able to fit into the time-frame allotted. We were able to have one live meeting early on where we hammered out our final ideas. There was some debate about whether to create an VR experience or a game. We settled on creating a maze with a collection mechanic. Collecting the pieces would cause changes in the sculpture at the center of the maze, culminating in a fireworks display when all the pieces are collected.

The Demo

Perspective Sculptures

This month I am taking on a Udacity Teamworks project. The theme for this project is “change.”
During the brainstorming sessions, I kept going back to the idea of perspective sculptures,
which have always fascinated me. I decided to try experimenting with the medium.
I don’t know if we will end up using it in the final project, but I am still fairly happy with the results.

Unity/VR Capstone Walk Through and Final Reflections

It’s official! I have completed my capstone project and the Udacity VR Developer Nanodegree!  Overall, I am pleased with the results. I feel like I have learned a great deal. The project did not live up to my internal vision. This is not surprising. As my husband says, I always want to start with a “master crafted” project. In this case I had hoped to be able to create a more beautiful environment with good bloom effects and really evoke a sense of peaceful serenity. What I got instead were graphics reminiscent of MMORPGs several iterations back. Some of this is due to limitations of the VR system. Having to maintain 90 frames per second, puts quite a bit of pressure on computation and Unity’s built-in terrain and vegetation system is not as light as it could be.

Before finishing up this as a finished game, I’d like to see if I can optimize the resources some in order to create a richer visual environment.

Unity/VR Capstone Walk-in-Place Mechanic

The major development work for my Udacity VR Developer Nanodegree capstone was in developing a walk-in-place mechanic for the HTC Vive. I have previously tried out an arm swing mechanic that I did not care for, and induced nausea in my husband. To begin I did one of the things I do best: collect data! (I will always be a scientist at heart.)  I had decided that I did not want to require the use of controllers for the walk. This would free them up for other uses. In order to collect data on the headset, I wrote a simple reporting script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class Reporting : MonoBehaviour {
    string path = "Assets/Logs.txt";
    Vector3 current;
    Vector3 previous;
    Vector3 delta;
     // Use this for initialization
    void Start () {
        
        StreamWriter writer = new StreamWriter(path, true);
        writer.WriteLine("transform x, transform y, transform z, delta x, delta y, delta z");
        writer.Close();
     
        current = transform.localPosition;
        previous = transform.localPosition;
     }
    
    // Update is called once per frame
    void Update () {
        //Write some text to the test.txt file
        StreamWriter writer = new StreamWriter(path, true);
        current = transform.localPosition;
        vel = (current - previous) / Time.deltaTime;
        writer.WriteLine(transform.localPosition.x + ","+ transform.localPosition.y+ ","+ transform.localPosition.z + "," + delta.x + "," + delta.y + "," + delta.z);
        writer.Close();
        
        previous = transform.localPosition;
    }
}
This collected a ton of data. I had several people wear the head and walk in place. Then I started analyzing. I graphed movement on each axis against each other axis:

X vs Y

X vs Z

Y vs Z

Then I graphed each position vs time:

X

Y

Z

 

I decided that I didn’t want to use straight transform data as it was fairly volatile, especially if the player wasn’t walking exactly in place. I had also collected a change in position over subsequent frames.

Delta X

Delta Y

Delta Z

Based on this data it seemed like delta x would be the best measurement to base a step detection algorithm. I created an algorithm that detects the change of delta x from a negative value to a positive one. Each of these is assumed to be a step. What I actually found when I implemented this was that it worked beautifully… unless the player turned their head rapidly from side to side. Since I wanted users to be able to look around during the experience, this wasn’t going to work. Fortunately, it did work when applied the the delta y variable. This had the added advantage of allowing users to simply bob their heads if they didn’t want to actually walk, while still allowing them to look around.

The second part of walking was to move the player each time a step was detected. I opted to use one of the controllers as a forward pointer, allowing the player to look around while walking. The movement of the player is a bit jerky, but I found that this was less likely to cause VR sickness in the users than if the movement was smoothed. In a future iteration I would both like to be able to calibrate the step detection threshold for each user and allow the user to control the degree to which movement is smoothed out.

Capstone Scope Reduction

For my capstone project I wanted to create an immersive experience and experiment with Unity’s terrain building features. The emotional theme for this game is “serenity”. I settled on a simple step counting game where users could explore an environment and by “spending” accumulated steps, they can add features to the environment.

Features and Dependencies:

3D Models + Assets

  • Landscape models– Complete
  • Vegetation- I would like to create a beautiful scene with grass and trees and atmospheric effects, but I am not sure how much I can push the envelope an maintain a good frame rate.
    • I was able to create a reasonable scene, but it did not fully live up to my hopes. Vegetation had to be limited to maintain frame rate.
  • Water effects– Complete
  • Pastoral village– Complete, though again, I limited the density of models to maintain frame rate.
  • Skybox– Complete
  • Thematic Music–Complete
  • Environmental Sounds complete
  • Animals– I had hoped to add a flock of sheep and sheep dog to the scene, but ran out of time. I did include a flock of birds.
  • Day Night cycle with blended skybox.– I was able to create a day night cycle but ran out of time to create a blended skybox. Without that, the day night cycle didn’t look very good, so I have disabled it.

Game Loop

  • Walk in place algorithm– Complete
  • Calibration phase to set step sensitivity–Removed
  • Purchase mechanic–Complete
  • Flocking algorithm–Complete
  • Navigation mesh–not necessary

 

Planned Achievements

Fundamentals:

  1. Scale achievement: Trees, rocks and buildings appropriately scaled (100)
  2. Animation achievement: Create animation for bird in bird flocks (100)
  3. Lighting achievement: Use a mix of baked and real-time lighting, sun is baked, torches are real time (100)
  4. Locomotion achievement: Develop walk in place mechanic (100)
  5. Physics achievement: Water effects utilize physics, the player is kept on the terrain using gravity. (maybe throwing stick for a dog?–removed) (100)

Completeness:

  1. Gamification achievement: Player purchases environment enhancements using steps (250)
  2. AI achievement: Birds will flock when scared out of tree. (250)
  3. 3D Modeling achievement: Create low poly bird model (250)

Challenges:

  1. User Testing achievement: (250)x2