private MotionPlayer motionPlayer; //GetComponent()による自動取得 void Start() { motionPlayer = GetComponent <MotionPlayer>(); playLower(); playUpper(); }
private void ResetMotionPlayer() { _motionPlayer = new MotionPlayer(_motion, _poser); _motionPlayer.SeekFrame(0); _poser.PrePhysicsPosing(); _physicsReactor.Reset(); _poser.PostPhysicsPosing(); }
//コンストラクタ public MotionMixer(MotionPlayer player, PlayableGraph graph) { this.player = player; this.playParam = new MotionPlayerParam(); this.beforePlayable = AnimationClipPlayable.Create(graph, null); this.mixer = AnimationMixerPlayable.Create(graph, 2); this.graph = graph; }
private void OnStopLoop(object sender, RoutedEventArgs e) { if (motionPlayer != null) { //If no stop the player, it's going to be weird motionPlayer.Stop(); motionPlayer = null; } }
private void DoGenerate(MmdModel model, MmdMotion motion, string savePath, float frameStepLength, float timeAfterMotionFinish, float physicsStepLength) { try { _status = GenerateStatus.Preparing; if (physicsStepLength > frameStepLength) { physicsStepLength = frameStepLength; } var poser = new Poser(model); var motionPlayer = new MotionPlayer(motion, poser); var physicsReactor = new BulletPyhsicsReactor(); var totalTimeLength = motion.Length / 30.0 + timeAfterMotionFinish; var totalStepCount = (int)(totalTimeLength / frameStepLength) + 1; var playPos = 0.0; var maxSubSteps = (int)(frameStepLength / physicsStepLength) + 1; using (var fileStream = new FileStream(savePath, FileMode.Create)) { using (var bufferedStream = new BufferedStream(fileStream)) { using (var binaryWriter = new BinaryWriter(bufferedStream)) { WriteHeader(binaryWriter, model, totalStepCount + 1, frameStepLength); _status = GenerateStatus.CalculatingFrames; _totalFrames = totalStepCount + 1; _calculatedFrames = 0; physicsReactor.AddPoser(poser); motionPlayer.SeekFrame(0); poser.PrePhysicsPosing(); physicsReactor.Reset(); poser.PostPhysicsPosing(); WritePose(binaryWriter, poser); _calculatedFrames = 1; for (var i = 0; i < totalStepCount; ++i) { playPos += frameStepLength; motionPlayer.SeekTime(playPos); poser.PrePhysicsPosing(); physicsReactor.React(frameStepLength, maxSubSteps, physicsStepLength); poser.PostPhysicsPosing(); WritePose(binaryWriter, poser); _calculatedFrames = i + 2; } } } } _status = GenerateStatus.Finished; } catch (Exception e) { _status = GenerateStatus.Failed; Debug.LogException(e); } }
void ToggleRecordingFor(MotionPlayer remote, SteamVR_TrackedObject srcTrackedObj) { if (remote.IsRecording()) { remote.Playback(); } else { remote.RecordMotion(srcTrackedObj.gameObject); } }
private void OnLoopAllMotionsClick(object sender, RoutedEventArgs e) { if (model?.Motion != null) { OnStopLoop(null, null); var motions = model.Motion.Values.SelectMany(x => x).ToArray(); motionPlayer = new MotionPlayer(RenderView, motions); motionPlayer.Loop = true; motionPlayer.Begin(); } }
private void OnGroupLoop(object sender, RoutedEventArgs e) { if (model?.Motion != null && sender is MenuItem) { OnStopLoop(null, null); var menuItem = (MenuItem)sender; motionPlayer = model.CreatePlayer(RenderView, menuItem.Header.ToString()); motionPlayer.Loop = true; motionPlayer.Begin(); } }
public void ConnectRemote(GameObject clone) { CloneController cloneCtrl = clone.GetComponent <CloneController>(); // attach left hand tracked object to clone cloneCtrl.AttachTrackedObject("LeftHand", srcLeftHand); // attach right hand tracked object to clone cloneCtrl.AttachTrackedObject("RightHand", srcRightHand); // attach left, right, and head of clone to motion recorder remoteLeftHand = cloneCtrl.GetPartMotionPlayer("LeftHand"); remoteRightHand = cloneCtrl.GetPartMotionPlayer("RightHand"); remoteHead = cloneCtrl.GetPartMotionPlayer("Head"); }
private void OnLoopThisMotionsClick(object sender, RoutedEventArgs e) { if (model?.Motion != null) { OnStopLoop(null, null); var motion = GetMotion(ListMotion.SelectedItem.ToString()); if (motion != null) { motionPlayer = new MotionPlayer(RenderView, new L2DMotion[] { motion }); motionPlayer.Loop = true; motionPlayer.Begin(); } } }
public BonePosePreCalculator(Poser poser, BulletPyhsicsReactor physicsReactor, MotionPlayer motionPlayer, double stepLength, double startTimePos, int frameCacheSize, bool autoStepLength) { _poseMode = false; _poser = poser; _physicsReactor = physicsReactor; _motionPlayer = motionPlayer; _stepLength = stepLength; _bonePoseImagesStore = new BlockingQueue <BonePoseFrame>(frameCacheSize); _timePos = startTimePos; _autoStepLength = autoStepLength; _motionPlayer.SeekTime(startTimePos); _poser.PrePhysicsPosing(); _physicsReactor.Reset(); _poser.PostPhysicsPosing(); var image = GetBonePoseImage(_poser); _bonePoseImagesStore.Enqueue(new BonePoseFrame(startTimePos, image)); }
public BonePosePreCalculator(BonePoseCalculatorWorker worker, Poser poser, BulletPyhsicsReactor physicsReactor, MotionPlayer motionPlayer, float stepLength, float startTimePos, int frameCacheSize, bool autoStepLength) { _poseMode = false; _poser = poser; _physicsReactor = physicsReactor; _motionPlayer = motionPlayer; _stepLength = stepLength; _bonePoseImagesStore = new SynchronizedQueue <BonePoseFrame>(); _timePos = startTimePos; _autoStepLength = autoStepLength; _frameCacheSize = frameCacheSize; _motionPlayer.SeekTime(startTimePos); _poser.PrePhysicsPosing(); _physicsReactor.Reset(); _poser.PostPhysicsPosing(); var image = GetBonePoseImage(_poser); _bonePoseImagesStore.Enqueue(new BonePoseFrame(startTimePos, image)); _worker = worker; }
public void OnEnable() { player = (MotionPlayer)target; play = Resources.Load <Texture>("GUI/play"); stop = Resources.Load <Texture>("GUI/stop"); rewind = Resources.Load <Texture>("GUI/rewind"); fastforward = Resources.Load <Texture>("GUI/fastforward"); projectPath = System.IO.Directory.GetCurrentDirectory(); if (!projectPath.EndsWith("\\")) { projectPath += "\\"; } string trackingFile = player.TrackingFile; if (string.IsNullOrEmpty(trackingFile)) { loadingPath = ""; } else { loadingPath = new System.IO.FileInfo(trackingFile).DirectoryName; // Reload the file if cached data has been reset if (!player.HasData) { player.LoadTrackingData(trackingFile); if (player.PreviewMovement) { player.Refresh(); } } } }