[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 08:17:59 CEST 2011


ah its optional now, great

cheers

Daniel Salazar
3Developer.com



On Wed, Aug 3, 2011 at 6:20 PM, Campbell Barton <ideasman42 at gmail.com> wrote:
> 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
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>


More information about the Bf-committers mailing list