Beispiel #1
0
        void Update()
        {
            if (!enabled)
            {
                return;
            }
            curMousePosition = new Vector3(Input.mousePosition.x, screen.y - Input.mousePosition.y, 0f);
            bool mouseOnLeftSide = Input.mousePosition.x < screen.x / 2;

            if ((mouseOnLeftSide && !isLeftEye) || (!mouseOnLeftSide && isLeftEye))
            {
                closestVertex = -1; return;
            }
            Cursor.visible = !(new Rect(0f, 0f, screen.x, screen.y).Contains(Input.mousePosition));

            if (!Application.isEditor)
            {
                return;
            }
            if (closestVertex != -1 && Input.GetMouseButton(0) || Input.GetMouseButtonDown(1))
            {
                //Move a control point if it already exists
                for (int i = 0; i < vertexIndices.Count; i++)
                {
                    if (closestVertex == vertexIndices[i])
                    {
                        Ray cameraRay = mainCamera.ScreenPointToRay(curMousePosition);
                        if (!Input.GetMouseButtonDown(1))
                        {
                            Vector3 start = filter.transform.InverseTransformPoint(cameraRay.origin);
                            controlPoints[i] = new Vector3(start.x, start.y, 0f);
                            calibrationMesh.updateMeshDeformation(ref filter, controlPoints.ToArray(), true, 1.5f, 10);
                        }
                        else
                        {
                            vertexIndices.RemoveAt(i);
                            controlPoints.RemoveAt(i);
                            InitializeMeshDeformations();
                        }
                        return;
                    }
                }

                //If control point doesn't already exist, create a new one
                if (!Input.GetMouseButtonDown(1))
                {
                    vertexIndices.Add(closestVertex);
                    controlPoints.Add(calibrationMesh.distortedMeshVertices[closestVertex]);
                    InitializeMeshDeformations();
                }
            }
            else if (Input.mousePosition != lastMousePosition)
            {
                //Find closest vertex to mouse position
                closestVertex = findClosestVertexToMouse(calibrationMesh, mainCamera);
            }
            lastMousePosition = Input.mousePosition;
        }
Beispiel #2
0
 public void InitializeMeshDeformations()
 {
     if (!enabled)
     {
         return;
     }
     calibrationMesh = new MeshDeformer(filter, vertexIndices.ToArray());
     calibrationMesh.updateMeshDeformation(ref filter, controlPoints.ToArray(), true, 2f, 50);
 }