Exemple #1
0
    public static Mesh CreateEraseFeatureMaskMesh(Dictionary <string, Vector2> dic, LandmarkType type = LandmarkType.MTShowShow)
    {
        List <Vector3> vectors = new List <Vector3>();

        List <int> triangles = new List <int>();

        List <Color> colors = new List <Color>();

        if (type == LandmarkType.MTShowShow || type == LandmarkType.MeituOffline || type == LandmarkType.ARKitRemote)
        {
            var vertices1 = GetVectors(mt_eyebrow_left, dic);
            var vertices2 = GetVectors(mt_eyebrow_right, dic);
            var vertices3 = GetVectors(mt_mouth, dic);

            CreatePredictData(vertices1, vectors.Count, Color.red, Color.red, Color.clear, 0.03f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.red, Color.red, Color.clear, 0.03f, vectors, triangles, colors);
            CreatePredictData(vertices3, vectors.Count, Color.green, Color.green, Color.clear, 0.03f, vectors, triangles, colors);
        }
        else
        {
            throw new NotSupportedException();
        }

        Mesh ret = new Mesh();

        ret.SetVertices(vectors);
        ret.SetTriangles(triangles, 0);
        ret.SetColors(colors);

        return(ret);
    }
Exemple #2
0
        public static void GetLandmark(Texture tex, LandmarkType landmarkType,
                                       Action <Dictionary <string, Vector2> > callback, Action <float> uploadProgressCallback = null)
        {
            Debug.LogFormat("use landmark type = {0}", landmarkType);
            switch (landmarkType)
            {
                //case LandmarkType.MeituOffline:
                //    MeituSDK.ProcessLandmark(tex, callback);
                //break;
#if UNITY_EDITOR
            case LandmarkType.ARKitRemote:
                callback(ARKitRemoteLandmark.Landmarks);
                break;
#endif
            case LandmarkType.MTShowShow:
                LandmarkBase landmarkComp = UnityEngine.Object.FindObjectOfType <MTShowShowLandmark>();
                if (!landmarkComp.isActiveAndEnabled)
                {
                    landmarkComp.enabled = true;
                    landmarkComp.gameObject.SetActive(true);
                }
                landmarkComp.GetPhotoUVPosition(tex, callback, uploadProgressCallback);
                break;

            default:
                throw new NotSupportedException();
            }
        }
Exemple #3
0
 public Path(Edge edge, float length, UnitType utype = UnitType.Unit, LandmarkType ltype = LandmarkType.None)
 {
     this.edge            = edge;
     this.length          = length;
     this.allowedUnitType = utype;
     this.landmarkType    = ltype;
 }
        private static void collectTypeAndPositions(LandmarkType type, int positionX, int positionY)
        {
            switch (type)
            {
            case LandmarkType.NoseBase:
                Position nose = new Position("nose", positionX, positionY);
                positions.Add(nose);
                return;

            case LandmarkType.LeftEye:
                Position leftEye = new Position("leftEye", positionX, positionY);
                positions.Add(leftEye);
                return;

            case LandmarkType.RightEye:
                Position rightEye = new Position("rightEye", positionX, positionY);
                positions.Add(rightEye);
                return;

            case LandmarkType.BottomMouth:
                Position bottomMouth = new Position("bottomMouth", positionX, positionY);
                positions.Add(bottomMouth);
                return;

            case LandmarkType.RightMouth:
                Position rightMouth = new Position("rightMouth", positionX, positionY);
                positions.Add(rightMouth);
                return;
            }
        }
Exemple #5
0
    public static Mesh CreateNasalShadowMesh(Dictionary <string, Vector2> dic, LandmarkType type = LandmarkType.FacePP)
    {
        List <Vector3> vectors   = new List <Vector3>();
        List <int>     triangles = new List <int>();
        List <Color>   colors    = new List <Color>();

        if (type == LandmarkType.FacePP || type == LandmarkType.FacePPOnline)
        {
            var vertices1 = GetVectors(leftNasalShadow, dic);
            var vertices2 = GetVectors(rightNasalShadow, dic);
            CreatePredictData(vertices1, vectors.Count, Color.green * 0.5f, Color.green, Color.clear, 0.1f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.red * 0.5f, Color.red, Color.clear, 0.1f, vectors, triangles, colors);
        }
        else if (type == LandmarkType.Apple)
        {
            var vertices1 = GetVectors(apple_nose_left, dic);
            var vertices2 = GetVectors(apple_nose_right, dic);

            Modify(vertices1, -offsetRight, -offsetDown);
            Modify(vertices2, offsetRight, -offsetDown);
            CreatePredictData(vertices1, vectors.Count, Color.green * 0.5f, Color.green, Color.clear, 0.1f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.red * 0.5f, Color.red, Color.clear, 0.1f, vectors, triangles, colors);
        }
        else if (type == LandmarkType.Tencent)
        {
            var vertices1 = GetVectors(tencent_nose_left, dic);
            var vertices2 = GetVectors(tencent_nose_right, dic);
            CreatePredictData(vertices1, vectors.Count, Color.green * 0.5f, Color.green, Color.clear, 0.1f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.red * 0.5f, Color.red, Color.clear, 0.1f, vectors, triangles, colors);
        }
        else if (type == LandmarkType.MTShowShow)
        {
            var vertices1 = GetVectors(mt_nose_left, dic);
            var vertices2 = GetVectors(mt_nose_right, dic);
            CreatePredictData(vertices1, vectors.Count, Color.green * 0.5f, Color.green, Color.clear, 0.1f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.red * 0.5f, Color.red, Color.clear, 0.1f, vectors, triangles, colors);
        }


        Mesh ret = new Mesh();

        ret.SetVertices(vectors);
        ret.SetTriangles(triangles, 0);
        ret.SetColors(colors);

        ret.UploadMeshData(false);

        return(ret);
    }
        /// <summary>
        /// Updates the editing object with this editor's values.
        /// </summary>
        public void UpdateObject()
        {
            if (editingObject == null)
            {
                return;
            }

            LandmarkType newVal  = (LandmarkType)landmarkTypeDropdown.currentlySelected;
            bool         changed = editingObject.landmarkType != newVal;

            editingObject.landmarkType = newVal;

            if (changed)
            {
                ActionManager.shared.Push();
            }
        }
Exemple #7
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (LandmarkType.Length != 0)
            {
                hash ^= LandmarkType.GetHashCode();
            }
            if (commonData_ != null)
            {
                hash ^= CommonData.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Exemple #8
0
        public static bool IsResultUvSpace(this LandmarkType landmarkType)
        {
            switch (landmarkType)
            {
            case LandmarkType.FacePPOnline:
            case LandmarkType.Tencent:
            case LandmarkType.MTShowShow:
            case LandmarkType.FacePP:
            case LandmarkType.Apple:
                return(false);

            case LandmarkType.MeituOffline:
                return(true);

            default:
                throw new ArgumentOutOfRangeException(nameof(landmarkType), landmarkType, null);
            }
        }
Exemple #9
0
        public void FromJSON(FloorController api, JSONNode root)
        {
            Rectangle r = GetComponent <Rectangle>();

            r.SetCenter(new Vector2(root["center_x"].AsFloat, root["center_y"].AsFloat));
            r.SetSize(new Vector2(root["width"].AsFloat, root["height"].AsFloat));
            r.SetRotation(root["rotation"].AsFloat);
            LandmarkType t;

            try {
                t = (LandmarkType)Enum.Parse(typeof(LandmarkType), root["landmark_type"]);
            } catch (ArgumentException ex) {
                Debug.LogWarning("Bad landmark type loaded! " + ex.Message);
                t = LandmarkType.Restroom;
            }

            landmarkType = t;
            Update();
        }
        /// <summary>
        /// Converts a FlaUI <see cref="LandmarkType"/> to a <see cref="UIA.UIA_LandmarkTypeIds"/>.
        /// </summary>
        public static object ToLandmarkTypeNative(LandmarkType landmarkType)
        {
            switch (landmarkType)
            {
            case LandmarkType.CustomLandmark:
                return(UIA.UIA_LandmarkTypeIds.UIA_CustomLandmarkTypeId);

            case LandmarkType.FormLandmark:
                return(UIA.UIA_LandmarkTypeIds.UIA_FormLandmarkTypeId);

            case LandmarkType.MainLandmark:
                return(UIA.UIA_LandmarkTypeIds.UIA_MainLandmarkTypeId);

            case LandmarkType.NavigationLandmark:
                return(UIA.UIA_LandmarkTypeIds.UIA_NavigationLandmarkTypeId);

            case LandmarkType.SearchLandmark:
                return(UIA.UIA_LandmarkTypeIds.UIA_SearchLandmarkTypeId);

            default:
                throw new NotSupportedException();
            }
        }
        public override string ToString()
        {
            string txt = null;

            if (this.Value != null)
            {
                switch (this.Id)
                {
                case PropertyType.UIA_RuntimeIdPropertyId:
                    txt = this.ConvertIntArrayToString();
                    break;

                case PropertyType.UIA_ControlTypePropertyId:
                    txt = this.Value != null?ControlType.GetInstance().GetNameById(this.Value) : "";

                    break;

                case PropertyType.UIA_BoundingRectanglePropertyId:
                    // if bounding rectangle is [0,0,0,0], treat it as non-exist. same behavior as Inspect
                    txt = GetBoundingRectangleText();
                    break;

                case PropertyType.UIA_OrientationPropertyId:
                    switch ((int)this.Value)
                    {
                    case 0:         //OrientationType_None
                        txt = "None(0)";
                        break;

                    case 1:         //OrientationType_Horizontal
                        txt = "Horizontal(1)";
                        break;

                    case 2:         // OrientationType_Vertical
                        txt = "Vertical(2)";
                        break;
                    }
                    break;

                case PropertyType.UIA_PositionInSetPropertyId:
                case PropertyType.UIA_LevelPropertyId:
                case PropertyType.UIA_SizeOfSetPropertyId:
                    /// these properties are 1 based.
                    /// if value is smaller than 1, it should be ignored.
                    if (this.Value != null && this.Value > 0)
                    {
                        txt = this.Value?.ToString();
                    }
                    break;

                case PropertyType.UIA_HeadingLevelPropertyId:
                    txt = HeadingLevelType.GetInstance().GetNameById(this.Value);
                    break;

                case PropertyType.UIA_LandmarkTypePropertyId:
                    txt = this.Value != 0 ? LandmarkType.GetInstance().GetNameById(this.Value) : null;     // 0 is default value.
                    break;

                default:
                    if (this.Value is Int32[])
                    {
                        txt = ((Int32[])this.Value).ConvertInt32ArrayToString();
                    }
                    else if (this.Value is Double[])
                    {
                        txt = ((Double[])this.Value).ConvertDoubleArrayToString();
                    }
                    else
                    {
                        txt = this.Value?.ToString();
                    }
                    break;
                }
            }
            return(txt);
        }
Exemple #12
0
 internal static extern Int32 PXCMFaceData_LandmarksData_QueryPointIndex(IntPtr instance, LandmarkType name);
Exemple #13
0
    public static Mesh CreateMaskMesh1(Dictionary <string, Vector2> dic, float predictHeight,
                                       LandmarkType type = LandmarkType.FacePP, AnimationCurve curve = null)
    {
        List <Vector3> vectors = new List <Vector3>();

        List <int> triangles = new List <int>();

        List <Color> colors = new List <Color>();

        if (type == LandmarkType.FacePP || type == LandmarkType.FacePPOnline)
        {
            var vertices1 = GetVectors(left_eyebrow1, dic);
            var vertices2 = GetVectors(right_eyebrow1, dic);
            var vertices3 = GetVectors(left_eye1, dic);
            var vertices4 = GetVectors(right_eye1, dic);
            var vertices5 = GetVectors(mouth1, dic);

            CreatePredictData(vertices1, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices3, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices4, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices5, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);

            leftEyeUV  = vertices3;
            rightEyeUV = vertices4;
        }
        else if (type == LandmarkType.Apple)
        {
            var vertices1         = GetVectors(apple_eyebrow_left, dic);
            var vertices2         = GetVectors(apple_eyebrow_right, dic);
            var vertices3         = GetVectors(apple_eye_left, dic);
            var vertices4         = GetVectors(apple_eye_right, dic);
            var vertices5         = GetVectors(apple_mouth, dic);
            var vertices1_predict = PredictEyebrow(vertices1, predictHeight, curve, false);
            var vertices2_predict = PredictEyebrow(vertices2, predictHeight, curve, true);

            CreatePredictData(vertices1_predict, vectors.Count, Color.white, Color.clear, Color.white, 0.04f, vectors, triangles, colors);
            CreatePredictData(vertices2_predict, vectors.Count, Color.white, Color.clear, Color.white, 0.04f, vectors, triangles, colors);
            CreatePredictData(vertices3, vectors.Count, Color.white, Color.clear, Color.white, 0.08f, vectors, triangles, colors);
            CreatePredictData(vertices4, vectors.Count, Color.white, Color.clear, Color.white, 0.08f, vectors, triangles, colors);
            CreatePredictData(vertices5, vectors.Count, Color.white, Color.clear, Color.white, 0.08f, vectors, triangles, colors);

            leftEyeUV  = vertices3;
            rightEyeUV = vertices4;
        }
        else if (type == LandmarkType.Tencent)
        {
            var vertices1 = GetVectors(tencent_eyebrow_left, dic);
            var vertices2 = GetVectors(tencent_eyebrow_right, dic);
            var vertices3 = GetVectors(tencent_eye_left, dic);
            var vertices4 = GetVectors(tencent_eye_right, dic);
            var vertices5 = GetVectors(tencent_mouth, dic);

            CreatePredictData(vertices1, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices3, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices4, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices5, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);

            leftEyeUV  = vertices3;
            rightEyeUV = vertices4;
        }
        else if (type == LandmarkType.MTShowShow || type == LandmarkType.MeituOffline || type == LandmarkType.ARKitRemote)
        {
            var vertices1 = GetVectors(mt_eyebrow_left, dic);
            var vertices2 = GetVectors(mt_eyebrow_right, dic);
            var vertices3 = GetVectors(mt_eye_left, dic);
            var vertices4 = GetVectors(mt_eye_right, dic);
            var vertices5 = GetVectors(mt_mouth, dic);

            CreatePredictData(vertices1, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices2, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices3, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices4, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);
            CreatePredictData(vertices5, vectors.Count, Color.white, Color.clear, Color.white, 0.02f, vectors, triangles, colors);

            leftEyeUV  = vertices3;
            rightEyeUV = vertices4;
        }
        else
        {
            throw new NotSupportedException();
        }

        Mesh ret = new Mesh();

        ret.SetVertices(vectors);
        ret.SetTriangles(triangles, 0);
        ret.SetColors(colors);

        ret.UploadMeshData(false);

        return(ret);
    }
Exemple #14
0
 /*
 * Mapping function -> retrieves index corresponding to landmark's name.
 */
 public Int32 QueryPointIndex(LandmarkType name)
 {
     return PXCMFaceData_LandmarksData_QueryPointIndex(instance, name);
 }
Exemple #15
0
 /*
  * Mapping function -> retrieves index corresponding to landmark's name.
  */
 public Int32 QueryPointIndex(LandmarkType name)
 {
     return(PXCMFaceData_LandmarksData_QueryPointIndex(instance, name));
 }
Exemple #16
0
 internal static extern Int32 PXCMFaceData_LandmarksData_QueryPointIndex(IntPtr instance, LandmarkType name);