- removed mface->puno flags, was only used to flip normals in display
and this is better left to user (whee this was a fun commit! so much deleting!) - removed mesh_calculate_vertex_normals (replaced by mesh_calc_normals)
This commit is contained in:
@@ -82,12 +82,6 @@ void mesh_get_texspace(struct Mesh *me, float *loc_r, float *rot_r, float *size_
|
||||
|
||||
void make_edges(struct Mesh *me);
|
||||
|
||||
/** Generate the mesh vertex normals by averaging over connected faces.
|
||||
*
|
||||
* @param me The mesh to update.
|
||||
*/
|
||||
void mesh_calculate_vertex_normals (struct Mesh *me);
|
||||
|
||||
/* Calculate vertex and face normals, face normals are returned in *faceNors_r if non-NULL
|
||||
* and vertex normals are stored in actual mverts.
|
||||
*/
|
||||
|
||||
@@ -239,14 +239,10 @@ static void meshDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int))
|
||||
int a;
|
||||
int glmode=-1, shademodel=-1, matnr=-1, drawCurrentMat=1;
|
||||
|
||||
#define PASSVERT(index, punoBit) { \
|
||||
#define PASSVERT(index) { \
|
||||
if (shademodel==GL_SMOOTH) { \
|
||||
short *no = mvert[index].no; \
|
||||
if (mface->puno&punoBit) { \
|
||||
glNormal3s(-no[0], -no[1], -no[2]); \
|
||||
} else { \
|
||||
glNormal3sv(no); \
|
||||
} \
|
||||
glNormal3sv(no); \
|
||||
} \
|
||||
glVertex3fv(mvert[index].co); \
|
||||
}
|
||||
@@ -273,11 +269,11 @@ static void meshDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int))
|
||||
if(shademodel==GL_FLAT)
|
||||
glNormal3fv(nors);
|
||||
|
||||
PASSVERT(mface->v1, ME_FLIPV1);
|
||||
PASSVERT(mface->v2, ME_FLIPV2);
|
||||
PASSVERT(mface->v3, ME_FLIPV3);
|
||||
PASSVERT(mface->v1);
|
||||
PASSVERT(mface->v2);
|
||||
PASSVERT(mface->v3);
|
||||
if (mface->v4) {
|
||||
PASSVERT(mface->v4, ME_FLIPV4);
|
||||
PASSVERT(mface->v4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,7 +168,6 @@ void displistmesh_to_mesh(DispListMesh *dlm, Mesh *me)
|
||||
mf->v4= oldmf->v4;
|
||||
mf->flag= oldmf->flag;
|
||||
mf->mat_nr= oldmf->mat_nr;
|
||||
mf->puno= 0;
|
||||
mf->edcode= ME_V1V2|ME_V2V3|ME_V3V4|ME_V4V1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -543,12 +543,6 @@ void test_index_mface(MFace *mface, int nr)
|
||||
if(a & ME_V1V2) mface->edcode |= ME_V3V1;
|
||||
if(a & ME_V2V3) mface->edcode |= ME_V1V2;
|
||||
if(a & ME_V3V1) mface->edcode |= ME_V2V3;
|
||||
|
||||
a= mface->puno;
|
||||
mface->puno &= ~15;
|
||||
if(a & ME_FLIPV1) mface->puno |= ME_FLIPV2;
|
||||
if(a & ME_FLIPV2) mface->puno |= ME_FLIPV3;
|
||||
if(a & ME_FLIPV3) mface->puno |= ME_FLIPV1;
|
||||
}
|
||||
}
|
||||
else if(nr==4) {
|
||||
@@ -561,13 +555,6 @@ void test_index_mface(MFace *mface, int nr)
|
||||
if(a & ME_V2V3) mface->edcode |= ME_V2V3;
|
||||
if(a & ME_V3V4) mface->edcode |= ME_V1V2;
|
||||
if(a & ME_V4V1) mface->edcode |= ME_V4V1;
|
||||
|
||||
a= mface->puno;
|
||||
mface->puno &= ~15;
|
||||
if(a & ME_FLIPV1) mface->puno |= ME_FLIPV3;
|
||||
if(a & ME_FLIPV2) mface->puno |= ME_FLIPV4;
|
||||
if(a & ME_FLIPV3) mface->puno |= ME_FLIPV1;
|
||||
if(a & ME_FLIPV4) mface->puno |= ME_FLIPV2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -631,12 +618,6 @@ void test_index_face(MFace *mface, TFace *tface, int nr)
|
||||
if(a & ME_V1V2) mface->edcode |= ME_V3V1;
|
||||
if(a & ME_V2V3) mface->edcode |= ME_V1V2;
|
||||
if(a & ME_V3V1) mface->edcode |= ME_V2V3;
|
||||
|
||||
a= mface->puno;
|
||||
mface->puno &= ~15;
|
||||
if(a & ME_FLIPV1) mface->puno |= ME_FLIPV2;
|
||||
if(a & ME_FLIPV2) mface->puno |= ME_FLIPV3;
|
||||
if(a & ME_FLIPV3) mface->puno |= ME_FLIPV1;
|
||||
}
|
||||
}
|
||||
else if(nr==4) {
|
||||
@@ -664,13 +645,6 @@ void test_index_face(MFace *mface, TFace *tface, int nr)
|
||||
if(a & ME_V2V3) mface->edcode |= ME_V2V3;
|
||||
if(a & ME_V3V4) mface->edcode |= ME_V1V2;
|
||||
if(a & ME_V4V1) mface->edcode |= ME_V4V1;
|
||||
|
||||
a= mface->puno;
|
||||
mface->puno &= ~15;
|
||||
if(a & ME_FLIPV1) mface->puno |= ME_FLIPV3;
|
||||
if(a & ME_FLIPV2) mface->puno |= ME_FLIPV4;
|
||||
if(a & ME_FLIPV3) mface->puno |= ME_FLIPV1;
|
||||
if(a & ME_FLIPV4) mface->puno |= ME_FLIPV2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -679,7 +653,7 @@ void flipnorm_mesh(Mesh *me)
|
||||
{
|
||||
MFace *mface;
|
||||
MVert *mvert;
|
||||
int a, temp;
|
||||
int a;
|
||||
|
||||
mvert= me->mvert;
|
||||
a= me->totvert;
|
||||
@@ -698,21 +672,10 @@ void flipnorm_mesh(Mesh *me)
|
||||
SWAP(int, mface->v4, mface->v1);
|
||||
SWAP(int, mface->v3, mface->v2);
|
||||
test_index_mface(mface, 4);
|
||||
temp= mface->puno;
|
||||
mface->puno &= ~15;
|
||||
if(temp & ME_FLIPV1) mface->puno |= ME_FLIPV4;
|
||||
if(temp & ME_FLIPV2) mface->puno |= ME_FLIPV3;
|
||||
if(temp & ME_FLIPV3) mface->puno |= ME_FLIPV2;
|
||||
if(temp & ME_FLIPV4) mface->puno |= ME_FLIPV1;
|
||||
}
|
||||
else {
|
||||
SWAP(int, mface->v3, mface->v1);
|
||||
test_index_mface(mface, 3);
|
||||
temp= mface->puno;
|
||||
mface->puno &= ~15;
|
||||
if(temp & ME_FLIPV1) mface->puno |= ME_FLIPV3;
|
||||
if(temp & ME_FLIPV2) mface->puno |= ME_FLIPV2;
|
||||
if(temp & ME_FLIPV3) mface->puno |= ME_FLIPV1;
|
||||
}
|
||||
}
|
||||
mface++;
|
||||
@@ -894,7 +857,6 @@ void mball_to_mesh(ListBase *lb, Mesh *me)
|
||||
mface->v3= index[2];
|
||||
mface->v4= index[3];
|
||||
|
||||
mface->puno= 0;
|
||||
mface->edcode= ME_V1V2+ME_V2V3;
|
||||
mface->flag = ME_SMOOTH;
|
||||
|
||||
@@ -1041,7 +1003,6 @@ void nurbs_to_mesh(Object *ob)
|
||||
mface->v3= startvert+index[2];
|
||||
mface->v4= 0;
|
||||
|
||||
mface->puno= 7;
|
||||
mface->edcode= ME_V1V2+ME_V2V3;
|
||||
test_index_mface(mface, 3);
|
||||
|
||||
@@ -1177,43 +1138,6 @@ void mcol_to_tface(Mesh *me, int freedata)
|
||||
}
|
||||
}
|
||||
|
||||
void mesh_calculate_vertex_normals(Mesh *me)
|
||||
{
|
||||
float (*tempNorms)[3]= MEM_callocN(me->totvert*sizeof(*tempNorms), "tempNorms");
|
||||
int i;
|
||||
|
||||
for (i=0; i<me->totface; i++) {
|
||||
MFace *mf= &((MFace*) me->mface)[i];
|
||||
float f_no[3];
|
||||
|
||||
if (!mf->v3)
|
||||
continue;
|
||||
|
||||
if (mf->v4) {
|
||||
CalcNormFloat4(me->mvert[mf->v1].co, me->mvert[mf->v2].co, me->mvert[mf->v3].co, me->mvert[mf->v4].co, f_no);
|
||||
} else {
|
||||
CalcNormFloat(me->mvert[mf->v1].co, me->mvert[mf->v2].co, me->mvert[mf->v3].co, f_no);
|
||||
}
|
||||
|
||||
VecAddf(tempNorms[mf->v1], tempNorms[mf->v1], f_no);
|
||||
VecAddf(tempNorms[mf->v2], tempNorms[mf->v2], f_no);
|
||||
VecAddf(tempNorms[mf->v3], tempNorms[mf->v3], f_no);
|
||||
if (mf->v4)
|
||||
VecAddf(tempNorms[mf->v4], tempNorms[mf->v4], f_no);
|
||||
}
|
||||
for (i=0; i<me->totvert; i++) {
|
||||
MVert *mv= &me->mvert[i];
|
||||
float *no= tempNorms[i];
|
||||
|
||||
Normalise(no);
|
||||
mv->no[0]= (short)(no[0]*32767.0);
|
||||
mv->no[1]= (short)(no[1]*32767.0);
|
||||
mv->no[2]= (short)(no[2]*32767.0);
|
||||
}
|
||||
|
||||
MEM_freeN(tempNorms);
|
||||
}
|
||||
|
||||
void mesh_delete_material_index(Mesh *me, int index) {
|
||||
int i;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user