//Add copy of self or techer to scene public void AddAvatar(bool self) { if (self) { GameObject newAvatar = Instantiate(avatarPrefab); AvatarContainer newAvatarCont = new AvatarContainer(newAvatar, mirroring); avatarListSelf.Add(newAvatarCont); newAvatar.SetActive(true); newAvatarCont.ChangeActiveType(avatarListSelf[0].activeType); newAvatarCont.MovePerson(SelfPoseInputGetter.CurrentPose); //newAvatar.transform.position = avatarListSelf[avatarListSelf.Count - 1].avatarContainer.transform.position; //newAvatar.transform.position = newAvatar.transform.position + new Vector3(1,0,0); //newAvatar.transform.position = new Vector3(1, 0, 0); } else { GameObject newAvatar = Instantiate(avatarTPrefab); AvatarContainer newAvatarCont = new AvatarContainer(newAvatar, mirroring); avatarListTeacher.Add(newAvatarCont); newAvatar.SetActive(true); newAvatarCont.ChangeActiveType(avatarListTeacher[0].activeType); if (TeacherPoseInputGetter.CurrentPose != null) { newAvatarCont.MovePerson(TeacherPoseInputGetter.CurrentPose); } } }
// Do once on scene startup private void Start() { // Initialize the respective AvatarContainer classes avatarListSelf = new List <AvatarContainer>(); avatarListTeacher = new List <AvatarContainer>(); avatarListSelf.Add(new AvatarContainer(avatarContainer)); avatarListTeacher.Add(new AvatarContainer(avatarContainerT)); // Instantiate objects for showing recordings GameObject newAvatar = Instantiate(avatarTPrefab); recordedAvatar = new AvatarContainer(newAvatar); newAvatar.SetActive(false); // Set teacher container to inactive at start avatarListTeacher[0].avatarContainer.gameObject.SetActive(false); SelfPoseInputGetter = new PoseInputGetter(SelfPoseInputSource) { ReadDataPath = fake_file }; TeacherPoseInputGetter = new PoseInputGetter(PoseInputSource.FILE) { ReadDataPath = fake_file }; SelfPoseInputGetter.loop = true; TeacherPoseInputGetter.loop = true; RecordedPoseInputGetter = new PoseInputGetter(PoseInputSource.FILE) { ReadDataPath = fake_file }; //SelfPoseInputGetter.streamCanvas = streamCanvas; SelfPoseInputGetter.VideoCube = videoCube; // initialize similarity calculation instance and assign selected avatars avatarSimilarity = new AvatarSimilarity(avatarListSelf[similaritySelfNr], avatarListTeacher[similarityTeacherNr], similarityBodyNr, similarityPenalty, similarityActivateKalman, similarityKalmanQ, similarityKalmanR); avatarVisualisationSimilarity = new VisualisationSimilarity(avatarListSelf[similaritySelfNr]); graph = new Graph(GraphContainer, 0.0F); recordedAvatarSimilarity = new AvatarSimilarity(recordedAvatar, avatarListTeacher[similarityTeacherNr], similarityBodyNr, similarityPenalty, similarityActivateKalman, similarityKalmanQ, similarityKalmanR); recordedAvatarVisualisationSimilarity = new VisualisationSimilarity(recordedAvatar); // Find attached objects in scene scoreIndicator = avatarContainer.transform.Find("ScoreIndicator").gameObject; pulseObject = avatarContainer.transform.Find("PulsingCube").gameObject; progressIndicator = avatarContainerT.transform.Find("ProgressIndicator").gameObject; trainHandMenuContent = trainingElements.transform.Find("HandMenu_Training_HideOnHandDrop").Find("MenuContent").gameObject; choreoHandMenuContent = choreographyElements.transform.Find("HandMenu_Coreo_HideOnHandDrop").Find("MenuContent").gameObject; recordHandMenuContent = recordElements.transform.Find("HandMenu_Recording_HideOnHandDrop").Find("MenuContent").gameObject; // Default is to have a mirrored view do_mirror(); }
// constructor public AvatarSimilarity(AvatarContainer selfIn, AvatarContainer teacherIn, BodyWeightsType bodyNrIn, double penaltyIn, bool activateKalmanIn, double kalmanQIn, double kalmanRIn) { // assign /////////////////////////////////////////////////////////////////////////////////// self = selfIn; teacher = teacherIn; bodyNr = bodyNrIn; penalty = penaltyIn; kalmanQ = kalmanQIn; kalmanR = kalmanRIn; stickNumber = 0; activateKalman = activateKalmanIn; // initialize /////////////////////////////////////////////////////////////////////////////////// // define all stick names (should be actually moved to a parameter file) //stickNames = SimilarityConst.StickNames; stickNumber = SimilarityConst.StickNumber; // Initialize adaptive weighting stickWeight = Enumerable.Repeat(1.0, stickNumber).ToList(); // weight of each stick stickWeightBody = SimilarityConst.GetStickWeights(bodyNr); // correct each default stick weight stickWeightAdapt = Enumerable.Repeat(1.0, stickNumber).ToList(); // calculate final stick weight stickWeightTotal = 0.0; for (int i = 0; i < stickNumber; i++) { stickWeightTotal += stickWeightBody[i] * stickWeightAdapt[i]; } // set default similarity each stick similarityStick = Enumerable.Repeat(0.0, stickNumber).ToList(); // generate kalman filters kalmanFilter = new List <KalmanFilter>(new KalmanFilter[stickNumber]); for (int i = 0; i < stickNumber; i++) { kalmanFilter[i] = new KalmanFilter(kalmanQ, kalmanR); kalmanFilter[i].Reset(1.0); } // total score totalScore = 0.0; }
public void DeleteAvatar(bool self) { if (self && avatarListSelf.Count > 1) { AvatarContainer avatar = avatarListSelf[avatarListSelf.Count - 1]; avatar.avatarContainer.SetActive(false); avatarListSelf.Remove(avatar); Destroy(avatar.avatarContainer.gameObject); } else if (!self && avatarListTeacher.Count > 1) { AvatarContainer avatar = avatarListTeacher[avatarListTeacher.Count - 1]; avatar.avatarContainer.SetActive(false); avatarListTeacher.Remove(avatar); Destroy(avatar.avatarContainer.gameObject); } }
public VisualisationSimilarity(AvatarContainer selfIn) { selfAvatarContainer = selfIn; stickparts = selfAvatarContainer.stickContainer.StickList; SetColor(); }