void Start()
    {
        var server = GetComponent <uOSC.uOscServer>();

        server.onDataReceived.AddListener(OnDataReceived);

        window                    = GameObject.Find("ControlWPFWindow").GetComponent <ControlWPFWindow>();
        faceController            = GameObject.Find("AnimationController").GetComponent <FaceController>();
        window.ModelLoadedAction += (GameObject CurrentModel) =>
        {
            if (CurrentModel != null)
            {
                this.CurrentModel = CurrentModel;
                vrmLookAtHead     = CurrentModel.GetComponent <VRMLookAtHead>();
            }
        };
        window.CameraChangedAction += (Camera currentCamera) =>
        {
            this.currentCamera = currentCamera;
        };

        beforeFaceApply = () =>
        {
            vrmLookAtHead.Target = lookTargetOSC.transform;
            vrmLookAtHead.LookWorldPosition();
            vrmLookAtHead.Target = null;
        };
    }
Пример #2
0
        public void Initialize(
            IVRMLoadable vrmLoadable,
            Camera mainCam,
            IKTargetTransforms ikTargets,
            FaceControlConfiguration faceControlConfig)
        {
            _camera            = mainCam.transform;
            _lookAtTarget      = ikTargets.LookAt;
            _faceControlConfig = faceControlConfig;

            vrmLoadable.VrmLoaded += info =>
            {
                _head          = info.animator.GetBoneTransform(HumanBodyBones.Head);
                _lookAtIk      = info.vrmRoot.GetComponent <LookAtIK>();
                _vrmLookAtHead = info.vrmRoot.GetComponent <VRMLookAtHead>();
                _hasModel      = true;
            };
            vrmLoadable.VrmDisposing += () =>
            {
                _hasModel      = false;
                _lookAtIk      = null;
                _vrmLookAtHead = null;
                _head          = null;
            };
        }
        void Start()
        {
            var server = GetComponent <uOSC.uOscServer>();

            server.onDataReceived.AddListener(OnDataReceived);

            window                   = GameObject.Find("ControlWPFWindow").GetComponent <ControlWPFWindow>();
            faceController           = GameObject.Find("AnimationController").GetComponent <FaceController>();
            VMCEvents.OnModelLoaded += (GameObject CurrentModel) =>
            {
                if (CurrentModel != null)
                {
                    this.CurrentModel = CurrentModel;
                    vrmLookAtHead     = CurrentModel.GetComponent <VRMLookAtHead>();
                    animator          = CurrentModel.GetComponent <Animator>();
                    headTransform     = null;
                    if (animator != null)
                    {
                        headTransform = animator.GetBoneTransform(HumanBodyBones.Head);
                    }
                }
            };
            VMCEvents.OnCameraChanged += (Camera currentCamera) =>
            {
                this.currentCamera = currentCamera;
            };

            beforeFaceApply = () =>
            {
                vrmLookAtHead.Target = lookTargetOSC.transform;
                vrmLookAtHead.LookWorldPosition();
                vrmLookAtHead.Target = null;
            };
        }
Пример #4
0
    // Use this for initialization
    void Start()
    {
        if (!targetObject)
        {
            targetObject      = new GameObject("LookAtTarget");
            isNewTargetObject = true;
        }

        lookAtHead      = GetComponent <VRMLookAtHead>();
        blendShapeProxy = GetComponent <VRMBlendShapeProxy>();

        if (lookAtHead)
        {
            lookAtHead.Target     = targetObject.transform;
            lookAtHead.UpdateType = UpdateType.LateUpdate;

            headTransform = lookAtHead.Head;
        }
        if (!headTransform)
        {
            headTransform = this.transform;
        }

        // マウスカーソルとの奥行きに反映させるためカメラを取得
        if (!currentCamera)
        {
            currentCamera = Camera.main;
        }

        animator      = GetComponent <Animator>();
        currentState  = animator.GetCurrentAnimatorStateInfo(0);
        previousState = currentState;
        // ランダム判定用関数をスタートする
        StartCoroutine("RandomChange");
    }
Пример #5
0
    void Start()
    {
        vrmLookAtHead = GetComponent <VRMLookAtHead>();
        vrIK          = gameObject.AddComponent <VRIK>();

        _SetupVRIK();
        _SetupLockAtHead();
    }
Пример #6
0
        public void SetVideoChatMode(VRMLookAtHead lookAtHead, LookAtIK lookAtIk, VRMFirstPerson firstPerson)
        {
            lookAtHead.Target      = Camera.main.transform;
            lookAtIk.solver.target = lookAtHead.Target;
            var headCenter = firstPerson.FirstPersonBone.localToWorldMatrix.MultiplyPoint(firstPerson.FirstPersonOffset);

            headCenter.z = .9f;
            Camera.main.transform.position = headCenter;
            _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.EnableDesktopShareMode, false.ToString()));
        }
Пример #7
0
        public void OnModelChanged(Animator target)
        {
            if (target != null)
            {
                blendShapeProxy = target.GetComponent <VMCBlendShapeProxy> ();
                if (blendShapeProxy != null)
                {
                    _lookAtHead = blendShapeProxy.GetComponent <VRMLookAtHead> ();
                    Debug.Assert(_lookAtHead != null);

                    blinker.blendShapeProxy = blendShapeProxy;
                }
            }
        }
Пример #8
0
 private void Start()
 {
     m_head = GetComponent <VRMLookAtHead>();
     if (faceController == null)
     {
         faceController = GameObject.Find("AnimationController").GetComponent <FaceController>();
     }
     if (m_head == null)
     {
         enabled = false;
         return;
     }
     m_head.YawPitchChanged += ApplyRotations;
 }
Пример #9
0
    // Use this for initialization
    void Start()
    {
        animator = GetComponent <Animator>();
        if (animator != null)
        {
            rightHandTransform = animator.GetBoneTransform(HumanBodyBones.RightHand);
            leftHandTransform  = animator.GetBoneTransform(HumanBodyBones.LeftHand);

            // Humanoidならばここで探すのでエディタ上でHeadTransformは指定不要
            if (HeadTransform == null)
            {
                HeadTransform = animator.GetBoneTransform(HumanBodyBones.Head);
            }
        }

        lookAtHead      = GetComponent <VRMLookAtHead>();
        blendShapeProxy = GetComponent <VRMBlendShapeProxy>();
    }
Пример #10
0
 internal override void OnAwakeInEditor()
 {
     if (LookAt == null)
     {
         LookAt = GetComponent <VRMLookAtHead>();
         var animator = GetComponent <Animator>();
         if (animator == null)
         {
             return;
         }
         var head = animator.GetBoneTransform(HumanBodyBones.Head);
         LookAt.Head = head;
     }
     if (Applyer == null)
     {
         Applyer = GetComponent <VRMLookAtBoneApplyer>();
         Applyer.SendMessage("Start"); // FIXME: Start() を直接呼ばないとダメかも
     }
     if (InterpolatedTarget == null)
     {
         InterpolatedTarget = SceneView.lastActiveSceneView.camera.gameObject.transform.position;
     }
     if (faceMesh == null)
     {
         foreach (var mesh in GetComponentsInChildren <SkinnedMeshRenderer>())
         {
             if (mesh.gameObject.name == "Face")
             {
                 faceMesh = mesh;
             }
         }
     }
     if (angryShapeWeights == null)
     {
         angryShapeWeights = new BlendShapeWeight[] {
             new BlendShapeWeight {
                 Index = 0, Weight = 100
             }
         };
     }
     // EditorApplication.playModeStateChanged -= OnPlayModeChanged;
     // EditorApplication.playModeStateChanged += OnPlayModeChanged;
 }
Пример #11
0
    void Start()
    {
        var server = GetComponent <uOSC.uOscServer>();

        server.onDataReceived.AddListener(OnDataReceived);

        window = GameObject.Find("ControlWPFWindow").GetComponent <ControlWPFWindow>();
        window.ModelLoadedAction += (GameObject CurrentModel) =>
        {
            if (CurrentModel != null)
            {
                this.CurrentModel = CurrentModel;
                blendShapeProxy   = CurrentModel.GetComponent <VRMBlendShapeProxy>();
                vrmLookAtHead     = CurrentModel.GetComponent <VRMLookAtHead>();
            }
        };
        window.CameraChangedAction += (Camera currentCamera) =>
        {
            this.currentCamera = currentCamera;
        };
    }
Пример #12
0
    // Use this for initialization
    void Start()
    {
        if (!targetObject)
        {
            targetObject       = new GameObject("LookAtTarget");
            hasNewTargetObject = true;
        }

        lookAtHead      = GetComponent <VRMLookAtHead>();
        blendShapeProxy = GetComponent <VRMBlendShapeProxy>();

        if (lookAtHead)
        {
            lookAtHead.Target     = targetObject.transform;
            lookAtHead.UpdateType = UpdateType.LateUpdate;

            headTransform = lookAtHead.Head;
        }
        if (!headTransform)
        {
            headTransform = this.transform;
        }

        // マウスカーソルとの奥行きに反映させるためカメラを取得
        if (!currentCamera)
        {
            currentCamera = Camera.main;
        }

        // UIコントローラーを取得
        if (!uiController)
        {
            uiController = FindObjectOfType <VrmUiController>();
        }

        SetAnimator(GetComponent <Animator>());

        currentState  = animator.GetCurrentAnimatorStateInfo(0);
        previousState = currentState;
    }
Пример #13
0
    private bool isNewTargetObject = false; // 新規に目標オブジェクトを作成したらtrue

    // Use this for initialization
    void Start()
    {
        if (!targetObject)
        {
            targetObject      = new GameObject("LookAtTarget");
            isNewTargetObject = true;
        }

        lookAtHead      = GetComponent <VRMLookAtHead>();
        blendShapeProxy = GetComponent <VRMBlendShapeProxy>();

        if (lookAtHead)
        {
            lookAtHead.Target     = targetObject.transform;
            lookAtHead.UpdateType = UpdateType.LateUpdate;

            headTransform = lookAtHead.Head;
        }
        if (!headTransform)
        {
            headTransform = this.transform;
        }
    }