- Corrected scale factor to be independant of object

rotation.  (Still not right, but better).
This commit is contained in:
Robert Wenzlaff
2004-01-08 14:19:25 +00:00
parent 234fb27248
commit 71597eb061
2 changed files with 28 additions and 8 deletions

View File

@@ -2204,8 +2204,9 @@ void shade_input_set_coords(ShadeInput *shi, float u, float v, int i1, int i2, i
/* |\ 1| or |1 /| */
/* |0\ | |/ 0| */
/* 1---2 1---2 0 = orig face, 1 = new face */
if(vlr->flag & R_DIVIDE_24) {
/* Update vert nums to point to correct verts of original face */
if(vlr->flag & R_DIVIDE_24) {
if(vlr->flag & R_FACE_SPLIT) {
j1++; j2++; j3++;
}

View File

@@ -64,6 +64,7 @@
#include "DNA_object_types.h"
#include "DNA_view3d_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meta_types.h"
#include "BKE_mesh.h"
#include "BKE_key.h"
@@ -3094,14 +3095,32 @@ void do_displacement(Object *ob, int startface, int numface, int startvert, int
float min[3]={1e9, 1e9, 1e9}, max[3]={-1e9, -1e9, -1e9};
float scale=1.0f;
int i;
BoundBox bb;
/* Calculate Texture space scale factor - Still needs work. */
if (ob->type & OB_MESH) {
if (( (Mesh *)(ob->data) )->bb == NULL) tex_space_mesh((Mesh *)(ob->data));
memcpy(&bb, ( (Mesh *)(ob->data) )->bb, 8*sizeof(float) );
}
else if (ob->type & OB_CURVE | OB_SURF | OB_FONT) {
if (( (Curve *)(ob->data) )->bb == NULL) tex_space_curve((Curve *)(ob->data));
memcpy(&bb, ((Curve *)(ob->data) )->bb, 8*sizeof(float) );
}
else if (ob->type & OB_MBALL) {
if (( (MetaBall *)(ob->data) )->bb == NULL) tex_space_mball(ob);
memcpy(&bb, ( (MetaBall *)(ob->data) )->bb, 8*sizeof(float) );
}
else memcpy(&bb, ob->bb, 8*sizeof(float) );
for(i=0; i<8; i++){
DO_MINMAX(bb.vec[i], min, max);
}
minmax_object(ob, min, max);
VecSubf(min, max, min);
scale= MAX3(min[0], min[1], min[2]); /*Overall scale of obj */
/* calculate vertex normals */
//normalenrender(startvert, startface);
VecSubf(max, max, min);
scale = MAX3(max[0], max[1], max[2]);
printf("scale=%f\n", scale);
/* Clear all flags */
for(i=startvert; i<startvert+numvert; i++){ /* Clear vert flags */
vr= RE_findOrAddVert(i);
vr->flag= 0;