示例#1
0
        public ImageQualitySettingReceiver(IMessageReceiver receiver, string defaultQualityName)
        {
            receiver.AssignCommandHandler(VmmCommands.SetImageQuality,
                                          c => SetImageQuality(c.Content)
                                          );

            receiver.AssignQueryHandler(
                VmmQueries.GetQualitySettingsInfo,
                q =>
            {
                q.Result = JsonUtility.ToJson(new ImageQualityInfo()
                {
                    ImageQualityNames   = QualitySettings.names,
                    CurrentQualityIndex = QualitySettings.GetQualityLevel(),
                });
            });

            receiver.AssignQueryHandler(
                VmmQueries.ApplyDefaultImageQuality,
                q => {
                SetImageQuality(defaultQualityName);
                q.Result = defaultQualityName;
            });

            SetFrameRateWithQuality(QualitySettings.GetQualityLevel());
        }
示例#2
0
        public void Initialize(IMessageReceiver receiver)
        {
            receiver.AssignCommandHandler(
                VmmCommands.EnableLipSync,
                message => SetLipSyncEnable(message.ToBoolean())
                );
            receiver.AssignCommandHandler(
                VmmCommands.SetMicrophoneDeviceName,
                message => SetMicrophoneDeviceName(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.ExTrackerEnable,
                message => SetExTrackerEnable(message.ToBoolean())
                );
            receiver.AssignCommandHandler(
                VmmCommands.ExTrackerEnableLipSync,
                message => SetExTrackerLipSyncEnable(message.ToBoolean())
                );

            receiver.AssignQueryHandler(
                VmmQueries.CurrentMicrophoneDeviceName,
                query => query.Result = _lipSyncContext.DeviceName
                );
            receiver.AssignQueryHandler(
                VmmQueries.MicrophoneDeviceNames,
                query => query.Result = string.Join("\t", Microphone.devices)
                );
        }
示例#3
0
        public FaceControlManagerMessageIo(IMessageReceiver receiver, IMessageSender sender, FaceControlManager faceControlManager)
        {
            receiver.AssignCommandHandler(
                VmmCommands.AutoBlinkDuringFaceTracking,
                message =>
                faceControlManager.PreferAutoBlinkOnWebCamTracking = message.ToBoolean()
                );

            receiver.AssignCommandHandler(
                VmmCommands.FaceDefaultFun,
                message =>
                faceControlManager.DefaultBlendShape.FaceDefaultFunValue = message.ParseAsPercentage()
                );

            receiver.AssignQueryHandler(
                VmmQueries.GetBlendShapeNames,
                query => query.Result = string.Join("\t", faceControlManager.BlendShapeStore.GetBlendShapeNames())
                );

            faceControlManager.VrmInitialized += () =>
            {
                sender.SendCommand(MessageFactory.Instance.SetBlendShapeNames(
                                       string.Join("\t", faceControlManager.BlendShapeStore.GetBlendShapeNames())
                                       ));
            };

            //特に眉まわりのブレンドシェイプ割り当てだけは別途やる
            var _ = new BlendShapeAssignReceiver(receiver, faceControlManager);
        }
示例#4
0
        public FaceTrackerReceiver(IMessageReceiver receiver, FaceTracker faceTracker)
        {
            _faceTracker = faceTracker;

            receiver.AssignCommandHandler(
                VmmCommands.SetCameraDeviceName,
                message => SetCameraDeviceName(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.EnableFaceTracking,
                message => SetEnableFaceTracking(message.ToBoolean())
                );
            receiver.AssignCommandHandler(
                VmmCommands.ExTrackerEnable,
                message => SetEnableExTracker(message.ToBoolean())
                );
            receiver.AssignCommandHandler(
                VmmCommands.CalibrateFace,
                message => _faceTracker.StartCalibration()
                );
            receiver.AssignCommandHandler(
                VmmCommands.SetCalibrateFaceData,
                message => _faceTracker.SetCalibrateData(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.DisableFaceTrackingHorizontalFlip,
                message => _faceTracker.DisableHorizontalFlip = message.ToBoolean()
                );

            receiver.AssignQueryHandler(
                VmmQueries.CameraDeviceNames,
                query => query.Result = string.Join("\t", GetCameraDeviceNames())
                );
        }
示例#5
0
        public void Initialize(IMessageReceiver receiver)
        {
            receiver.AssignCommandHandler(
                VmmCommands.Chromakey,
                message =>
            {
                var argb = message.ToColorFloats();
                SetCameraBackgroundColor(argb[0], argb[1], argb[2], argb[3]);
            });

            receiver.AssignCommandHandler(
                VmmCommands.EnableFreeCameraMode,
                message => EnableFreeCameraMode(message.ToBoolean())
                );

            receiver.AssignCommandHandler(
                VmmCommands.SetCustomCameraPosition,
                message =>
                SetCustomCameraPosition(message.Content, true)
                );

            receiver.AssignCommandHandler(
                VmmCommands.QuickLoadViewPoint,
                message =>
                SetCustomCameraPosition(message.Content, true)
                );

            receiver.AssignCommandHandler(
                VmmCommands.ResetCameraPosition,
                message => ResetCameraPosition()
                );

            receiver.AssignCommandHandler(
                VmmCommands.CameraFov,
                message => SetCameraFov(message.ToInt())
                );


            receiver.AssignQueryHandler(
                VmmQueries.CurrentCameraPosition,
                query =>
            {
                var t        = cam.transform;
                var angles   = t.rotation.eulerAngles;
                var pos      = t.position;
                query.Result = JsonUtility.ToJson(new SerializedCameraPosition(new[]
                {
                    pos.x,
                    pos.y,
                    pos.z,
                    angles.x,
                    angles.y,
                    angles.z,
                }));
            });
        }
示例#6
0
        public WordToMotionManagerReceiver(IMessageReceiver receiver, WordToMotionManager manager)
        {
            _manager = manager;
            receiver.AssignCommandHandler(
                VmmCommands.ReloadMotionRequests,
                message => ReloadMotionRequests(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.PlayWordToMotionItem,
                message => PlayWordToMotionItem(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.EnableWordToMotionPreview,
                message => _manager.EnablePreview = message.ToBoolean()
                );
            receiver.AssignCommandHandler(
                VmmCommands.SendWordToMotionPreviewInfo,
                message => ReceiveWordToMotionPreviewInfo(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.SetDeviceTypeToStartWordToMotion,
                message => SetWordToMotionInputType(message.ToInt())
                );

            receiver.AssignCommandHandler(
                VmmCommands.RequestCustomMotionDoctor,
                _ => _manager.RunCustomMotionDoctor()
                );

            receiver.AssignQueryHandler(
                VmmQueries.GetAvailableCustomMotionClipNames,
                q =>
            {
                q.Result = string.Join("\t", _manager.LoadAvailableCustomMotionClipNames());
                Debug.Log("Get Available CustomMotion Clip Names, result = " + q.Result);
            });

            //NOTE: 残骸コードを残しときます。ビルトインモーション後の手の動きがちょっと心配ではあるよね、という話

            //NOTE: キーボード/マウスだけ消し、ゲームパッドや画像ハンドトラッキングがある、というケースでは多分無理にいじらないでも大丈夫です。
            // case MessageCommandNames.EnableHidArmMotion:
            //     //腕アニメーションが無効なとき、アニメーションの終了処理をちょっと切り替える
            //     manager.ShouldSetDefaultClipAfterMotion = !message.ToBoolean();
            //     break;
        }