Walkthrough Video : Lighting, Effects and Cinematography.

So here we are at the end of a challenging but hugely engaging a fun journey and now we have to represent the ‘best vision’ of the project as a walkthrough video (cut and edited)

The project has taken many twists and turns along the way. Both the narrative, purpose and technical requirements have changed over time.

The project began as a standalone PC adventure app with all the processing power available to create high quality material maps, geometry and lighting.

After being gifted a gear VR, the project was converted to mobile VR app which meant that a great deal of optimisation was required and, after reviewing the documentation, I decided to rebuild the project on Unity 2019.2.14. This version was on the tipping point between using gear VR and oculus go devices. I first used the Oculus plugin then the Oculus integration plugin but couldn’t update to the new XR Integration. In February support was dropped for gear VR and so I traded the HMD and bought an Oculus Go. Oculus Quest headsets are globally currently in short supply.

I’m currently waiting for Unity to launch the next LTS (Long Term Support) so that it is stable enough to develop for Oculus Quest (when I can get one) but that’s for another day 😀

In regards to the production of the project. I followed the Unity mobile VR best practice guidelines I decided to do the following:

✔️Opt for low poly models where available.
✔️Replace the Labyrinth walls with simpler geometry
✔️Replace multiple materials with one central material from which multiple objects could draw.
✔️Replicate and reuse models where possible.
✔️Remove all lighting and effects and examine the alternatives.

To replace lighting in the scene I was inspired by the way in which Quill approaches lighting. Quill software does not have a lighting function and so all lighting in the scene is literally painted with light.

Copyright Zeyu Ren 
Wired available to view here https://vimeo.com/308957829
I also removed multiple material maps to limit draws on processing these so I created a painted light, multi-material. 
Sarra Hornby ©️ All Rights Reserved 
Together with reusing objects that were low poly, this really reduced the file size and processing load. Various analyst is were run and it seemed to solve the problem of converting from a Standalone Windows app to Mobile Vr app. 
All good. 
Except now I wanted to present a ‘best version’ of my concept and so decided to rebuild the app so that I could add effects, lighting, animation etc without the constraints of Mobile VR. However, I know that when unity launches its next LTS and I can get an Oculus Quest I will convert the project back to mobile VR. 
Basically, I want to find a middle ground, and have the best of both worlds…
So, I rebuilt the app by doing the following: 
✔️ Unity 2018.4 LTS as it is the most stable version of Unity. 
✔️ lit multi-material map
✔️ low poly geometry 
✔️ Higher poly labyrinth with more rooms. 
✔️ Animated objects
✔️ Animated Agents 
✔️ NavMesh and Navemesh agents 
✔️ 3 point Directional Lighting for the environment 
✔️ Multiple Point Lights 
Building for PC with a potential conversion back to Mobile VR means that I need to be constantly aware of processing load and how the changes I make will impact on the device performance while also thinking about how easy it will be to remove the effects at a later date. 
With this in mind, I decided to revisit cinematography to add cameras and camera tracking to my scene. Unity Learn (which is currently free for 3 months .. which is actually one of the best things to come out of this pandemic as well as an increased interest in VR) had a number of interesting and informative web pages and videos to follow. 
Timeline 
Cinemachine 
Post processing 
I also followed the Linked In Learning course, Cert Prep: Unity Materials and Lighting (including post-processing) 
Next Steps: 
🔲. Complete small fixes to the scene. 
🔲  Add post processing to the player camera. 
🔲. Add effects that mimic ‘papery’ effects such as grain and soften shadows etc (Use paper models as a reference) 
🔲. Add effects that mimic ‘stop-motion animation’ camera movement (if possible) 
🔲. Record first walkthrough and identify key shots 
🔲. Create a first draft animatic (for Al to review if possible) 
Note: 
Regarding the second part of the assignment, I need to read through all blog posts and identify key moments in the project development as well as key images (HD). 

Walkthrough Video : Lighting, Effects and Cinematography.

So here we are at the end of a challenging but hugely engaging a fun journey and now we have to represent the ‘best vision’ of the project as a walkthrough video (cut and edited)

The project has taken many twists and turns along the way. Both the narrative, purpose and technical requirements have changed over time.

The project began as a standalone PC adventure app with all the processing power available to create high quality material maps, geometry and lighting.

After being gifted a gear VR, the project was converted to mobile VR app which meant that a great deal of optimisation was required and, after reviewing the documentation, I decided to rebuild the project on Unity 2019.2.14. This version was on the tipping point between using gear VR and oculus go devices. I first used the Oculus plugin then the Oculus integration plugin but couldn’t update to the new XR Integration. In February support was dropped for gear VR and so I traded the HMD and bought an Oculus Go. Oculus Quest headsets are globally currently in short supply.

I’m currently waiting for Unity to launch the next LTS (Long Term Support) so that it is stable enough to develop for Oculus Quest (when I can get one) but that’s for another day 😀

In regards to the production of the project. I followed the Unity mobile VR best practice guidelines I decided to do the following:

✔️Opt for low poly models where available.
✔️Replace the Labyrinth walls with simpler geometry
✔️Replace multiple materials with one central material from which multiple objects could draw.
✔️Replicate and reuse models where possible.
✔️Remove all lighting and effects and examine the alternatives.

To replace lighting in the scene I was inspired by the way in which Quill approaches lighting. Quill software does not have a lighting function and so all lighting in the scene is literally painted with light.

Copyright Zeyu Ren 
Wired available to view here https://vimeo.com/308957829
I also removed multiple material maps to limit draws on processing these so I created a painted light, multi-material. 
Sarra Hornby ©️ All Rights Reserved 
Together with reusing objects that were low poly, this really reduced the file size and processing load. Various analyst is were run and it seemed to solve the problem of converting from a Standalone Windows app to Mobile Vr app. 
All good. 
Except now I wanted to present a ‘best version’ of my concept and so decided to rebuild the app so that I could add effects, lighting, animation etc without the constraints of Mobile VR. However, I know that when unity launches its next LTS and I can get an Oculus Quest I will convert the project back to mobile VR. 
Basically, I want to find a middle ground, and have the best of both worlds…
So, I rebuilt the app by doing the following: 
✔️ Unity 2018.4 LTS as it is the most stable version of Unity. 
✔️ lit multi-material map
✔️ low poly geometry 
✔️ Higher poly labyrinth with more rooms. 
✔️ Animated objects
✔️ Animated Agents 
✔️ NavMesh and Navemesh agents 
✔️ 3 point Directional Lighting for the environment 
✔️ Multiple Point Lights 
Building for PC with a potential conversion back to Mobile VR means that I need to be constantly aware of processing load and how the changes I make will impact on the device performance while also thinking about how easy it will be to remove the effects at a later date. 
With this in mind, I decided to revisit cinematography to add cameras and camera tracking to my scene. Unity Learn (which is currently free for 3 months .. which is actually one of the best things to come out of this pandemic as well as an increased interest in VR) had a number of interesting and informative web pages and videos to follow. 
Timeline 
Cinemachine 
Post processing 
I also followed the Linked In Learning course, Cert Prep: Unity Materials and Lighting (including post-processing) 
Next Steps: 
🔲. Complete small fixes to the scene. 
🔲  Add post processing to the player camera. 
🔲. Add effects that mimic ‘papery’ effects such as grain and soften shadows etc (Use paper models as a reference) 
🔲. Add effects that mimic ‘stop-motion animation’ camera movement (if possible) 
🔲. Record first walkthrough and identify key shots 
🔲. Create a first draft animatic (for Al to review if possible) 
Note: 
Regarding the second part of the assignment, I need to read through all blog posts and identify key moments in the project development as well as key images (HD). 

Fixed 22/04/20

Done
✔️Violin skeleton seat needs moving back.
✔️Controller information needs embedding in Scene (on paper grass ?)
✔️Loop violin player
✔️Caravan would look better if coloured.
✔️Does the player need a footsteps sound?
✔️Enlarge bounding skeleton head
✔️Is there a poetry piece missing after ‘the rest that represent joy and sin?
✔️While folly poetry piece needs moving forwards a little.
✔️Slow heart dice as it’s too fast
✔️Slow and reverse flower growing
✔️Our words poetry piece need moving to the right a little.
✔️Ringmaster character needs placing at fairground entrance
✔️Change UV on fairground worker character as too bright.. blend to stall.
✔️Change UVs on fairground entrance doors.
✔️Light beneath alien death character
✔️Add lights to trap doors red and blue
✔️Fix fall off spiral staircase.. needs to be wider (Blue)
✔️Add cards to hole 
✔️Add Lights and check levels in spiral tunnels


Next Steps 
🔲. Sound at caravan room would be nice – Sound
🔲. Drum beat animation would be nice.. can we add sound here? – Animation
🔲. Add sly mouths into room.- Animation
🔲. Need white box room populating.. skeleton band? Animation 
🔲. Add copyright free music to alien death – Don Giovanni death scene music-.Sound
🔲. Add mystic placeholder – Image
🔲. Well done sign trigger pop up and coins set back to zero at the end – Mechanic.

PC Fixes

The following items have been identified as issues that should be fixed prior to capturing the walkthrough video .

🔲. Violin skeleton seat needs moving back.
🔲. Controller information needs embedding in Scene (on paper grass ?)
🔲. Loop violin player
🔲. Sound at caravan room would be nice
🔲. Caravan would look better if coloured.
🔲. Does the player need a footsteps sound?
🔲. Enlarge bounding skeleton head
🔲. Is there a poetry piece missing after ‘the rest that represent joy and sin?
🔲. While folly poetry piece needs moving forwards a little.
🔲. Drum beat animation would be nice.. can we add sound here?
🔲. Add sly mouths into room.
🔲. Slow heart dice as it’s too fast
🔲. Slow and reverse flower growing
🔲. Our words poetry piece need moving to the right a little.
🔲. Need white box room populating.. skeleton band?
🔲. Ringmaster character needs placing at fairground entrance
🔲. Change UV on fairground worker character as too bright.. blend to stall.
🔲. Change UVs on fairground entrance doors.
🔲. Light beneath alien death character
🔲. Add copyright free music to alien death – Don Giovanni death scene music.
🔲. Add cards to hole
🔲. Add lights to trap doors red and blue
🔲. Fix fall off spiral staircase.. needs to be wider (Blue)
🔲. Add mystic placeholder
🔲. Well done sign trigger pop up and coins set back to zero at the end.
        Add Lights and check levels in spiral tunnels

Add in any additional comments from user feedback.

Scripts

Sliding Doors
https://youtu.be/nfV45mpskRI

1. Create Doors (no gravity add kinematic)
2. make walls static
3. Create empty object as Doors
4. Add Box Collider and set size
5. Add animation controller called doors
6. Create Idle animation
7. create open/close animations for doors on same animation.
8. On animation controller create two triggers one open and one close
9. Idle/Open and closed animations should be in the controller already.
10. add transitions from idle to open to close back to idle.
11. ensure transitions are set to trigger open and closed respectively.
12. ensure animations are not looped except for idle which should be looped.
13. ensure player controller tag is set to “player”

This should work… 
8, Write script as below.

using UnityEngine;
using System.Collections;

public class Doors : MonoBehaviour
{

    Animator animator;
    bool doorOpen;

    void Start()
    {
        doorOpen = false;
        animator = GetComponent<Animator>();
    }

    void OnTriggerEnter(Collider col)
    {
        if (col.gameObject.tag == “Player”)
        {

            doorOpen = true;
            DoorControl(“Open”);
        }
    }

    void OnTriggerExit(Collider col)
    {
        if (doorOpen)
        {
            doorOpen = false;
            DoorControl(“Close”);
        }
    }

    void DoorControl(string direction)
    {
        animator.SetTrigger(direction);
    }
}

Agent Navigation
https://docs.unity3d.com/Manual/nav-CreateNavMeshAgent.html

1.Create Agent
2.Create Target

using UnityEngine;
using System.Collections;

public class SampleAgentScript : MonoBehaviour
{
    public Transform target;
    UnityEngine.AI.NavMeshAgent agent;

    void Start()
    {
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
    }

    void Update()
    {
        agent.SetDestination(target.position); 
    }
}

CoinCollect Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public GameObject scoretext;
    public int theScore;
    public AudioSource collectSound;

    void OnTriggerEnter(Collider other)
    {
        collectSound.Play();
        theScore += 50;
        scoretext.GetComponent<Text>().text = “Score: ” + theScore;
        Destroy(gameObject);
    }
}

PC Fixes

The following items have been identified as issues that should be fixed prior to capturing the walkthrough video .

🔲. Violin skeleton seat needs moving back.
🔲. Controller information needs embedding in Scene (on paper grass ?)
🔲. Loop violin player
🔲. Sound at caravan room would be nice
🔲. Caravan would look better if coloured.
🔲. Does the player need a footsteps sound?
🔲. Enlarge bounding skeleton head
🔲. Is there a poetry piece missing after ‘the rest that represent joy and sin?
🔲. While folly poetry piece needs moving forwards a little.
🔲. Drum beat animation would be nice.. can we add sound here?
🔲. Add sly mouths into room.
🔲. Slow heart dice as it’s too fast
🔲. Slow and reverse flower growing
🔲. Our words poetry piece need moving to the right a little.
🔲. Need white box room populating.. skeleton band?
🔲. Ringmaster character needs placing at fairground entrance
🔲. Change UV on fairground worker character as too bright.. blend to stall.
🔲. Change UVs on fairground entrance doors.
🔲. Light beneath alien death character
🔲. Add copyright free music to alien death – Don Giovanni death scene music.
🔲. Add cards to hole
🔲. Add lights to trap doors red and blue
🔲. Fix fall off spiral staircase.. needs to be wider (Blue)
🔲. Add mystic placeholder
🔲. Well done sign trigger pop up and coins set back to zero at the end.
        Add Lights and check levels in spiral tunnels

Add in any additional comments from user feedback.

Scripts

Sliding Doors
https://youtu.be/nfV45mpskRI

1. Create Doors (no gravity add kinematic)
2. make walls static
3. Create empty object as Doors
4. Add Box Collider and set size
5. Add animation controller called doors
6. Create Idle animation
7. create open/close animations for doors on same animation.
8. On animation controller create two triggers one open and one close
9. Idle/Open and closed animations should be in the controller already.
10. add transitions from idle to open to close back to idle.
11. ensure transitions are set to trigger open and closed respectively.
12. ensure animations are not looped except for idle which should be looped.
13. ensure player controller tag is set to “player”

This should work… 
8, Write script as below.

using UnityEngine;
using System.Collections;

public class Doors : MonoBehaviour
{

    Animator animator;
    bool doorOpen;

    void Start()
    {
        doorOpen = false;
        animator = GetComponent<Animator>();
    }

    void OnTriggerEnter(Collider col)
    {
        if (col.gameObject.tag == “Player”)
        {

            doorOpen = true;
            DoorControl(“Open”);
        }
    }

    void OnTriggerExit(Collider col)
    {
        if (doorOpen)
        {
            doorOpen = false;
            DoorControl(“Close”);
        }
    }

    void DoorControl(string direction)
    {
        animator.SetTrigger(direction);
    }
}

Agent Navigation
https://docs.unity3d.com/Manual/nav-CreateNavMeshAgent.html

1.Create Agent
2.Create Target

using UnityEngine;
using System.Collections;

public class SampleAgentScript : MonoBehaviour
{
    public Transform target;
    UnityEngine.AI.NavMeshAgent agent;

    void Start()
    {
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
    }

    void Update()
    {
        agent.SetDestination(target.position); 
    }
}

CoinCollect Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public GameObject scoretext;
    public int theScore;
    public AudioSource collectSound;

    void OnTriggerEnter(Collider other)
    {
        collectSound.Play();
        theScore += 50;
        scoretext.GetComponent<Text>().text = “Score: ” + theScore;
        Destroy(gameObject);
    }
}