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

Campbell Barton ideasman42 at gmail.com
Thu Aug 4 02:20:22 CEST 2011


in 2.4x it was optional, but the option was removed in 2.5 so it ran always.
This adds it back, it works by having the operator initialize from the
tool settings, on editing it writes changes back to the tool setting.
(UV unwrap does this too), however IMHO this is weak, we need a better
place to adjust tool settings- like we had in 2.4x for UV unwrap
options.

On Thu, Aug 4, 2011 at 8:44 AM, Daniel Salazar - 3Developer.com
<zanqdo at gmail.com> wrote:
> 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
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>



-- 
- Campbell


More information about the Bf-committers mailing list