[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57701] trunk/blender/source/blender: lattice: use functions rather then defines, also added a function to get uvw from an index.
Campbell Barton
ideasman42 at gmail.com
Mon Jun 24 15:45:36 CEST 2013
Revision: 57701
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57701
Author: campbellbarton
Date: 2013-06-24 13:45:35 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
lattice: use functions rather then defines, also added a function to get uvw from an index.
- BKE_lattice_index_from_uvw()
- BKE_lattice_index_to_uvw()
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_lattice.h
trunk/blender/source/blender/blenkernel/intern/lattice.c
trunk/blender/source/blender/editors/object/object_shapekey.c
trunk/blender/source/blender/editors/object/object_vgroup.c
trunk/blender/source/blender/makesdna/DNA_lattice_types.h
trunk/blender/source/blender/makesrna/intern/rna_lattice.c
Modified: trunk/blender/source/blender/blenkernel/BKE_lattice.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_lattice.h 2013-06-24 13:38:28 UTC (rev 57700)
+++ trunk/blender/source/blender/blenkernel/BKE_lattice.h 2013-06-24 13:45:35 UTC (rev 57701)
@@ -82,5 +82,8 @@
void BKE_lattice_center_bounds(struct Lattice *lt, float cent[3]);
void BKE_lattice_translate(struct Lattice *lt, float offset[3], int do_keys);
+int BKE_lattice_index_from_uvw(struct Lattice *lt, const int u, const int v, const int w);
+void BKE_lattice_index_to_uvw(struct Lattice *lt, const int index, int *r_u, int *r_v, int *r_w);
+
#endif
Modified: trunk/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/lattice.c 2013-06-24 13:38:28 UTC (rev 57700)
+++ trunk/blender/source/blender/blenkernel/intern/lattice.c 2013-06-24 13:45:35 UTC (rev 57701)
@@ -62,7 +62,20 @@
#include "BKE_deform.h"
+int BKE_lattice_index_from_uvw(struct Lattice *lt,
+ const int u, const int v, const int w)
+{
+ return (w * (lt->pntsu * lt->pntsv) + (v * lt->pntsu) + u);
+}
+void BKE_lattice_index_to_uvw(struct Lattice *lt, const int index,
+ int *r_u, int *r_v, int *r_w)
+{
+ *r_u = (index % lt->pntsu);
+ *r_v = (index / lt->pntsu) % lt->pntsv;
+ *r_w = (index / (lt->pntsu * lt->pntsv));
+}
+
void calc_lat_fudu(int flag, int res, float *r_fu, float *r_du)
{
if (res == 1) {
@@ -867,7 +880,7 @@
static BPoint *latt_bp(Lattice *lt, int u, int v, int w)
{
- return <->def[LT_INDEX(lt, u, v, w)];
+ return <->def[BKE_lattice_index_from_uvw(lt, u, v, w)];
}
void outside_lattice(Lattice *lt)
Modified: trunk/blender/source/blender/editors/object/object_shapekey.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_shapekey.c 2013-06-24 13:38:28 UTC (rev 57700)
+++ trunk/blender/source/blender/editors/object/object_shapekey.c 2013-06-24 13:45:35 UTC (rev 57701)
@@ -57,6 +57,7 @@
#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_object.h"
+#include "BKE_lattice.h"
#include "BKE_curve.h"
#include "BLI_sys_types.h" // for intptr_t support
@@ -244,14 +245,14 @@
int u_inv = (lt->pntsu - 1) - u;
float tvec[3];
if (u == u_inv) {
- i1 = LT_INDEX(lt, u, v, w);
+ i1 = BKE_lattice_index_from_uvw(lt, u, v, w);
fp1 = ((float *)kb->data) + i1 * 3;
fp1[0] = -fp1[0];
totmirr++;
}
else {
- i1 = LT_INDEX(lt, u, v, w);
- i2 = LT_INDEX(lt, u_inv, v, w);
+ i1 = BKE_lattice_index_from_uvw(lt, u, v, w);
+ i2 = BKE_lattice_index_from_uvw(lt, u_inv, v, w);
fp1 = ((float *)kb->data) + i1 * 3;
fp2 = ((float *)kb->data) + i2 * 3;
Modified: trunk/blender/source/blender/editors/object/object_vgroup.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_vgroup.c 2013-06-24 13:38:28 UTC (rev 57700)
+++ trunk/blender/source/blender/editors/object/object_vgroup.c 2013-06-24 13:45:35 UTC (rev 57701)
@@ -2477,8 +2477,8 @@
if (u != u_inv) {
BPoint *bp, *bp_mirr;
- i1 = LT_INDEX(lt, u, v, w);
- i2 = LT_INDEX(lt, u_inv, v, w);
+ i1 = BKE_lattice_index_from_uvw(lt, u, v, w);
+ i2 = BKE_lattice_index_from_uvw(lt, u_inv, v, w);
bp = <->def[i1];
bp_mirr = <->def[i2];
Modified: trunk/blender/source/blender/makesdna/DNA_lattice_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_lattice_types.h 2013-06-24 13:38:28 UTC (rev 57700)
+++ trunk/blender/source/blender/makesdna/DNA_lattice_types.h 2013-06-24 13:45:35 UTC (rev 57701)
@@ -83,8 +83,6 @@
#define LT_DS_EXPAND 4
-#define LT_INDEX(lt, u, v, w) ((w) * ((lt)->pntsu * (lt)->pntsv) + ((v) * (lt)->pntsu) + (u))
-
#define LT_ACTBP_NONE -1
#endif
Modified: trunk/blender/source/blender/makesrna/intern/rna_lattice.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_lattice.c 2013-06-24 13:38:28 UTC (rev 57700)
+++ trunk/blender/source/blender/makesrna/intern/rna_lattice.c 2013-06-24 13:45:35 UTC (rev 57701)
@@ -54,14 +54,14 @@
{
Lattice *lt = (Lattice *)ptr->id.data;
BPoint *bp = (BPoint *)ptr->data;
- int a = bp - lt->def;
- int x = a % lt->pntsu;
- int y = (a / lt->pntsu) % lt->pntsv;
- int z = (a / (lt->pntsu * lt->pntsv));
+ int index = bp - lt->def;
+ int u, v, w;
- values[0] = lt->fu + x * lt->du;
- values[1] = lt->fv + y * lt->dv;
- values[2] = lt->fw + z * lt->dw;
+ BKE_lattice_index_to_uvw(lt, index, &u, &v, &w);
+
+ values[0] = lt->fu + u * lt->du;
+ values[1] = lt->fv + v * lt->dv;
+ values[2] = lt->fw + w * lt->dw;
}
static void rna_LatticePoint_groups_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
More information about the Bf-blender-cvs
mailing list