public FaceControlManagerMessageIo( IMessageReceiver receiver, IMessageSender sender, EyeBonePostProcess eyeBonePostProcess, FaceControlManager faceControlManager ) { receiver.AssignCommandHandler( VmmCommands.AutoBlinkDuringFaceTracking, message => faceControlManager.PreferAutoBlinkOnWebCamTracking = message.ToBoolean() ); receiver.AssignCommandHandler( VmmCommands.FaceDefaultFun, message => faceControlManager.DefaultBlendShape.FaceDefaultFunValue = message.ParseAsPercentage() ); receiver.AssignCommandHandler( VmmCommands.SetEyeBoneRotationScale, message => eyeBonePostProcess.Scale = 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); }
public FaceControlManagerMessageIo( IMessageReceiver receiver, IMessageSender sender, EyeBonePostProcess eyeBonePostProcess, FaceControlManager faceControlManager ) { receiver.AssignCommandHandler( VmmCommands.AutoBlinkDuringFaceTracking, message => faceControlManager.PreferAutoBlinkOnWebCamTracking = message.ToBoolean() ); receiver.AssignCommandHandler( VmmCommands.FaceDefaultFun, message => faceControlManager.DefaultBlendShape.FaceDefaultFunValue = message.ParseAsPercentage() ); receiver.AssignCommandHandler( VmmCommands.SetEyeBoneRotationScale, message => eyeBonePostProcess.Scale = message.ParseAsPercentage() ); }