[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38972] trunk/blender/source/blender/ editors: fix [#28135] Edge slide changes UV

Daniel Salazar - 3Developer.com zanqdo at gmail.com
Thu Aug 4 00:44:19 CEST 2011


can you elaborate about this fix? edge slide in UVs is a feature

Daniel Salazar
3Developer.com



On Wed, Aug 3, 2011 at 2:02 AM, Campbell Barton <ideasman42 at gmail.com> wrote:
> Revision: 38972
>          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38972
> Author:   campbellbarton
> Date:     2011-08-03 08:02:32 +0000 (Wed, 03 Aug 2011)
> Log Message:
> -----------
> fix [#28135] Edge slide changes UV
>
> Modified Paths:
> --------------
>    trunk/blender/source/blender/editors/include/ED_transform.h
>    trunk/blender/source/blender/editors/transform/transform.c
>    trunk/blender/source/blender/editors/transform/transform_generics.c
>    trunk/blender/source/blender/editors/transform/transform_ops.c
>
> Modified: trunk/blender/source/blender/editors/include/ED_transform.h
> ===================================================================
> --- trunk/blender/source/blender/editors/include/ED_transform.h 2011-08-03 07:30:24 UTC (rev 38971)
> +++ trunk/blender/source/blender/editors/include/ED_transform.h 2011-08-03 08:02:32 UTC (rev 38972)
> @@ -148,6 +148,7 @@
>  #define P_ALIGN_SNAP   (P_GEO_SNAP|(1 << 5))
>  #define P_CONSTRAINT   (1 << 6)
>  #define P_OPTIONS              (1 << 7)
> +#define P_CORRECT_UV   (1 << 8)
>
>  void Transform_Properties(struct wmOperatorType *ot, int flags);
>
>
> Modified: trunk/blender/source/blender/editors/transform/transform.c
> ===================================================================
> --- trunk/blender/source/blender/editors/transform/transform.c  2011-08-03 07:30:24 UTC (rev 38971)
> +++ trunk/blender/source/blender/editors/transform/transform.c  2011-08-03 08:02:32 UTC (rev 38972)
> @@ -4243,7 +4243,7 @@
>        /* UV correction vars */
>        GHash **uvarray= NULL;
>        SlideData *sld = MEM_callocN(sizeof(*sld), "sld");
> -       int  uvlay_tot= CustomData_number_of_layers(&em->fdata, CD_MTFACE);
> +       const int  uvlay_tot=  (t->settings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) ? CustomData_number_of_layers(&em->fdata, CD_MTFACE) : 0;
>        int uvlay_idx;
>        TransDataSlideUv *slideuvs=NULL, *suv=NULL, *suv_last=NULL;
>        RegionView3D *v3d = t->ar ? t->ar->regiondata : NULL; /* background mode support */
> @@ -4615,7 +4615,7 @@
>        sld->end[0] = (int) end[0];
>        sld->end[1] = (int) end[1];
>
> -       if (uvlay_tot) { // XXX && (scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) {
> +       if (uvlay_tot) {
>                int maxnum = 0;
>
>                uvarray = MEM_callocN( uvlay_tot * sizeof(GHash *), "SlideUVs Array");
> @@ -4805,8 +4805,6 @@
>
>  int doEdgeSlide(TransInfo *t, float perc)
>  {
> -       Mesh *me= t->obedit->data;
> -       EditMesh *em = me->edit_mesh;
>        SlideData *sld = t->customData;
>        EditVert *ev, *nearest = sld->nearest;
>        EditVert *centerVert, *upVert, *downVert;
> @@ -4817,7 +4815,7 @@
>        int prop=1, flip=0;
>        /* UV correction vars */
>        GHash **uvarray= sld->uvhash;
> -       int  uvlay_tot= CustomData_number_of_layers(&em->fdata, CD_MTFACE);
> +       const int  uvlay_tot= sld->uvlay_tot;
>        int uvlay_idx;
>        TransDataSlideUv *suv;
>        float uv_tmp[2];
> @@ -4843,7 +4841,7 @@
>                        tempev = editedge_getOtherVert((perc>=0)?tempsv->up:tempsv->down, ev);
>                        interp_v3_v3v3(ev->co, tempsv->origvert.co, tempev->co, fabs(perc));
>
> -                       if (uvlay_tot) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
> +                       if (uvlay_tot) {
>                                for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
>                                        suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
>                                        if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) {
> @@ -4873,7 +4871,7 @@
>                        if(newlen < 0.0f) {newlen = 0.0;}
>                        if(flip == 0) {
>                                interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen));
> -                               if (uvlay_tot) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
> +                               if (uvlay_tot) {
>                                        /* dont do anything if no UVs */
>                                        for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
>                                                suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
> @@ -4890,7 +4888,7 @@
>                        } else{
>                                interp_v3_v3v3(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen));
>
> -                               if (uvlay_tot) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) {
> +                               if (uvlay_tot) {
>                                        /* dont do anything if no UVs */
>                                        for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) {
>                                                suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev );
>
> Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
> ===================================================================
> --- trunk/blender/source/blender/editors/transform/transform_generics.c 2011-08-03 07:30:24 UTC (rev 38971)
> +++ trunk/blender/source/blender/editors/transform/transform_generics.c 2011-08-03 08:02:32 UTC (rev 38972)
> @@ -1013,6 +1013,22 @@
>                                t->options |= CTX_NO_PET;
>                        }
>                }
> +
> +               /* initialize UV transform from */
> +               if (RNA_struct_find_property(op->ptr, "correct_uv")) {
> +                       if(RNA_property_is_set(op->ptr, "correct_uv")) {
> +                               if(RNA_boolean_get(op->ptr, "correct_uv")) {
> +                                       t->settings->uvcalc_flag |= UVCALC_TRANSFORM_CORRECT;
> +                               }
> +                               else {
> +                                       t->settings->uvcalc_flag &= ~UVCALC_TRANSFORM_CORRECT;
> +                               }
> +                       }
> +                       else {
> +                               RNA_boolean_set(op->ptr, "correct_uv", t->settings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT);
> +                       }
> +               }
> +
>        }
>        else if(t->spacetype==SPACE_IMAGE)
>        {
>
> Modified: trunk/blender/source/blender/editors/transform/transform_ops.c
> ===================================================================
> --- trunk/blender/source/blender/editors/transform/transform_ops.c      2011-08-03 07:30:24 UTC (rev 38971)
> +++ trunk/blender/source/blender/editors/transform/transform_ops.c      2011-08-03 08:02:32 UTC (rev 38972)
> @@ -508,6 +508,11 @@
>                RNA_def_boolean(ot->srna, "texture_space", 0, "Edit Object data texture space", "");
>        }
>
> +       if (flags & P_CORRECT_UV)
> +       {
> +               RNA_def_boolean(ot->srna, "correct_uv", 0, "Correct UV coords when transforming", "");
> +       }
> +
>        // Add confirm method all the time. At the end because it's not really that important and should be hidden only in log, not in keymap edit
>        /*prop =*/ RNA_def_boolean(ot->srna, "release_confirm", 0, "Confirm on Release", "Always confirm operation when releasing button");
>        //RNA_def_property_flag(prop, PROP_HIDDEN);
> @@ -755,7 +760,7 @@
>
>        RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f);
>
> -       Transform_Properties(ot, P_MIRROR|P_SNAP);
> +       Transform_Properties(ot, P_MIRROR|P_SNAP|P_CORRECT_UV);
>  }
>
>  void TRANSFORM_OT_edge_crease(struct wmOperatorType *ot)
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>


More information about the Bf-committers mailing list