[Bf-committers] Vert colours returning incorrect values.

Campbell Barton bf-committers@blender.org
Sun, 18 Jul 2004 21:39:38 +1000


Hi, I managed to sidestep the ptoblem by accessing a tface a different way
It looks to be similar to the way your doing it so Id say problem averted.

I was cycling through the faces using code based on  get_same_uv func.
The way I cycled through the faces was fine for everything BUT vert colours

cp= (char *)(tf->col+a);  // your mothod

cp= (char *)(tf->col);  // what I was using.

The new mothod is similar but I copied it from from some other vpaint 
func that sets all the vert colours the same.

- Cam



Ton Roosendaal wrote:

> Hi,
>
> This is very confusing & weird code... and if you want to get help  
> finding a bug, we would need the full code. Including how you get to  
> print all of this.
>
> This is a call I quickly wrote and checked it works:
>
> void print_tface_colors(Mesh *me)
> {
>     TFace *tf;
>     int a, b;
>     char *cp;
>     
>     tf= me->tface;
>     if(tf== NULL) return;
>     for(b= me->totface; b>0; b--, tf++) {
>         for(a=0; a<4; a++) {
>             cp= (char *)(tf->col+a);
>             printf("%d %d %d %d\n", cp[0], cp[1], cp[2], cp[3]);
>         }
>     }
> }
>
> -Ton-
>
>
>
> On Sunday, Jul 18, 2004, at 05:05 Europe/Amsterdam, Campbell Barton  
> wrote:
>
>> Hi, Im writing some code that compares the vert colours of faces 
>> with  eachother.
>>
>> The code dosent work beacure the colour values returned from the  
>> selected  face colours is incorrect.
>>
>> eg,  i have 9 white faces on a plane, and when I print the colour  
>> values is shows the last 2 faces to be a different colour.
>>
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 255 255 255
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 255 255 255
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 255 255 255
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 255 255 255
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 255 255 255
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 255 255 255
>> !Match Comparing 255 255 255 with 255 255 255 Comparing 255 255 255  
>> with 255 255 255 Comparing 255 255 255 with 255 255 255 Comparing 
>> 255  255 255 with 76 66 89
>> Comparing 255 255 255 with 255 255 255 Comparing 255 255 255 with 
>> 255  255 255 Comparing 255 255 255 with 76 66 89 Comparing 255 255 
>> 255 with  63 128 0
>> Comparing 255 255 255 with 255 255 255 Comparing 255 255 255 with 76  
>> 66 89 Comparing 255 255 255 with 63 128 0 Comparing 255 255 255 with 
>> 0  0 0
>>
>>
>> Heres the code that assigns the colours
>>
>>
>> var props
>>
>>     
>>  /* Here are vars where we store the colours to compare */
>>  /* extract of an email from Ton and Douglas Toltzman  What Ton is  
>> saying is that there are 4, 8 bit components stored in a 32
>>  bit, unsigned value.  I'm not sure of the order of components, but 
>> if  Ton
>>  says "ABGR", then I'd presume the following would be correct
>>  - Ton
>>  Colors are 'packed' in an int, denoting bytes for ABGR respectively.
>>  Put a char pointer to the color, and read the color components    
>> individually. Alpha is by default 255. */
>>  char *packed_color_array;
>>  /* face A- the active save */
>>  short redA1, greenA1, blueA1, redA2, greenA2, blueA2, redA3, 
>> greenA3,       blueA3, redA4, greenA4, blueA4,
>>      redB1, greenB1, blueB1, redB2, greenB2, blueB2, redB3, greenB3,  
>> blueB3, redB4, greenB4, blueB4;
>> ____________________
>>
>>
>>      /* make sure the face has at lease 3 point before we go on */
>>      foundActFace=1;
>>      /* face A- the active save */
>>      packed_color_array = (char *) &tface[0].col;
>>      redA1= packed_color_array[3];
>>      greenA1= packed_color_array[2];
>>      blueA1= packed_color_array[1];                   
>> packed_color_array = (char *) &tface[1].col;
>>      redA2= packed_color_array[3];
>>      greenA2= packed_color_array[2];
>>      blueA2= packed_color_array[1];
>>         packed_color_array = (char *) &tface[2].col;
>>      redA3 = packed_color_array[3];
>>      greenA3 = packed_color_array[2];
>>      blueA3 = packed_color_array[1];
>>      if (mface->v4) {
>>        packed_color_array = (char *) &tface[3].col;
>>        redA4 = packed_color_array[3];
>>        greenA4 = packed_color_array[2];
>>        blueA4 = packed_color_array[1];
>>      }
>>
>> Could anybody tel me why Im not getting all 255,255,255?
>> - Thanks
>>
>>
>> --  Campbell J Barton
>>
>> 133 Hope Street
>> Geelong West, Victoria 3218 Australia
>>
>> URL:    http://www.metavr.com
>> e-mail: cbarton@metavr.com
>> phone: AU (03) 5229 0241
>>
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers@blender.org
>> http://www.blender.org/mailman/listinfo/bf-committers
>>
>>
> ------------------------------------------------------------------------ 
> -- 
> Ton Roosendaal  Blender Foundation ton@blender.org  
> http://www.blender.org
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers@blender.org
> http://www.blender.org/mailman/listinfo/bf-committers
>
>


-- 
Campbell J Barton

133 Hope Street
Geelong West, Victoria 3218 Australia

URL:    http://www.metavr.com
e-mail: cbarton@metavr.com
phone: AU (03) 5229 0241