public void StartAfterConfig() { configOn = false; configured = true; if (ParentAvatar.TryGetComponent <MoveBoxPlayback>(out PlayBack)) { PlayBack.standalone = false; PlayBack.enabled = false; } // START AVATAR RootPosition = ParentAvatar.transform.Find("Bip01").Find("Bip01 Pelvis").gameObject; originalAvatarAbsoluteRotations = new Dictionary <string, Quaternion>(); Retrieve_OriginalAvatarRotations(RootPosition); GameObject rockethead = GetRocketboxBone(JointId.Head, RootPosition); GameObject rocketfoot = GetRocketboxBone(JointId.FootLeft, RootPosition); rocketboxHeight = rockethead.transform.position.y - rocketfoot.transform.position.y; Offset = RootPosition.transform.position; // START MOCAP StartMoCap(); // Start Playback PlayBack = gameObject.AddComponent <MoveBoxPlayback>(); PlayBack.standalone = false; PlayBack.ParentAvatar = ParentAvatar; PlayBack.RootPosition = RootPosition; PlayBack.animationOn = animationOn; PlayBack.eyeBlinkOn = eyeBlinkOn; PlayBack.lipsyncOn = lipsyncOn; //START EYEBLINK if (eyeBlinkOn) { PlayBack.StartEyeBlinks(); } // START LIPSYNC if (lipsyncOn) { if (lipsyncMicOn) { PlayBack.lipsyncOn = false; if (!ParentAvatar.TryGetComponent <LipSync>(out lipsync)) { lipsync = ParentAvatar.AddComponent <LipSync>(); } lipsync.nameOfMicrophone = nameMic; lipsync.realtimeMoCap = true; lipsync.StartAfterConfig(null, RootPosition); } else { PlayBack.audioClip = audioClip; PlayBack.StartLipSync(); } } // ANIMATION PLAYBACK if (animationOn & !isRealTime) { PlayBack.animationClip = animationClip; PlayBack.loopingOn = loopingOn; PlayBack.StartAnimationPlayback(); } else { PlayBack.animationOn = false; } }
public override void OnInspectorGUI() { // DrawDefaultInspector(); MoveBoxPlayback mocap = (MoveBoxPlayback)target; if (!mocap.enabled) { return; } GUILayout.Space(20f); //2 GUILayout.Label("Animation", EditorStyles.boldLabel); //3 if (mocap.standalone) { mocap.animationOn = EditorGUILayout.Toggle("ON/OFF", mocap.animationOn); } if (mocap.animationOn) { mocap.loopingOn = EditorGUILayout.Toggle("Loop animation", mocap.loopingOn); mocap.animationClip = (AnimationClip)EditorGUILayout.ObjectField("Animation File", mocap.animationClip, typeof(AnimationClip), false); if (mocap.isRunTime) { GUILayout.Label("Current Time: " + mocap.currentTime, EditorStyles.boldLabel); GUILayout.Label("Crop Animation", EditorStyles.boldLabel); mocap.startpoint = EditorGUILayout.Slider("Start Time Normalized", mocap.startpoint, 0, 1); mocap.endpoint = EditorGUILayout.Slider("End Time Normalized", mocap.endpoint, 0, 1); if (GUILayout.Button("Reset")) { mocap.restartAnimation = true; } //additions for smoothloop: GUILayout.Label("Auto-Crop Animation", EditorStyles.boldLabel); mocap.searchWholeClip = EditorGUILayout.Toggle("Search Whole Clip", mocap.searchWholeClip); GUILayout.Label("When Search Whole Clip is off, Auto-Crop will trim between Start Time and End Time", EditorStyles.miniLabel); mocap.trimMarginSeconds = EditorGUILayout.Slider("Trimming Window", mocap.trimMarginSeconds, 0, mocap.animationClip.length / 2); GUILayout.Label("Trimming Window is how many seconds can be lopped off each end", EditorStyles.miniLabel); if (GUILayout.Button("Trim for Smoothest Loop")) { mocap.findBestLoopTrim = true; } } } GUILayout.Space(20f); //2 GUILayout.Label("LipSync", EditorStyles.boldLabel); //3 if (mocap.standalone) { mocap.lipsyncOn = EditorGUILayout.Toggle("ON/OFF", mocap.lipsyncOn); } if (mocap.lipsyncOn) { mocap.audioClip = (AudioClip)EditorGUILayout.ObjectField("Audio File", mocap.audioClip, typeof(AudioClip), false); GUILayout.Label("Calibration (only on runtime)"); if (mocap.lipsync != null & mocap.isRunTime) { if (GUILayout.Button("Re-start play")) { mocap.lipsync.restart = true; } mocap.lipsync.VOLUME_THRESHOLD = EditorGUILayout.Slider("Threshold", mocap.lipsync.VOLUME_THRESHOLD, 0, 1); mocap.lipsync.OPEN_FACTOR = EditorGUILayout.Slider("Mouth Openning", mocap.lipsync.OPEN_FACTOR, 1, 10); GUILayout.Label("Current Volume: " + mocap.lipsync.currentAverageVolume); GUILayout.Label("Silence Volume: " + mocap.lipsync.silenceVolume); if (GUILayout.Button("Calibrate Silence")) { mocap.lipsync.captureSilence = true; } } } GUILayout.Space(20f); //2 GUILayout.Label("Eye Blinks", EditorStyles.boldLabel); //3 if (mocap.standalone) { mocap.eyeBlinkOn = EditorGUILayout.Toggle("ON/OFF", mocap.eyeBlinkOn); } }