[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