예제 #1
0
 public override void Awake(GameObject go)
 {
     SetButtonListener("BtnVRManual", () =>
     {
         ChangeXrType(XrType.VrManual);
     });
     SetButtonListener("BtnVRSingle", () =>
     {
         ChangeXrType(XrType.VrSingle);
     });
     SetButtonListener("BtnVRGlass", () =>
     {
         ChangeXrType(XrType.VrGlass);
     });
     SetButtonListener("BtnPyramid", () =>
     {
         ChangeXrType(XrType.Pyramid);
         OnceTipPage.ShowOnceTip(TipNames.Pyramid);
     });
     SetButtonListener("BtnCameraFile", () =>
     {
         ChangeXrType(XrType.CameraFile);
     });
     SetButtonListener("BtnArUserDefined", () =>
     {
         ChangeXrType(XrType.ArUserDefined);
     });
     SetButtonListener("BtnBack", ClosePage);
 }
예제 #2
0
        private IEnumerator GenerateBonePoseFile()
        {
            yield return(null);

            var context = (Context)data;
            var model   = ModelReader.LoadMmdModel(context.ModelPath, new ModelReadConfig {
                GlobalToonPath = ""
            });
            var motion = new VmdReader().Read(context.MotionPath);

            Debug.Log("motion load finished" + motion.Length + " frames");
            var generator =
                BonePoseFileGenerator.GenerateAsync(model, motion, context.SavePath, 1.0f / 60.0f, 5.0f, 1.0f / 120.0f);

            _generator = generator;
            while (true)
            {
                var generatorStatus = generator.Status;
                if (generatorStatus == BonePoseFileGenerator.GenerateStatus.Failed ||
                    generatorStatus == BonePoseFileGenerator.GenerateStatus.Finished ||
                    generatorStatus == BonePoseFileGenerator.GenerateStatus.Canceled)
                {
                    break;
                }
                if (generatorStatus == BonePoseFileGenerator.GenerateStatus.CalculatingFrames)
                {
                    _tipText.text = "已计算" + generator.CalculatedFrames + "帧, 共" + generator.TotalFrames + "帧。 已完成"
                                    + 100L * generator.CalculatedFrames / generator.TotalFrames + "%";
                }
                yield return(null);
            }
            if (generator.Status == BonePoseFileGenerator.GenerateStatus.Finished)
            {
                MainSceneController.Instance.ChangeCurrentBonePoseFile(context.SavePath);
            }
            ClosePage();
            switch (generator.Status)
            {
            case BonePoseFileGenerator.GenerateStatus.Finished:
                ShowPage <OkDialog>(new OkDialog.Context
                {
                    Title = "提示",
                    Tip   =
                        "计算完成。现在可以流畅地播放了。以后如果需要再次播放同模型配同动作,选择模型、动作后可以再载入已保存的动作结果文件。记得在选择结果文件时可能需要先点“扫描”才能看到计算结果文件。",
                    OnOk = () => { OnceTipPage.ShowOnceTip(TipNames.WhereIsBonePoseFile); }
                });
                break;

            case BonePoseFileGenerator.GenerateStatus.Failed:
                ShowPage <OkDialog>(new OkDialog.Context
                {
                    Title = "提示",
                    Tip   = "计算发生错误。"
                });
                break;
            }
        }
예제 #3
0
        public override void Awake(GameObject go)
        {
            _cameraFilePanel         = transform.Find("MmdCamera").gameObject;
            _arUserDefinedPanel      = transform.Find("ArUserDefined").gameObject;
            _arUserDefinedInitPanel  = transform.Find("ArUserDefined/Init").gameObject;
            _arUserDefinedResetPanel = transform.Find("ArUserDefined/Reset").gameObject;
            MainSceneController.Instance.OnXrTypeChanged.AddListener(xrType =>
            {
                _cameraFilePanel.SetActive(xrType == XrType.CameraFile);
                _arUserDefinedPanel.SetActive(xrType == XrType.ArUserDefined);
                if (xrType == XrType.ArUserDefined)
                {
                    _arUserDefinedInitPanel.SetActive(true);
                    _arUserDefinedResetPanel.SetActive(false);
                }
            });

            SetButtonListener("Functions/BtnAddModel", () =>
            {
                ShowPage <MmdFileSelector>(new MmdFileSelector.Context
                {
                    Type         = MmdFileSelector.FileType.Model,
                    Title        = "添加模型",
                    OnFileSelect = filePath =>
                    {
                        TtuiUtils.RunWithLoadingUI <LoadingDialog>(MainSceneController.Instance, () =>
                        {
                            try
                            {
                                if (!MainSceneController.Instance.AddModel(filePath))
                                {
                                    ShowAddModelFailTip();
                                    return;
                                }
                            }
                            catch (Exception e)
                            {
                                Debug.LogException(e);
                                ShowAddModelFailTip();
                                return;
                            }
                            ShowPage <MmdModelPanel>();
                        });
                    }
                });
                OnceTipPage.ShowOnceTip(TipNames.ExportCustomMmdFiles);
            });
            SetButtonListener("Functions/BtnSelectModel", () =>
            {
                if (MainSceneController.Instance.GetModelCount() > 0)
                {
                    ShowPage <MmdModelSelectPanel>();
                }
            });
            SetButtonListener("Functions/BtnSelectMusic", () =>
            {
                ShowPage <MmdFileSelector>(new MmdFileSelector.Context
                {
                    Type         = MmdFileSelector.FileType.Music,
                    Title        = "选择音乐",
                    OnFileSelect = filePath =>
                    {
                        TtuiUtils.RunWithLoadingUI <LoadingDialog>(MainSceneController.Instance,
                                                                   () =>
                        {
                            try
                            {
                                MainSceneController.Instance.ChangeMusic(filePath);
                            }
                            catch (Exception e)
                            {
                                Debug.LogException(e);
                            }
                        });
                    }
                });
                OnceTipPage.ShowOnceTip(TipNames.ExportCustomMmdFiles);
            });
            SetButtonListener("Functions/BtnPlay", () =>
            {
                if (MainSceneController.Instance.GetXrType().Equals(XrType.VrGlass))
                {
                    ShowPage <VrCountdownPage>();
                }
                else
                {
                    MainSceneController.Instance.SwitchPlayPause(true);
                }
            });
            SetButtonListener("Functions/BtnXR", ShowPage <XrSelecror>);
            SetButtonListener("Bottom/BtnQuit", ShowPage <ConfirmReturnTitlePage>);
            SetButtonListener("Bottom/BtnSave", ShowPage <SaveSceneDialog>);
            SetButtonListener("Bottom/BtnLoad", ShowPage <LoadSceneDilog>);
            SetButtonListener("MmdCamera/BtnSelectCamera", () =>
            {
                ShowPage <MmdFileSelector>(new MmdFileSelector.Context
                {
                    Type         = MmdFileSelector.FileType.Motion,
                    Title        = "相机数据",
                    OnFileSelect = filePath =>
                    {
                        TtuiUtils.RunWithLoadingUI <LoadingDialog>(MainSceneController.Instance, () =>
                        {
                            try
                            {
                                var xrController         = MainSceneController.Instance.GetXrController();
                                var cameraFileController = xrController as CameraFileController;
                                if (cameraFileController == null)
                                {
                                    return;
                                }
                                MainSceneController.Instance.SwitchPlayPause(false);
                                MainSceneController.Instance.ResetAll();
                                MainSceneController.Instance.CameraFilePath = filePath;
                                if (!cameraFileController.CameraObject.LoadCameraMotion(filePath))
                                {
                                    TtuiUtils.ShowPageAfterLoadingUI <OkDialog>(MainSceneController.Instance,
                                                                                new OkDialog.Context
                                    {
                                        Tip   = "载入的文件中不含镜头数据。",
                                        Title = "提示"
                                    });
                                }
                            }
                            catch (Exception e)
                            {
                                Debug.LogException(e);
                                TtuiUtils.ShowPageAfterLoadingUI <OkDialog>(MainSceneController.Instance,
                                                                            new OkDialog.Context
                                {
                                    Tip   = "载入镜头数据失败。",
                                    Title = "提示"
                                });
                            }
                        });
                    }
                });
                OnceTipPage.ShowOnceTip(TipNames.ExportCustomMmdFiles);
            });
            SetButtonListener("ArUserDefined/Init/BtnStartAR", () =>
            {
                var arController = MainSceneController.Instance.GetXrController() as ArUserDefinedController;
                if (arController == null)
                {
                    return;
                }
                _arUserDefinedInitPanel.SetActive(false);
                _arUserDefinedResetPanel.SetActive(true);
            });
            SetButtonListener("ArUserDefined/Reset/BtnResetAR", () =>
            {
                var arController = MainSceneController.Instance.GetXrController() as ArUserDefinedController;
                if (arController == null)
                {
                    return;
                }
                _arUserDefinedInitPanel.SetActive(true);
                _arUserDefinedResetPanel.SetActive(false);
            });
        }
예제 #4
0
 public override void Awake(GameObject go)
 {
     SetButtonListener("BtnSelectMotion", () =>
     {
         ShowPage <MmdFileSelector>(new MmdFileSelector.Context
         {
             Type         = MmdFileSelector.FileType.Motion,
             Title        = "选择动作",
             OnFileSelect = filePath =>
             {
                 TtuiUtils.RunWithLoadingUI <LoadingDialog>(MainSceneController.Instance, () =>
                 {
                     try
                     {
                         MainSceneController.Instance.ChangeCurrentMotion(filePath);
                     }
                     catch (Exception e)
                     {
                         Debug.LogException(e);
                     }
                 });
             }
         });
         OnceTipPage.ShowOnceTip(TipNames.ExportCustomMmdFiles);
     });
     SetButtonListener("BtnSelectModel", () =>
     {
         ShowPage <MmdFileSelector>(new MmdFileSelector.Context
         {
             Type         = MmdFileSelector.FileType.Model,
             Title        = "替换模型",
             OnFileSelect = filePath =>
             {
                 TtuiUtils.RunWithLoadingUI <LoadingDialog>(MainSceneController.Instance, () =>
                 {
                     try
                     {
                         MainSceneController.Instance.ChangeCurrentModel(filePath);
                     }
                     catch (Exception e)
                     {
                         Debug.LogException(e);
                     }
                 });
             }
         });
         OnceTipPage.ShowOnceTip(TipNames.ExportCustomMmdFiles);
     });
     SetButtonListener("BtnPosition", ShowPage <MmdModelTransform>);
     SetButtonListener("BtnDelete", () => { MainSceneController.Instance.DeleteCurrentModel(); });
     SetButtonListener("BtnBack", ClosePage);
     SetButtonListener("BtnBonePoseCalculate", () =>
     {
         var modelPath  = MainSceneController.Instance.GetCurrentModelPath();
         var motionPath = MainSceneController.Instance.GetCurrentMotionPath();
         if (string.IsNullOrEmpty(modelPath))
         {
             return;
         }
         if (string.IsNullOrEmpty(motionPath))
         {
             ShowPage <OkDialog>(new OkDialog.Context
             {
                 Title = "提示",
                 Tip   = "还没有选择动作。"
             });
             return;
         }
         ShowPage <PhysicsCalculateSave>(new PhysicsCalculateSave.Context
         {
             ModelPath       = modelPath,
             MotionPath      = motionPath,
             DefaultFileName = GenerateDefaultBonePoseFileName(modelPath, motionPath)
         });
     });
 }