From 9f0f48e2572bca1e3b269fe3afda24dcb465a746 Mon Sep 17 00:00:00 2001 From: CoudronJerome Date: Sun, 26 Mar 2023 22:44:43 +0200 Subject: [PATCH] Tested new implementation for models --- .../Interfaces/InterfacesScripts.asmdef | 3 +- Assets/Common/Interfaces/Theme.cs | 5 +++ .../ScriptableObjects/AnimalsTheme.asset | 1 + .../ScriptableObjects/ClothesTheme.asset | 2 + .../ScriptableObjects/FamilyTheme.asset | 2 + .../Common/ScriptableObjects/FoodTheme.asset | 1 + .../Common/ScriptableObjects/HobbyTheme.asset | 2 + .../Common/ScriptableObjects/HouseTheme.asset | 2 + Assets/Courses/Scenes/TemplateCourse.unity | 1 + Assets/Courses/Scripts/TemplateCourse.cs | 7 +++- Assets/Hangman/Scenes/Hangman.unity | 1 + .../Hangman/Scripts/HangmanGameController.cs | 3 ++ Assets/MediaPipeUnity/ScriptableObjects.meta | 8 ++++ .../ScriptableObjects/ModelList.asset | 20 ++++++++++ .../ScriptableObjects/ModelList.asset.meta | 8 ++++ Assets/MediaPipeUnity/Scripts/ModelIndex.cs | 9 +++++ .../MediaPipeUnity/Scripts/ModelIndex.cs.meta | 11 ++++++ Assets/MediaPipeUnity/Scripts/ModelList.cs | 39 +++++++++++++++++++ .../MediaPipeUnity/Scripts/ModelList.cs.meta | 11 ++++++ Assets/MediaPipeUnity/Scripts/ModelTuple.cs | 18 +++++++++ .../MediaPipeUnity/Scripts/ModelTuple.cs.meta | 11 ++++++ .../MediaPipeUnity/Scripts/SignPredictor.cs | 3 ++ Assets/SpellingBee/Scenes/Game.unity | 1 + Assets/SpellingBee/Scripts/GameController.cs | 3 +- 24 files changed, 168 insertions(+), 4 deletions(-) create mode 100644 Assets/MediaPipeUnity/ScriptableObjects.meta create mode 100644 Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset create mode 100644 Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset.meta create mode 100644 Assets/MediaPipeUnity/Scripts/ModelIndex.cs create mode 100644 Assets/MediaPipeUnity/Scripts/ModelIndex.cs.meta create mode 100644 Assets/MediaPipeUnity/Scripts/ModelList.cs create mode 100644 Assets/MediaPipeUnity/Scripts/ModelList.cs.meta create mode 100644 Assets/MediaPipeUnity/Scripts/ModelTuple.cs create mode 100644 Assets/MediaPipeUnity/Scripts/ModelTuple.cs.meta diff --git a/Assets/Common/Interfaces/InterfacesScripts.asmdef b/Assets/Common/Interfaces/InterfacesScripts.asmdef index c6d0301..7d170b5 100644 --- a/Assets/Common/Interfaces/InterfacesScripts.asmdef +++ b/Assets/Common/Interfaces/InterfacesScripts.asmdef @@ -2,7 +2,8 @@ "name": "InterfacesScripts", "rootNamespace": "", "references": [ - "GUID:5c2b5ba89f9e74e418232e154bc5cc7a" + "GUID:5c2b5ba89f9e74e418232e154bc5cc7a", + "GUID:d0b6b39a21908f94fbbd9f2c196a9725" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Common/Interfaces/Theme.cs b/Assets/Common/Interfaces/Theme.cs index 94d7e19..3fa31b5 100644 --- a/Assets/Common/Interfaces/Theme.cs +++ b/Assets/Common/Interfaces/Theme.cs @@ -28,6 +28,11 @@ public class Theme : ScriptableObject /// public NNModel model; + /// + /// The index of the model you want to use + /// + public ModelIndex modelIndex; + /// /// List of all learnable words/letters /// diff --git a/Assets/Common/ScriptableObjects/AnimalsTheme.asset b/Assets/Common/ScriptableObjects/AnimalsTheme.asset index a7817e0..f2e7a3b 100644 --- a/Assets/Common/ScriptableObjects/AnimalsTheme.asset +++ b/Assets/Common/ScriptableObjects/AnimalsTheme.asset @@ -16,6 +16,7 @@ MonoBehaviour: description: Van vis tot leeuw index: 2 model: {fileID: 0} + modelIndex: 1 learnables: - name: Walvis image: {fileID: 21300000, guid: 2b01165a5836ab14593d7a5862bd6793, type: 3} diff --git a/Assets/Common/ScriptableObjects/ClothesTheme.asset b/Assets/Common/ScriptableObjects/ClothesTheme.asset index bcc40cf..db7d5fa 100644 --- a/Assets/Common/ScriptableObjects/ClothesTheme.asset +++ b/Assets/Common/ScriptableObjects/ClothesTheme.asset @@ -15,6 +15,8 @@ MonoBehaviour: title: Kleren en Kleuren description: Van rok tot sok index: 1 + model: {fileID: 0} + modelIndex: 1 learnables: - name: Blauw image: {fileID: 21300000, guid: 182fb89eba9c64041bef31ca35c4bcd8, type: 3} diff --git a/Assets/Common/ScriptableObjects/FamilyTheme.asset b/Assets/Common/ScriptableObjects/FamilyTheme.asset index 9a804ee..e3c8df7 100644 --- a/Assets/Common/ScriptableObjects/FamilyTheme.asset +++ b/Assets/Common/ScriptableObjects/FamilyTheme.asset @@ -15,6 +15,8 @@ MonoBehaviour: title: Familie description: Van generatie tot generatie index: 6 + model: {fileID: 0} + modelIndex: 1 learnables: - name: Broer image: {fileID: 21300000, guid: eecf67266f150f1489717049489cf16d, type: 3} diff --git a/Assets/Common/ScriptableObjects/FoodTheme.asset b/Assets/Common/ScriptableObjects/FoodTheme.asset index 80a80d8..6d70a39 100644 --- a/Assets/Common/ScriptableObjects/FoodTheme.asset +++ b/Assets/Common/ScriptableObjects/FoodTheme.asset @@ -16,6 +16,7 @@ MonoBehaviour: description: Van kers tot pompoen index: 3 model: {fileID: 0} + modelIndex: 1 learnables: - name: Aardappel image: {fileID: 21300000, guid: 2610cdbc24a125f43ada7fed67d8f51b, type: 3} diff --git a/Assets/Common/ScriptableObjects/HobbyTheme.asset b/Assets/Common/ScriptableObjects/HobbyTheme.asset index c17ad1d..393ac5c 100644 --- a/Assets/Common/ScriptableObjects/HobbyTheme.asset +++ b/Assets/Common/ScriptableObjects/HobbyTheme.asset @@ -15,6 +15,8 @@ MonoBehaviour: title: Hobbies description: Van schilderen tot reizen index: 4 + model: {fileID: 0} + modelIndex: 1 learnables: - name: Dansen image: {fileID: 21300000, guid: 6d405f607ae817744b49f921f0611088, type: 3} diff --git a/Assets/Common/ScriptableObjects/HouseTheme.asset b/Assets/Common/ScriptableObjects/HouseTheme.asset index 3e9bf20..65b7f0e 100644 --- a/Assets/Common/ScriptableObjects/HouseTheme.asset +++ b/Assets/Common/ScriptableObjects/HouseTheme.asset @@ -15,6 +15,8 @@ MonoBehaviour: title: Huis beschrijven description: Van zetel tot villa index: 5 + model: {fileID: 0} + modelIndex: 1 learnables: - name: Keuken image: {fileID: 21300000, guid: b17ce5bf59092b847b084d3400e7a1b4, type: 3} diff --git a/Assets/Courses/Scenes/TemplateCourse.unity b/Assets/Courses/Scenes/TemplateCourse.unity index 036592f..b64e582 100644 --- a/Assets/Courses/Scenes/TemplateCourse.unity +++ b/Assets/Courses/Scenes/TemplateCourse.unity @@ -1301,6 +1301,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 043ccd99cf82b3cc9bf2e00956ce2b93, type: 3} m_Name: m_EditorClassIdentifier: + modelList: {fileID: 11400000, guid: 39516e4e6e56f0f4f80647d9c4d8034c, type: 2} model: {fileID: 5022602860645237092, guid: e6d85df707405ad4f97c23b07227ee99, type: 3} modelInfoFile: {fileID: 4900000, guid: fb8b51022bdcd654a9f29c054832a1b5, type: 3} configAsset: {fileID: 4900000, guid: 6288c43cdca97374782dac1ea87aa029, type: 3} diff --git a/Assets/Courses/Scripts/TemplateCourse.cs b/Assets/Courses/Scripts/TemplateCourse.cs index 6e25232..11a75cb 100644 --- a/Assets/Courses/Scripts/TemplateCourse.cs +++ b/Assets/Courses/Scripts/TemplateCourse.cs @@ -128,13 +128,16 @@ public class TemplateCourse : MonoBehaviour { // Setting up course course = courselist.courses[courselist.currentCourseIndex]; - feedback.signPredictor.model = course.theme.model; + //feedback.signPredictor.model = course.theme.model; + feedback.signPredictor.modelList.SetCurrentModel(course.theme.modelIndex); + //feedback.signPredictor.model = feedback.signPredictor.modelList.models[feedback.signPredictor.modelList.currentModelIndex].model; maxWords = course.theme.learnables.Count; // vvv TEMPORARY STUFF vvv feedbackProgressBar.SetActive(course.theme.model != null); previewMessage.SetActive(course.theme.model == null); - feedback.signPredictor.model = previewModel; + // Instead, the NONE-modelIndex points to Fingerspelling, which gives the same result + //feedback.signPredictor.model = previewModel; // ^^^ TEMPORARY STUFF ^^^ // Create entry in current user for keeping track of progress diff --git a/Assets/Hangman/Scenes/Hangman.unity b/Assets/Hangman/Scenes/Hangman.unity index 9209fad..073a6fb 100644 --- a/Assets/Hangman/Scenes/Hangman.unity +++ b/Assets/Hangman/Scenes/Hangman.unity @@ -6245,6 +6245,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 043ccd99cf82b3cc9bf2e00956ce2b93, type: 3} m_Name: m_EditorClassIdentifier: + modelList: {fileID: 11400000, guid: 39516e4e6e56f0f4f80647d9c4d8034c, type: 2} model: {fileID: 5022602860645237092, guid: e6d85df707405ad4f97c23b07227ee99, type: 3} modelInfoFile: {fileID: 4900000, guid: fb8b51022bdcd654a9f29c054832a1b5, type: 3} configAsset: {fileID: 4900000, guid: 6288c43cdca97374782dac1ea87aa029, type: 3} diff --git a/Assets/Hangman/Scripts/HangmanGameController.cs b/Assets/Hangman/Scripts/HangmanGameController.cs index 45f9bec..3b83c67 100644 --- a/Assets/Hangman/Scripts/HangmanGameController.cs +++ b/Assets/Hangman/Scripts/HangmanGameController.cs @@ -241,6 +241,9 @@ public class HangmanGameController : MonoBehaviour } userList.Save(); + // Hangman always uses fingerspelling + feedback.signPredictor.model = feedback.signPredictor.modelList.GetModelByIndex(ModelIndex.FINGERSPELLING); + // Set calllbacks feedback.getSignCallback = () => { diff --git a/Assets/MediaPipeUnity/ScriptableObjects.meta b/Assets/MediaPipeUnity/ScriptableObjects.meta new file mode 100644 index 0000000..256bc92 --- /dev/null +++ b/Assets/MediaPipeUnity/ScriptableObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 438a3ced42dd6fc4ab38e3a16c1e43a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset b/Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset new file mode 100644 index 0000000..12d799c --- /dev/null +++ b/Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 78a3f61c93a08c04496c49ffd10b9021, type: 3} + m_Name: ModelList + m_EditorClassIdentifier: + currentModelIndex: 0 + models: + - index: 0 + model: {fileID: 5022602860645237092, guid: e6d85df707405ad4f97c23b07227ee99, type: 3} + - index: 1 + model: {fileID: 5022602860645237092, guid: e6d85df707405ad4f97c23b07227ee99, type: 3} diff --git a/Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset.meta b/Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset.meta new file mode 100644 index 0000000..6b6b05c --- /dev/null +++ b/Assets/MediaPipeUnity/ScriptableObjects/ModelList.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39516e4e6e56f0f4f80647d9c4d8034c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MediaPipeUnity/Scripts/ModelIndex.cs b/Assets/MediaPipeUnity/Scripts/ModelIndex.cs new file mode 100644 index 0000000..ec15091 --- /dev/null +++ b/Assets/MediaPipeUnity/Scripts/ModelIndex.cs @@ -0,0 +1,9 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public enum ModelIndex +{ + FINGERSPELLING, + NONE +} diff --git a/Assets/MediaPipeUnity/Scripts/ModelIndex.cs.meta b/Assets/MediaPipeUnity/Scripts/ModelIndex.cs.meta new file mode 100644 index 0000000..2fdf846 --- /dev/null +++ b/Assets/MediaPipeUnity/Scripts/ModelIndex.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6dbd5e1100bc81648b52206df369d0a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MediaPipeUnity/Scripts/ModelList.cs b/Assets/MediaPipeUnity/Scripts/ModelList.cs new file mode 100644 index 0000000..3a6b759 --- /dev/null +++ b/Assets/MediaPipeUnity/Scripts/ModelList.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Unity.Barracuda; +/// +/// This scriptable will hold tupples of Courseindices and models +/// +[CreateAssetMenu(menuName = "Create new Scriptable/ModelList")] +public class ModelList : ScriptableObject +{ + /// + /// Index of the currently active model + /// + public int currentModelIndex = 0; + + /// + /// A list of all the models + /// + public List models = new List(); + + /// + /// Get a model by modelindex + /// + /// ModelIndex of the model + /// Model associated with this index, null if no model was found + public NNModel GetModelByIndex(ModelIndex modelIndex) + { + return models.Find((m) => m.index == modelIndex).model; + } + + /// + /// Function to find a model-index in the list based on its index + /// + /// + public void SetCurrentModel(ModelIndex index) + { + currentModelIndex = models.FindIndex((m) => m.index == index); + } +} diff --git a/Assets/MediaPipeUnity/Scripts/ModelList.cs.meta b/Assets/MediaPipeUnity/Scripts/ModelList.cs.meta new file mode 100644 index 0000000..e31c7ee --- /dev/null +++ b/Assets/MediaPipeUnity/Scripts/ModelList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78a3f61c93a08c04496c49ffd10b9021 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MediaPipeUnity/Scripts/ModelTuple.cs b/Assets/MediaPipeUnity/Scripts/ModelTuple.cs new file mode 100644 index 0000000..439e02e --- /dev/null +++ b/Assets/MediaPipeUnity/Scripts/ModelTuple.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; +using Unity.Barracuda; +/// +/// Small class to link a model to a courseIndex irrespective of its position in a list +/// +[Serializable] +public class ModelTuple +{ + /// + /// ModelIndex to which the model corresponds + /// + public ModelIndex index; + /// + /// The model itself + /// + public NNModel model; +} diff --git a/Assets/MediaPipeUnity/Scripts/ModelTuple.cs.meta b/Assets/MediaPipeUnity/Scripts/ModelTuple.cs.meta new file mode 100644 index 0000000..ea41afa --- /dev/null +++ b/Assets/MediaPipeUnity/Scripts/ModelTuple.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bce8507dcb30db447b69708ad4f5f962 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MediaPipeUnity/Scripts/SignPredictor.cs b/Assets/MediaPipeUnity/Scripts/SignPredictor.cs index b1d8338..6815ae3 100644 --- a/Assets/MediaPipeUnity/Scripts/SignPredictor.cs +++ b/Assets/MediaPipeUnity/Scripts/SignPredictor.cs @@ -18,6 +18,9 @@ namespace Mediapipe.Unity.Tutorial { public class SignPredictor : MonoBehaviour { + + public ModelList modelList; + /// /// Reference to the model used in the SignPredictor /// diff --git a/Assets/SpellingBee/Scenes/Game.unity b/Assets/SpellingBee/Scenes/Game.unity index 0f7aabc..274be82 100644 --- a/Assets/SpellingBee/Scenes/Game.unity +++ b/Assets/SpellingBee/Scenes/Game.unity @@ -3900,6 +3900,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 043ccd99cf82b3cc9bf2e00956ce2b93, type: 3} m_Name: m_EditorClassIdentifier: + modelList: {fileID: 11400000, guid: 39516e4e6e56f0f4f80647d9c4d8034c, type: 2} model: {fileID: 5022602860645237092, guid: e6d85df707405ad4f97c23b07227ee99, type: 3} modelInfoFile: {fileID: 4900000, guid: fb8b51022bdcd654a9f29c054832a1b5, type: 3} configAsset: {fileID: 4900000, guid: 6288c43cdca97374782dac1ea87aa029, type: 3} diff --git a/Assets/SpellingBee/Scripts/GameController.cs b/Assets/SpellingBee/Scripts/GameController.cs index 94b5f95..6e22e68 100644 --- a/Assets/SpellingBee/Scripts/GameController.cs +++ b/Assets/SpellingBee/Scripts/GameController.cs @@ -182,7 +182,8 @@ public partial class GameController : MonoBehaviour userList.Save(); currentTheme = minigame.themeList.themes[minigame.themeList.currentThemeIndex]; - feedback.signPredictor.model = currentTheme.model; + //feedback.signPredictor.model = currentTheme.model; + feedback.signPredictor.model = feedback.signPredictor.modelList.GetModelByIndex(currentTheme.modelIndex); words.AddRange(currentTheme.learnables); ShuffleWords(); NextWord();