[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15054] branches/soc-2008-nicholasbishop/ source/blender: == Multires ==
Nicholas Bishop
nicholasbishop at gmail.com
Fri May 30 03:02:54 CEST 2008
Revision: 15054
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15054
Author: nicholasbishop
Date: 2008-05-30 03:02:40 +0200 (Fri, 30 May 2008)
Log Message:
-----------
== Multires ==
* Added an MDisps customdata layer to store multires displacements in
Modified Paths:
--------------
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/customdata.c
branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_customdata_types.h
branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_meshdata_types.h
Modified: branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/customdata.c 2008-05-29 22:14:12 UTC (rev 15053)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/customdata.c 2008-05-30 01:02:40 UTC (rev 15054)
@@ -357,6 +357,29 @@
for(i = 0; i < count; i++)
osf[i] = default_osf;
}
+
+void layerCopy_mdisps(const void *source, void *dest, int count)
+{
+ int i;
+ MDisps *s = source, *d = dest;
+
+ for(i = 0; i < count; ++i) {
+ if(s[i].disps)
+ d[i].disps = MEM_dupallocN(s[i].disps);
+ }
+}
+
+void layerFree_mdisps(void *data, int count, int size)
+{
+ int i;
+ MDisps *d = data;
+
+ for(i = 0; i < count; ++i) {
+ if(d->disps)
+ MEM_freeN(d->disps);
+ }
+}
+
/* --------- */
@@ -454,13 +477,15 @@
{sizeof(MStringProperty), "MStringProperty",1,"String",NULL,NULL,NULL,NULL},
{sizeof(OrigSpaceFace), "OrigSpaceFace", 1, "UVTex", layerCopy_origspace_face, NULL,
layerInterp_origspace_face, layerSwap_origspace_face, layerDefault_origspace_face},
- {sizeof(float)*3, "", 0, NULL, NULL, NULL, NULL, NULL, NULL}
+ {sizeof(float)*3, "", 0, NULL, NULL, NULL, NULL, NULL, NULL},
+ {sizeof(MDisps), "MDisps", 1, NULL, layerCopy_mdisps,
+ layerFree_mdisps, NULL, NULL, NULL}
};
const char *LAYERTYPENAMES[CD_NUMTYPES] = {
"CDMVert", "CDMSticky", "CDMDeformVert", "CDMEdge", "CDMFace", "CDMTFace",
"CDMCol", "CDOrigIndex", "CDNormal", "CDFlags","CDMFloatProperty",
- "CDMIntProperty","CDMStringProperty", "CDOrigSpace", "CDOrco"};
+ "CDMIntProperty","CDMStringProperty", "CDOrigSpace", "CDOrco", "CDMDisps"};
const CustomDataMask CD_MASK_BAREMESH =
CD_MASK_MVERT | CD_MASK_MEDGE | CD_MASK_MFACE;
Modified: branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_customdata_types.h
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_customdata_types.h 2008-05-29 22:14:12 UTC (rev 15053)
+++ branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_customdata_types.h 2008-05-30 01:02:40 UTC (rev 15054)
@@ -66,7 +66,8 @@
#define CD_PROP_STR 12
#define CD_ORIGSPACE 13 /* for modifier stack face location mapping */
#define CD_ORCO 14
-#define CD_NUMTYPES 15
+#define CD_MDISPS 15
+#define CD_NUMTYPES 16
/* Bits for CustomDataMask */
#define CD_MASK_MVERT (1 << CD_MVERT)
@@ -84,6 +85,7 @@
#define CD_MASK_PROP_STR (1 << CD_PROP_STR)
#define CD_MASK_ORIGSPACE (1 << CD_ORIGSPACE)
#define CD_MASK_ORCO (1 << CD_ORCO)
+#define CD_MASK_MDISPS (1 << CD_MDISPS)
/* CustomData.flag */
Modified: branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_meshdata_types.h
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_meshdata_types.h 2008-05-29 22:14:12 UTC (rev 15053)
+++ branches/soc-2008-nicholasbishop/source/blender/makesdna/DNA_meshdata_types.h 2008-05-30 01:02:40 UTC (rev 15054)
@@ -100,6 +100,10 @@
float uv[4][2];
} OrigSpaceFace;
+typedef struct MDisps {
+ float (*disps)[3];
+} MDisps;
+
/* Multiresolution modeling */
typedef struct MultiresCol {
float a, r, g, b;
More information about the Bf-blender-cvs
mailing list