DrawPoly not drawing correctly with scene lights
-
On 28/06/2014 at 18:42, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 14
Platform: Windows ; Mac OSX ;
Language(s) : C++ ;---------
I have set the drawing to be performed taking into account the scene lights, with:bd->SetLightList(BDRAW_SETLIGHTLIST_SCENELIGHTS);
For the DrawPoly command, I use the normals that I get from the Phong tag, with:
SVector* smooth_n; BaseTag* phongtag = op->GetTag(Tphong,0L); if (phongtag) { smooth_n=poly_op->CreatePhongNormals(); }
If i is the index of the face that I get the coordinates of, I get the normals of the points of the polygon with:
if (phongtag) { normals[0]=smooth_n[i*4].ToRV()*(!op_matrix); normals[1]=smooth_n[i*4+1].ToRV()*(!op_matrix); normals[2]=smooth_n[i*4+2].ToRV()*(!op_matrix); normals[3]=smooth_n[i*4+3].ToRV()*(!op_matrix); }
However, the polygons are drawn with the correct color but with the incorrect shading (illumination).
How can I set the normals to make it display correctly?p.s. By the way, if there is no Phong tag, I simply use the normal of the face with:
N = CalcFaceNormal(pt_list, pol);
and fill the normals array with:
normals[0]=normals[1]=normals[2]=normals[3]=N;
But this also produces erroneous shading.
-
On 29/06/2014 at 12:01, xxxxxxxx wrote:
Here is a video showing what is going on:
-
On 29/06/2014 at 16:39, xxxxxxxx wrote:
FIXED!!
I had my calculations in camera space, with:
bd->SetMatrix_Camera();
but I had to make them in object space, with:
bd->SetMatrix_Matrix(NULL, op->GetMg(), 0);