예제 #1
0
        public void LoadProject(bool newProject, RectangleAABB aabb, string headTexturePath, bool isOpenSmile)
        {
            HeadTextureId = 0;
            if (!string.IsNullOrEmpty(headTexturePath))
            {
                HeadTextureId = GetTexture(headTexturePath);
            }

            if (newProject)
            {
                var modelPath = ProgramCore.Project.HeadModelPath;
                //ProgramCore.PluginMode
                pickingController.AddMehes(modelPath, MeshType.Head, false, ProgramCore.Project.GenesisType, ProgramCore.Project.ManType, true, isOpenSmile);
            }
            HeadShapeController.Initialize(headMeshesController);

            var baseDots = HeadController.GetBaseDots(ProgramCore.Project.ManType);

            headMeshesController.RenderMesh.SetBlendingInfo(baseDots[0], baseDots[1], baseDots[2], baseDots[3]);

            #region Сглаживание текстур

            SmoothedTextures.Clear();
            var index = 1;
            for (var i = 0; i < headMeshesController.RenderMesh.Parts.Count; i++)
            {
                var part = headMeshesController.RenderMesh.Parts[i];
                if (part.Texture == -1)
                {
                    continue;
                }

                var oldTexture = GetTexture(part.DefaultTextureName);
                if (!SmoothedTextures.ContainsKey(oldTexture))
                {
                    if (part.Texture == 0 || part.IsBaseTexture)
                    {
                        part.IsBaseTexture = true;
                        part.Texture       = 0;
                    }
                    else
                    {
                        var path         = part.DefaultTextureName;//GetTexturePath(part.Texture);
                        var newImagePath = @"ftp://108.167.164.209/public_html/printahead.online/PrintAhead_models/" + ProgramCore.Project.ProjectName + "/Textures/";

                        var smoothedImagePath = newImagePath + Path.GetFileNameWithoutExtension(path) + "_smoothed" + Path.GetExtension(path);

                        var smoothedTexture = GetTexture(smoothedImagePath); // GetTexture(smoothedImagePath); // по старому пути у нас будут храниться сглаженные текстуры (что бы сохранение модельки сильно не менять)
                        part.Texture = oldTexture;
                        SmoothedTextures.Add(oldTexture, smoothedTexture);   // связка - айди старой-новой текстур
                    }
                }
                else
                {
                    part.Texture = oldTexture;
                }

                if (part.Texture != 0)                                 //все кроме отсутствующих. после первых автоточек - станет фоткой
                {
                    part.Texture     = SmoothedTextures[part.Texture]; // переприсваиваем текстуры на сглаженные
                    part.TextureName = GetTexturePath(part.Texture);
                }
            }
            ProgramCore.Project.SmoothedTextures = true;

            #endregion

            if (newProject)
            {
                if (ProgramCore.Project.ManType != ManType.Custom)
                {
                    var scaleX = UpdateMeshProportions(aabb);
                    UpdatePointsProportion(scaleX, (aabb.A.X + aabb.B.X) * 0.5f);

                    autodotsShapeHelper.TransformRects();
                    autodotsShapeHelper.InitializeShaping();

                    var points = autodotsShapeHelper.GetBaseDots();

                    SpecialEyePointsUpdate(points, true);
                    SpecialEyePointsUpdate(points, false);

                    SpecialLipsPointsUpdate(points, ProgramCore.Project.MouthCenter);
                    SpecialNosePointsUpdate(points);

                    SpecialCenterUpdate(points, headController.GetNoseTopIndexes(), ProgramCore.Project.DetectedNosePoints[3].Xy);
                    SpecialBottomPointsUpdate(points);
                    SpecialTopHaedWidth(points);
                }
            }
            else
            {
                autodotsShapeHelper.TransformRects();
                headMeshesController.UpdateBuffers();
            }
        }