Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-06-17 18:10:19 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-06-17 18:10:19 +0300
commit06a1a66a9b6f120867d3bbebe3928744ec8e3495 (patch)
tree42e827a3cf58eb76474e479206b02a8d97dd3bf7 /source/blender/blenkernel/intern/lattice.c
parent61d27db35967710421ab92748e09624db068258d (diff)
parenta24b4e6090057479796e914bc603119b12f6ca06 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/blenkernel/intern/lattice.c')
-rw-r--r--source/blender/blenkernel/intern/lattice.c88
1 files changed, 44 insertions, 44 deletions
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index b5b62de57ec..a885495f2bf 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -152,13 +152,13 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb)
int i, u, v, w;
float fu, fv, fw, uc, vc, wc, du = 0.0, dv = 0.0, dw = 0.0;
float *co, (*vertexCos)[3] = NULL;
-
+
/* vertex weight groups are just freed all for now */
if (lt->dvert) {
BKE_defvert_array_free(lt->dvert, lt->pntsu * lt->pntsv * lt->pntsw);
lt->dvert = NULL;
}
-
+
while (uNew * vNew * wNew > 32000) {
if (uNew >= vNew && uNew >= wNew) uNew--;
else if (vNew >= uNew && vNew >= wNew) vNew--;
@@ -203,7 +203,7 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb)
}
}
}
-
+
if (ltOb) {
float mat[4][4];
int typeu = lt->typeu, typev = lt->typev, typew = lt->typew;
@@ -240,9 +240,9 @@ void BKE_lattice_resize(Lattice *lt, int uNew, int vNew, int wNew, Object *ltOb)
lt->actbp = LT_ACTBP_NONE;
MEM_freeN(lt->def);
lt->def = MEM_callocN(lt->pntsu * lt->pntsv * lt->pntsw * sizeof(BPoint), "lattice bp");
-
+
bp = lt->def;
-
+
for (i = 0; i < lt->pntsu * lt->pntsv * lt->pntsw; i++, bp++) {
copy_v3_v3(bp->vec, vertexCos[i]);
}
@@ -255,9 +255,9 @@ void BKE_lattice_init(Lattice *lt)
BLI_assert(MEMCMP_STRUCT_OFS_IS_ZERO(lt, id));
lt->flag = LT_GRID;
-
+
lt->typeu = lt->typev = lt->typew = KEY_BSPLINE;
-
+
lt->def = MEM_callocN(sizeof(BPoint), "lattvert"); /* temporary */
BKE_lattice_resize(lt, 2, 2, 2, NULL); /* creates a uniform lattice */
lt->actbp = LT_ACTBP_NONE;
@@ -360,14 +360,14 @@ LatticeDeformData *init_latt_deform(Object *oblatt, Object *ob)
if (lt->editlatt) lt = lt->editlatt->latt;
bp = lt->def;
-
+
fp = latticedata = MEM_mallocN(sizeof(float) * 3 * lt->pntsu * lt->pntsv * lt->pntsw, "latticedata");
-
+
/* for example with a particle system: (ob == NULL) */
if (ob == NULL) {
/* in deformspace, calc matrix */
invert_m4_m4(latmat, oblatt->obmat);
-
+
/* back: put in deform array */
invert_m4_m4(imat, latmat);
}
@@ -375,11 +375,11 @@ LatticeDeformData *init_latt_deform(Object *oblatt, Object *ob)
/* in deformspace, calc matrix */
invert_m4_m4(imat, oblatt->obmat);
mul_m4_m4m4(latmat, imat, ob->obmat);
-
+
/* back: put in deform array */
invert_m4_m4(imat, latmat);
}
-
+
for (w = 0, fw = lt->fw; w < lt->pntsw; w++, fw += lt->dw) {
for (v = 0, fv = lt->fv; v < lt->pntsv; v++, fv += lt->dv) {
for (u = 0, fu = lt->fu; u < lt->pntsu; u++, bp++, co += 3, fp += 3, fu += lt->du) {
@@ -556,7 +556,7 @@ static bool where_on_path_deform(Object *ob, float ctime, float vec[4], float di
BevList *bl;
float ctime1;
int cycl = 0;
-
+
/* test for cyclic */
bl = ob->curve_cache->bev.first;
if (!bl->nr) return false;
@@ -568,14 +568,14 @@ static bool where_on_path_deform(Object *ob, float ctime, float vec[4], float di
else {
ctime1 = ctime;
}
-
+
/* vec needs 4 items */
if (where_on_path(ob, ctime1, vec, dir, quat, radius, NULL)) {
-
+
if (cycl == 0) {
Path *path = ob->curve_cache->path;
float dvec[3];
-
+
if (ctime < 0.0f) {
sub_v3_v3v3(dvec, path->data[1].vec, path->data[0].vec);
mul_v3_fl(dvec, ctime * (float)path->len);
@@ -641,7 +641,7 @@ static bool calc_curve_deform(Object *par, float co[3],
}
}
}
-
+
if (where_on_path_deform(par, fac, loc, dir, new_quat, &radius)) { /* returns OK */
float quat[4], cent[3];
@@ -687,7 +687,7 @@ static bool calc_curve_deform(Object *par, float co[3],
/* scale if enabled */
if (cu->flag & CU_PATH_RADIUS)
mul_v3_fl(cent, radius);
-
+
/* local rotation */
normalize_qt(quat);
mul_qt_v3(quat, cent);
@@ -731,7 +731,7 @@ void curve_deform_verts(
cd.dmin[0] = cd.dmin[1] = cd.dmin[2] = -1.0f;
cd.dmax[0] = cd.dmax[1] = cd.dmax[2] = 0.0f;
}
-
+
/* Check whether to use vertex groups (only possible if target is a Mesh or Lattice).
* We want either a Mesh/Lattice with no derived data, or derived data with deformverts.
*/
@@ -804,12 +804,12 @@ void curve_deform_verts(
else {
/* set mesh min max bounds */
INIT_MINMAX(cd.dmin, cd.dmax);
-
+
for (a = 0; a < numVerts; a++) {
mul_m4_v3(cd.curvespace, vertexCos[a]);
minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]);
}
-
+
for (a = 0; a < numVerts; a++) {
/* already in 'cd.curvespace', prev for loop */
calc_curve_deform(cuOb, vertexCos[a], defaxis, &cd, NULL);
@@ -827,7 +827,7 @@ void curve_deform_vector(Object *cuOb, Object *target,
{
CurveDeform cd;
float quat[4];
-
+
if (cuOb->type != OB_CURVE) {
unit_m3(mat);
return;
@@ -835,21 +835,21 @@ void curve_deform_vector(Object *cuOb, Object *target,
init_curve_deform(cuOb, target, &cd);
cd.no_rot_axis = no_rot_axis; /* option to only rotate for XY, for example */
-
+
copy_v3_v3(cd.dmin, orco);
copy_v3_v3(cd.dmax, orco);
mul_m4_v3(cd.curvespace, vec);
-
+
if (calc_curve_deform(cuOb, vec, target->trackflag, &cd, quat)) {
float qmat[3][3];
-
+
quat_to_mat3(qmat, quat);
mul_m3_m3m3(mat, qmat, cd.objectspace3);
}
else
unit_m3(mat);
-
+
mul_m4_v3(cd.objectspace, vec);
}
@@ -937,11 +937,11 @@ void outside_lattice(Lattice *lt)
if (lt->pntsu > 1) du = 1.0f / ((float)lt->pntsu - 1);
if (lt->pntsv > 1) dv = 1.0f / ((float)lt->pntsv - 1);
if (lt->pntsw > 1) dw = 1.0f / ((float)lt->pntsw - 1);
-
+
for (w = 0; w < lt->pntsw; w++) {
-
+
for (v = 0; v < lt->pntsv; v++) {
-
+
for (u = 0; u < lt->pntsu; u++, bp++) {
if (u == 0 || v == 0 || w == 0 || u == lt->pntsu - 1 || v == lt->pntsv - 1 || w == lt->pntsw - 1) {
/* pass */
@@ -949,41 +949,41 @@ void outside_lattice(Lattice *lt)
else {
bp->hide = 1;
bp->f1 &= ~SELECT;
-
+
/* u extrema */
bp1 = latt_bp(lt, 0, v, w);
bp2 = latt_bp(lt, lt->pntsu - 1, v, w);
-
+
fac1 = du * u;
bp->vec[0] = (1.0f - fac1) * bp1->vec[0] + fac1 * bp2->vec[0];
bp->vec[1] = (1.0f - fac1) * bp1->vec[1] + fac1 * bp2->vec[1];
bp->vec[2] = (1.0f - fac1) * bp1->vec[2] + fac1 * bp2->vec[2];
-
+
/* v extrema */
bp1 = latt_bp(lt, u, 0, w);
bp2 = latt_bp(lt, u, lt->pntsv - 1, w);
-
+
fac1 = dv * v;
bp->vec[0] += (1.0f - fac1) * bp1->vec[0] + fac1 * bp2->vec[0];
bp->vec[1] += (1.0f - fac1) * bp1->vec[1] + fac1 * bp2->vec[1];
bp->vec[2] += (1.0f - fac1) * bp1->vec[2] + fac1 * bp2->vec[2];
-
+
/* w extrema */
bp1 = latt_bp(lt, u, v, 0);
bp2 = latt_bp(lt, u, v, lt->pntsw - 1);
-
+
fac1 = dw * w;
bp->vec[0] += (1.0f - fac1) * bp1->vec[0] + fac1 * bp2->vec[0];
bp->vec[1] += (1.0f - fac1) * bp1->vec[1] + fac1 * bp2->vec[1];
bp->vec[2] += (1.0f - fac1) * bp1->vec[2] + fac1 * bp2->vec[2];
-
+
mul_v3_fl(bp->vec, 1.0f / 3.0f);
-
+
}
}
-
+
}
-
+
}
}
else {
@@ -1004,9 +1004,9 @@ float (*BKE_lattice_vertexcos_get(struct Object *ob, int *r_numVerts))[3]
if (lt->editlatt) lt = lt->editlatt->latt;
numVerts = *r_numVerts = lt->pntsu * lt->pntsv * lt->pntsw;
-
+
vertexCos = MEM_mallocN(sizeof(*vertexCos) * numVerts, "lt_vcos");
-
+
for (i = 0; i < numVerts; i++) {
copy_v3_v3(vertexCos[i], lt->def[i].vec);
}
@@ -1046,7 +1046,7 @@ void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Objec
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
md->scene = scene;
-
+
if (!(mti->flags & eModifierTypeFlag_AcceptsLattice)) continue;
if (!(md->mode & eModifierMode_Realtime)) continue;
if (editmode && !(md->mode & eModifierMode_Editmode)) continue;
@@ -1072,7 +1072,7 @@ void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Objec
dl->parts = 1;
dl->nr = numVerts;
dl->verts = (float *) vertexCos;
-
+
BLI_addtail(&ob->curve_cache->disp, dl);
}
}
@@ -1154,7 +1154,7 @@ void BKE_lattice_minmax_dl(Object *ob, Lattice *lt, float min[3], float max[3])
}
else {
int i, numVerts;
-
+
if (lt->editlatt) lt = lt->editlatt->latt;
numVerts = lt->pntsu * lt->pntsv * lt->pntsw;