public void Initialize(HeadPoints headPoints, List <Vector3> facialFeatures, Vector2 topPoint) { if (facialFeatures.Count < headPoints.Points.Count) { return; } if (headPoints.Points.Count <= RootIndex) { return; } if (headPoints.Points.Count <= HelperIndex) { return; } rootPointWorld = headPoints.GetWorldPoint(RootIndex); var helperPointWorld = headPoints.GetWorldPoint(HelperIndex); rootPointPhoto = facialFeatures[RootIndex]; var helperPointPhoto = facialFeatures[HelperIndex]; float distWorld = rootPointWorld.X - helperPointWorld.X; float distPhoto = rootPointPhoto.X - helperPointPhoto.X; scale = distWorld / distPhoto; Initialize(facialFeatures, topPoint); }
//=================================== OLD =================================== public void ProcessPoints_old(ProjectedDots dots, HeadPoints points) { projectedDots = dots; headPoints = points; headIndices.Clear(); for (int i = 0; i < dots.Points.Count; ++i) { headIndices.Add(i); } var rotaionMatrix = ProgramCore.MainForm.ctrlRenderControl.headMeshesController.RenderMesh.RotationMatrix; Matrix4.Invert(ref rotaionMatrix, out RotationMatrix); rightPower = 1.0f - Math.Abs(ProgramCore.MainForm.ctrlRenderControl.headMeshesController.RenderMesh.HeadAngle) * 2.0f / (float)Math.PI; //rightPower = Math.Min(1.0f, Math.Max(rightPower, 0.0f)); // (float)Math.Cos(headPoints.HeadMesh.HeadAngle); rightVector = headPoints.GetWorldPoint(new Vector3(1.0f, 0.0f, 0.0f)); forwardVector = headPoints.GetWorldPoint(new Vector3(0.0f, 0.0f, 1.0f)); ProcessHeadPoints_old(); //SpecialAlignment(); // выравниваем точки рта-глаз-носа по центру лица // MirrorPoints(headPoints.HeadMesh.HeadAngle > 0.0f); // отразить форму лица зеркально }
public void DrawTriangles(HeadPoints headPoints) { GL.Begin(PrimitiveType.Triangles); GL.Color4(0.0f, 1.0f, 0.0f, 0.3f); foreach (var triangle in TrianglesFront) { var a = headPoints.GetWorldPoint(triangle.A); var b = headPoints.GetWorldPoint(triangle.B); var c = headPoints.GetWorldPoint(triangle.C); GL.Vertex3(a); GL.Vertex3(b); GL.Vertex3(c); } GL.End(); }
public void ProcessPoints(ProjectedDots dots, HeadPoints points) { projectedDots = dots; headPoints = points; rightVector = headPoints.GetWorldPoint(new Vector3(1.0f, 0.0f, 0.0f)); forwardVector = headPoints.GetWorldPoint(new Vector3(0.0f, 0.0f, 1.0f)); upVector = headPoints.GetWorldPoint(new Vector3(0.0f, 1.0f, 0.0f)); headIndices.Clear(); for (int i = 0; i < dots.Points.Count; ++i) { headIndices.Add(i); } var rotationMatrix = ProgramCore.MainForm.ctrlRenderControl.headMeshesController.RenderMesh.RotationMatrix; Matrix4.Invert(ref rotationMatrix, out RotationMatrix); ProcessHeadPoints(); FixLipsPoints(); }
public void Initialize(HeadPoints hPoints, List <Vector3> facialFeatures) { MirroredPoints.Clear(); AutodotsTexCords.Clear(); for (int i = 0; i < MorphHelper.mirroredPoints.Count; i += 2) { MirroredPoints.Add(MorphHelper.mirroredPoints[i], MorphHelper.mirroredPoints[i + 1]); MirroredPoints.Add(MorphHelper.mirroredPoints[i + 1], MorphHelper.mirroredPoints[i]); } headPoints = hPoints; var headMesh = ProgramCore.MainForm.ctrlRenderControl.headMeshesController.RenderMesh; var a = headMesh.AABB.A; var b = headMesh.AABB.B; b.Z += 0.15f; var b1 = new Vector3(a.X, b.Y, b.Z); var b2 = new Vector3(a.X, a.Y, b.Z); var b3 = new Vector3(b.X, a.Y, b.Z); float centerX = (a.X + b.X) * 0.5f; float centerZ = (a.Z + b.Z) * 0.5f; var a1 = new Vector3(centerX, a.Y, centerZ); var a2 = new Vector3(centerX, b.Y, centerZ); foreach (var point in facialFeatures) { AutodotsTexCords.Add(point.Xy); } var NoseDot = headPoints.Points[2]; NoseDot.Z = b.Z; headPoints.Points[2] = NoseDot; headPoints.Points.Add(b); //70 AutodotsTexCords.Add(new Vector2(1f, 0f)); headPoints.Points.Add((b + b1) * 0.5f); //71 AutodotsTexCords.Add(new Vector2(0.5f, 0f)); headPoints.Points.Add(b1); //72 AutodotsTexCords.Add(new Vector2(0f, 0f)); headPoints.Points.Add((b1 + b2) * 0.5f); //73 AutodotsTexCords.Add(new Vector2(0f, 0.5f)); headPoints.Points.Add(b2); //74 AutodotsTexCords.Add(new Vector2(0f, 1f)); headPoints.Points.Add((b2 + b3) * 0.5f); //75 AutodotsTexCords.Add(new Vector2(0.5f, 1f)); headPoints.Points.Add(b3); //76 AutodotsTexCords.Add(new Vector2(1f, 1f)); headPoints.Points.Add((b3 + b) * 0.5f); //77 AutodotsTexCords.Add(new Vector2(1f, 0.5f)); headPoints.Points.Add(a1); //78 headPoints.Points.Add(a2); //79 foreach (var point in headPoints.Points) { headPoints.OriginalPoints.Add(point); } MirroredPoints.Add(72, 70); MirroredPoints.Add(73, 77); MirroredPoints.Add(74, 76); MirroredPoints.Add(70, 72); MirroredPoints.Add(77, 73); MirroredPoints.Add(76, 74); headPoints.IsVisible.AddRange(Enumerable.Repeat(true, 10)); #region TrianglesFront // left oval //TrianglesFront.Add(new MorphTriangle { A = 52, B = 3, C = 68, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 52, B = 5, C = 68, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 52, B = 66, C = 68, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 66, B = 73, C = 68, Type = MorphTriangleType.Left }); //TrianglesFront.Add(new MorphTriangle { A = 5, B = 3, C = 68, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 5, B = 52, C = 3, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 5, B = 74, C = 68, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 5, B = 3, C = 7, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 5, B = 74, C = 7, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 3, B = 58, C = 7, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 9, B = 58, C = 7, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 9, B = 58, C = 55, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 9, B = 55, C = 11, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 9, B = 7, C = 74, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 45, B = 66, C = 43, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 66, B = 52, C = 45, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 73, B = 74, C = 68, Type = MorphTriangleType.Left }); TrianglesFront.Add(new MorphTriangle { A = 9, B = 11, C = 75 }); TrianglesFront.Add(new MorphTriangle { A = 74, B = 75, C = 9 }); TrianglesFront.Add(new MorphTriangle { A = 23, B = 66, C = 43 }); TrianglesFront.Add(new MorphTriangle { A = 72, B = 73, C = 12 }); TrianglesFront.Add(new MorphTriangle { A = 72, B = 71, C = 16 }); TrianglesFront.Add(new MorphTriangle { A = 66, B = 12, C = 23 }); TrianglesFront.Add(new MorphTriangle { A = 66, B = 73, C = 12 }); //right oval //TrianglesFront.Add(new MorphTriangle { A = 4, B = 53, C = 69, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 69, B = 53, C = 6, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 67, B = 53, C = 69, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 67, B = 77, C = 69, Type = MorphTriangleType.Right }); //TrianglesFront.Add(new MorphTriangle { A = 6, B = 4, C = 69, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 53, B = 4, C = 6, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 6, B = 76, C = 69, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 6, B = 4, C = 8, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 6, B = 76, C = 8, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 4, B = 59, C = 8, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 10, B = 59, C = 8, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 10, B = 59, C = 55, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 10, B = 55, C = 11, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 10, B = 8, C = 76, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 46, B = 67, C = 44, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 46, B = 53, C = 67, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 76, B = 77, C = 69, Type = MorphTriangleType.Right }); TrianglesFront.Add(new MorphTriangle { A = 10, B = 11, C = 75 }); TrianglesFront.Add(new MorphTriangle { A = 75, B = 10, C = 76 }); TrianglesFront.Add(new MorphTriangle { A = 67, B = 77, C = 15 }); TrianglesFront.Add(new MorphTriangle { A = 26, B = 67, C = 44 }); TrianglesFront.Add(new MorphTriangle { A = 70, B = 77, C = 15 }); TrianglesFront.Add(new MorphTriangle { A = 26, B = 67, C = 15 }); TrianglesFront.Add(new MorphTriangle { A = 71, B = 70, C = 17 }); //left eye TrianglesFront.Add(new MorphTriangle { A = 23, B = 35, C = 37 }); TrianglesFront.Add(new MorphTriangle { A = 0, B = 35, C = 37 }); TrianglesFront.Add(new MorphTriangle { A = 28, B = 35, C = 0 }); TrianglesFront.Add(new MorphTriangle { A = 28, B = 36, C = 0 }); TrianglesFront.Add(new MorphTriangle { A = 36, B = 24, C = 38 }); TrianglesFront.Add(new MorphTriangle { A = 36, B = 0, C = 38 }); TrianglesFront.Add(new MorphTriangle { A = 27, B = 0, C = 38 }); TrianglesFront.Add(new MorphTriangle { A = 27, B = 0, C = 37 }); //left eyelash TrianglesFront.Add(new MorphTriangle { A = 23, B = 12, C = 18 }); TrianglesFront.Add(new MorphTriangle { A = 18, B = 35, C = 23 }); TrianglesFront.Add(new MorphTriangle { A = 18, B = 35, C = 16 }); TrianglesFront.Add(new MorphTriangle { A = 28, B = 35, C = 16 }); TrianglesFront.Add(new MorphTriangle { A = 28, B = 19, C = 16 }); TrianglesFront.Add(new MorphTriangle { A = 28, B = 19, C = 36 }); TrianglesFront.Add(new MorphTriangle { A = 13, B = 19, C = 36 }); TrianglesFront.Add(new MorphTriangle { A = 24, B = 22, C = 13 }); TrianglesFront.Add(new MorphTriangle { A = 13, B = 36, C = 24 }); TrianglesFront.Add(new MorphTriangle { A = 38, B = 24, C = 43 }); TrianglesFront.Add(new MorphTriangle { A = 37, B = 27, C = 43 }); TrianglesFront.Add(new MorphTriangle { A = 37, B = 23, C = 43 }); //right eye TrianglesFront.Add(new MorphTriangle { A = 26, B = 40, C = 42 }); TrianglesFront.Add(new MorphTriangle { A = 1, B = 40, C = 42 }); TrianglesFront.Add(new MorphTriangle { A = 32, B = 40, C = 1 }); TrianglesFront.Add(new MorphTriangle { A = 32, B = 39, C = 1 }); TrianglesFront.Add(new MorphTriangle { A = 39, B = 25, C = 41 }); TrianglesFront.Add(new MorphTriangle { A = 39, B = 1, C = 41 }); TrianglesFront.Add(new MorphTriangle { A = 31, B = 1, C = 41 }); TrianglesFront.Add(new MorphTriangle { A = 31, B = 1, C = 42 }); //right eyelash TrianglesFront.Add(new MorphTriangle { A = 26, B = 15, C = 21 }); TrianglesFront.Add(new MorphTriangle { A = 21, B = 40, C = 26 }); TrianglesFront.Add(new MorphTriangle { A = 21, B = 40, C = 17 }); TrianglesFront.Add(new MorphTriangle { A = 32, B = 40, C = 17 }); TrianglesFront.Add(new MorphTriangle { A = 32, B = 20, C = 17 }); TrianglesFront.Add(new MorphTriangle { A = 32, B = 20, C = 39 }); TrianglesFront.Add(new MorphTriangle { A = 14, B = 20, C = 39 }); TrianglesFront.Add(new MorphTriangle { A = 25, B = 22, C = 14 }); TrianglesFront.Add(new MorphTriangle { A = 14, B = 25, C = 39 }); TrianglesFront.Add(new MorphTriangle { A = 25, B = 41, C = 44 }); TrianglesFront.Add(new MorphTriangle { A = 31, B = 42, C = 44 }); TrianglesFront.Add(new MorphTriangle { A = 26, B = 42, C = 44 }); //middle face TrianglesFront.Add(new MorphTriangle { A = 14, B = 22, C = 13 }); // Upper part TrianglesFront.Add(new MorphTriangle { A = 12, B = 18, C = 72 }); TrianglesFront.Add(new MorphTriangle { A = 16, B = 18, C = 72 }); TrianglesFront.Add(new MorphTriangle { A = 16, B = 19, C = 71 }); TrianglesFront.Add(new MorphTriangle { A = 13, B = 19, C = 71 }); TrianglesFront.Add(new MorphTriangle { A = 13, B = 14, C = 71 }); TrianglesFront.Add(new MorphTriangle { A = 14, B = 20, C = 71 }); TrianglesFront.Add(new MorphTriangle { A = 17, B = 20, C = 71 }); TrianglesFront.Add(new MorphTriangle { A = 17, B = 21, C = 70 }); TrianglesFront.Add(new MorphTriangle { A = 15, B = 21, C = 70 }); // nose TrianglesFront.Add(new MorphTriangle { A = 43, B = 22, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 43, B = 45, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 47, B = 45, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 44, B = 22, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 44, B = 46, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 46, B = 48, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 48, B = 49, C = 2 }); TrianglesFront.Add(new MorphTriangle { A = 47, B = 49, C = 2 }); // nose-eyes TrianglesFront.Add(new MorphTriangle { A = 25, B = 22, C = 44 }); TrianglesFront.Add(new MorphTriangle { A = 44, B = 41, C = 31 }); TrianglesFront.Add(new MorphTriangle { A = 24, B = 22, C = 43 }); TrianglesFront.Add(new MorphTriangle { A = 43, B = 38, C = 27 }); // left mouth TrianglesFront.Add(new MorphTriangle { A = 3, B = 52, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 45, B = 52, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 45, B = 47, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 49, B = 47, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 49, B = 54, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 3, B = 60, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 3, B = 60, C = 63 }); TrianglesFront.Add(new MorphTriangle { A = 3, B = 58, C = 63 }); TrianglesFront.Add(new MorphTriangle { A = 64, B = 58, C = 55 }); TrianglesFront.Add(new MorphTriangle { A = 63, B = 61, C = 64 }); TrianglesFront.Add(new MorphTriangle { A = 60, B = 54, C = 61 }); TrianglesFront.Add(new MorphTriangle { A = 60, B = 54, C = 56 }); TrianglesFront.Add(new MorphTriangle { A = 63, B = 64, C = 58 }); TrianglesFront.Add(new MorphTriangle { A = 63, B = 60, C = 61 }); // right mouth TrianglesFront.Add(new MorphTriangle { A = 4, B = 53, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 46, B = 53, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 46, B = 48, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 49, B = 48, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 49, B = 54, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 4, B = 62, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 4, B = 62, C = 65 }); TrianglesFront.Add(new MorphTriangle { A = 4, B = 59, C = 65 }); TrianglesFront.Add(new MorphTriangle { A = 64, B = 59, C = 55 }); TrianglesFront.Add(new MorphTriangle { A = 65, B = 61, C = 64 }); TrianglesFront.Add(new MorphTriangle { A = 62, B = 54, C = 61 }); TrianglesFront.Add(new MorphTriangle { A = 62, B = 54, C = 57 }); TrianglesFront.Add(new MorphTriangle { A = 65, B = 64, C = 59 }); TrianglesFront.Add(new MorphTriangle { A = 65, B = 62, C = 61 }); #endregion #region Triangles right TrianglesRight.Add(new MorphTriangle { A = 5, B = 7, C = 78 }); TrianglesRight.Add(new MorphTriangle { A = 9, B = 7, C = 78 }); TrianglesRight.Add(new MorphTriangle { A = 9, B = 11, C = 78 }); TrianglesRight.Add(new MorphTriangle { A = 11, B = 75, C = 78 }); //TrianglesRight.Add(new MorphTriangle { A = 5, B = 3, C = 68 }); TrianglesRight.Add(new MorphTriangle { A = 5, B = 52, C = 3 }); TrianglesRight.Add(new MorphTriangle { A = 66, B = 12, C = 79 }); TrianglesRight.Add(new MorphTriangle { A = 66, B = 43, C = 45 }); TrianglesRight.Add(new MorphTriangle { A = 66, B = 45, C = 68 }); TrianglesRight.Add(new MorphTriangle { A = 50, B = 45, C = 68 }); TrianglesRight.Add(new MorphTriangle { A = 50, B = 52, C = 68 }); //TrianglesRight.Add(new MorphTriangle { A = 68, B = 52, C = 3 }); TrianglesRight.Add(new MorphTriangle { A = 68, B = 52, C = 5 }); TrianglesRight.Add(new MorphTriangle { A = 5, B = 7, C = 3 }); TrianglesRight.Add(new MorphTriangle { A = 7, B = 63, C = 3 }); TrianglesRight.Add(new MorphTriangle { A = 55, B = 75, C = 11 }); TrianglesRight.Add(new MorphTriangle { A = 55, B = 58, C = 11 }); TrianglesRight.Add(new MorphTriangle { A = 9, B = 58, C = 11 }); TrianglesRight.Add(new MorphTriangle { A = 9, B = 63, C = 7 }); TrianglesRight.Add(new MorphTriangle { A = 63, B = 58, C = 9 }); TrianglesRight.Add(new MorphTriangle { A = 12, B = 79, C = 18 }); TrianglesRight.Add(new MorphTriangle { A = 72, B = 79, C = 18 }); TrianglesRight.Add(new MorphTriangle { A = 72, B = 16, C = 18 }); TrianglesRight.Add(new MorphTriangle { A = 72, B = 16, C = 73 }); TrianglesRight.Add(new MorphTriangle { A = 73, B = 13, C = 16 }); TrianglesRight.Add(new MorphTriangle { A = 73, B = 13, C = 22 }); TrianglesRight.Add(new MorphTriangle { A = 73, B = 2, C = 22 }); TrianglesRight.Add(new MorphTriangle { A = 2, B = 49, C = 47 }); TrianglesRight.Add(new MorphTriangle { A = 2, B = 43, C = 47 }); TrianglesRight.Add(new MorphTriangle { A = 45, B = 43, C = 47 }); TrianglesRight.Add(new MorphTriangle { A = 45, B = 49, C = 47 }); TrianglesRight.Add(new MorphTriangle { A = 50, B = 49, C = 45 }); TrianglesRight.Add(new MorphTriangle { A = 50, B = 52, C = 56 }); TrianglesRight.Add(new MorphTriangle { A = 3, B = 52, C = 56 }); TrianglesRight.Add(new MorphTriangle { A = 2, B = 43, C = 22 }); TrianglesRight.Add(new MorphTriangle { A = 37, B = 43, C = 22 }); TrianglesRight.Add(new MorphTriangle { A = 37, B = 43, C = 66 }); TrianglesRight.Add(new MorphTriangle { A = 37, B = 23, C = 66 }); TrianglesRight.Add(new MorphTriangle { A = 12, B = 23, C = 66 }); TrianglesRight.Add(new MorphTriangle { A = 35, B = 23, C = 12 }); TrianglesRight.Add(new MorphTriangle { A = 35, B = 23, C = 37 }); TrianglesRight.Add(new MorphTriangle { A = 35, B = 22, C = 37 }); TrianglesRight.Add(new MorphTriangle { A = 35, B = 13, C = 12 }); TrianglesRight.Add(new MorphTriangle { A = 35, B = 13, C = 22 }); TrianglesRight.Add(new MorphTriangle { A = 18, B = 13, C = 12 }); TrianglesRight.Add(new MorphTriangle { A = 18, B = 13, C = 16 }); TrianglesRight.Add(new MorphTriangle { A = 49, B = 50, C = 56 }); TrianglesRight.Add(new MorphTriangle { A = 49, B = 61, C = 56 }); TrianglesRight.Add(new MorphTriangle { A = 3, B = 61, C = 56 }); TrianglesRight.Add(new MorphTriangle { A = 3, B = 60, C = 63 }); TrianglesRight.Add(new MorphTriangle { A = 58, B = 64, C = 63 }); TrianglesRight.Add(new MorphTriangle { A = 58, B = 64, C = 55 }); TrianglesRight.Add(new MorphTriangle { A = 49, B = 2, C = 75 }); // сомнительные губищи TrianglesRight.Add(new MorphTriangle { A = 49, B = 61, C = 75 }); TrianglesRight.Add(new MorphTriangle { A = 64, B = 61, C = 75 }); TrianglesRight.Add(new MorphTriangle { A = 64, B = 55, C = 75 }); TrianglesRight.Add(new MorphTriangle { A = 60, B = 61, C = 63 }); TrianglesRight.Add(new MorphTriangle { A = 61, B = 64, C = 63 }); #endregion InitializeMorphin(); }