Narrative and immersive experience made with Unity and Kinect v1 in 2019-2020 at Gobelins School.
Projet
β README.md
β .gitignore
β
ββββ Assets
β ββββ 3DObjects # All 3D Objects
β ββββ Fonts # Fonts used with Text Component
β ββββ Librairies
β β β Cinemachine # Cinemachine
β β β Demigiant # DOTween
β β β Kinect # Kinect v1 library
β β
β ββββ Materials
β β β Sea # Sea scene's materials
β β β Sky # Sky scene's materials
β β
β ββββ Packages
β β β UnityFBXExporter # Export GameObject to FBX
β β
β ββββ Plugins
β β β Github # Github interface for Unity
β β
β ββββ PPProfiles # Post-processing profiles
β β β SkyPPProfile
β β β WaterPPProfile
β β
β ββββ Prefabs
β β β PrefabsAnimations
β β β Sea
β β β Sky
β β β UI
β β
β ββββ Resources
β β ββββ Animations
β β β ββββ Loader
β β β ββββ Positions
β β β β
β β ββββ Images
β β
β ββββ Scenes
β β β StartupScene # First scene - Logo
β β β Birds # Second scene - Birds
β β β Boids # Last scene - Birds
β β
β ββββ Scripts
β β ββββ Camera # Camera's scripts
β β ββββ General # General scripts
β β ββββ Helpers # Helpers scripts
β β ββββ Interactions # Interactions's scripts
β β β ββββ Gestures
β β β β β Gesture.cs # Handle Kinect's gestures status (Completed - Progress - Canceled)
β β β β β PsiGesture.cs # Kinect Psi position
β β β β β SquatGesture.cs # Kinect Squat position
β β β β β TPoseGesture.cs # Kinect T position
β β β β β UserDetectedInteraction.cs # Triggered when users detected by Kinect
β β β β β UserKinectPosition.cs # Get position of users
β β β β
β β β ββββ prefabScripts (Check how it works below)
β β β β β DefaultInteracton.prefab
β β β β β PsiInteraction.prefab
β β β β β SpacebarInteraction.prefab
β β β β β SquatInteraction.prefab
β β β β β TPoseInteraction.prefab
β β β β β UserDetectedInteraction.prefab
β β β β β UserKinectPosition.prefab
β β β β
β β β ββββ Scripts
β β β β β DefaultInteracton.cs
β β β β β PsiInteraction.cs
β β β β β SpacebarInteraction.cs
β β β β β SquatInteraction.cs
β β β β β TPoseInteraction.cs
β β β β β UserDetectedInteraction.cs
β β β β β UserKinectPosition.cs
β β β β
β β ββββ Sea
β β β ββββ Boid
β β β β β ...
β β β β
β β β ββββ Camera
β β β β β ...
β β β β
β β β ββββ CurvedLines(SeaCurrents)
β β β β β ...
β β β β
β β ββββ Sea
β β β ββββ BezierRoutes
β β β β β ...
β β β β
β β β ββββ Helpers
β β β β β ...
β β β β
β β ββββ UI
β β β β AudioManager.cs # Manage Ambiant Sound
β β β β InteractionsList.cs # List all interactions
β β β β IntroManager.cs # Manage Intro screen
β β β β PictoLoadingManager.cs # Manage loader progress
β β β β PictosPositionsManager.cs # Manage picto inside loader
β β β β SubtitleManager.cs # Manage subtitles
β β β β VoiceoverManager.cs # Manage voiceovers
β β β
β ββββ Shaders
β β ββββ Sea
β β
β ββββ Standard Assets
β β ββββ Effects
β β β ββββ Projectors
β β ββββ Environement
β β β ββββ Water
β β
β ββββ Streaming Assets
β β ββββ Audio
β β β ββββ Sounds # Ambient sounds
β β β ββββ Voiceover # Voiceover audios
β β β ββββ Voiceover # Voiceover audios
β β ββββ Subtitles # Json subtitles
β β
β ββββ Textures
β β ββββ Sea
β β β ββββ Corals
β β β ββββ Currents
β β β ββββ Fishs
β β β ββββ Ground
β β β ββββ Rock
β β ββββ Sky
β β β ββββ Mountains
β β β ββββ Ocean
β β β
β ββββ Timelines
You can run each scene separatly for development purposes. But the production scene is "StartupScene" which uses the kinect manager and load every scene asynchronously depending on the users interactions.
If you want to use interactions outside of the StartupScene, you will need to create a GameManager and InteractionManager. but you will have to remove it for development and use the GameManager and InteractionManager in the StartupScene.
To add a new interaction in the interactionManager, you will need to create a GameObject, and add the script with the interaction you want to use. If the interaction you want does not exist yet, you can create your own script and extend it with Interactions.cs. it just need to return true in the Listen function when the interaction is completed. When the gameObject is created you can drag it to the interaction list in the interaction manager.
Each interaction GameObject should have a string "action" that triggers a function in the GameManager, if defined. if the interaction have a pictogram attached and audio, you have to select the InteractionKey corresponding to the audio/picto defined in InteractionList.cs and enable "hasPicto".
To prevent the interaction to abort too soon, you can enter the audio duration in the GameObject and add an additional delay if needed.
If you want to trigger the onComplete event somewhere outside of the interaction script, you can uncheck "Handle on Complete".
Each interaction is enabled one after the other depending on the order of the interactions array, when the complete function is called.
If you are working without the kinect device, you can still run the scenes just by removing every interaction using the kinect, you might have warnings but you can just ignore them.
Install the Kinect SDK 1.8 (only KinectV1) on your windows device. Kinect with MS-SDK package is already installed in our project. https://www.microsoft.com/en-us/download/details.aspx?id=40278
There's already a list of available gestures, but if you want to add custom ones, check the Gesture pdf in Kinect with MS-SDK asset.
If you want to create a new kind of interaction with the kinect you will need to create a KinectGesture GameObject linked to a new GestureScript that you need to create.
We are actually working on a new version with depth and position user data, to delete current gestures and interactions.
- Serge Bocancea π¨βπ»
- Brieuc Caillot π¨βπ»
- LΓ©o Mouraire π¨βπ»
- Pauline Fuchs π©βπ»
- Emma Rimbert π©βπ»