[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25318] trunk/blender: 2. 5 Sculpt Branch Merge
Brecht Van Lommel
brecht at blender.org
Fri Dec 11 16:30:39 CET 2009
Revision: 25318
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25318
Author: blendix
Date: 2009-12-11 16:30:38 +0100 (Fri, 11 Dec 2009)
Log Message:
-----------
2.5 Sculpt Branch Merge
http://www.blender.org/development/release-logs/blender-250/sculpt-and-multiresolution/
Release logs are work in progress, also check missing items on that
page, there's still a few things that need work.
Quick summary of the changes:
* Use BVH for optimizing sculpt mode, doing only editing and updates
on nearby nodes.
* Memory reduction by use of CCG grids for subsurf, own undo stack,
no vertex-face map, no origindex, .. .
* Multithreading for sculpting, multires, and subsurf.
* Optional external file storage for multires displacements.
* Various tweaks to brush behavior.
Modified Paths:
--------------
trunk/blender/release/scripts/op/object.py
trunk/blender/release/scripts/ui/properties_data_modifier.py
trunk/blender/release/scripts/ui/space_view3d_toolbar.py
trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h
trunk/blender/source/blender/blenkernel/BKE_blender.h
trunk/blender/source/blender/blenkernel/BKE_customdata.h
trunk/blender/source/blender/blenkernel/BKE_modifier.h
trunk/blender/source/blender/blenkernel/BKE_multires.h
trunk/blender/source/blender/blenkernel/BKE_paint.h
trunk/blender/source/blender/blenkernel/BKE_subsurf.h
trunk/blender/source/blender/blenkernel/BKE_utildefines.h
trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c
trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.h
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
trunk/blender/source/blender/blenkernel/intern/brush.c
trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
trunk/blender/source/blender/blenkernel/intern/constraint.c
trunk/blender/source/blender/blenkernel/intern/customdata.c
trunk/blender/source/blender/blenkernel/intern/displist.c
trunk/blender/source/blender/blenkernel/intern/lattice.c
trunk/blender/source/blender/blenkernel/intern/modifier.c
trunk/blender/source/blender/blenkernel/intern/multires.c
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/blenkernel/intern/paint.c
trunk/blender/source/blender/blenkernel/intern/particle.c
trunk/blender/source/blender/blenkernel/intern/particle_system.c
trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
trunk/blender/source/blender/blenlib/CMakeLists.txt
trunk/blender/source/blender/blenlib/SConscript
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/blenloader/intern/writefile.c
trunk/blender/source/blender/editors/include/ED_sculpt.h
trunk/blender/source/blender/editors/include/ED_view3d.h
trunk/blender/source/blender/editors/mesh/editface.c
trunk/blender/source/blender/editors/object/object_intern.h
trunk/blender/source/blender/editors/object/object_modifier.c
trunk/blender/source/blender/editors/object/object_ops.c
trunk/blender/source/blender/editors/physics/particle_edit.c
trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
trunk/blender/source/blender/editors/sculpt_paint/paint_intern.h
trunk/blender/source/blender/editors/sculpt_paint/paint_ops.c
trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
trunk/blender/source/blender/editors/sculpt_paint/sculpt_intern.h
trunk/blender/source/blender/editors/space_file/file_draw.c
trunk/blender/source/blender/editors/space_file/filelist.c
trunk/blender/source/blender/editors/space_file/filesel.c
trunk/blender/source/blender/editors/space_view3d/drawobject.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
trunk/blender/source/blender/editors/space_view3d/view3d_select.c
trunk/blender/source/blender/editors/space_view3d/view3d_view.c
trunk/blender/source/blender/editors/util/ed_util.c
trunk/blender/source/blender/editors/util/undo.c
trunk/blender/source/blender/gpu/gpu_buffers.h
trunk/blender/source/blender/gpu/intern/gpu_buffers.c
trunk/blender/source/blender/makesdna/DNA_brush_types.h
trunk/blender/source/blender/makesdna/DNA_customdata_types.h
trunk/blender/source/blender/makesdna/DNA_meshdata_types.h
trunk/blender/source/blender/makesdna/DNA_modifier_types.h
trunk/blender/source/blender/makesdna/DNA_scene_types.h
trunk/blender/source/blender/makesdna/DNA_space_types.h
trunk/blender/source/blender/makesdna/DNA_view3d_types.h
trunk/blender/source/blender/makesrna/intern/rna_brush.c
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
trunk/blender/source/blender/makesrna/intern/rna_sculpt_paint.c
trunk/blender/source/blender/render/intern/source/convertblender.c
trunk/blender/source/blender/windowmanager/intern/wm_files.c
trunk/blender/source/blender/windowmanager/intern/wm_operators.c
Added Paths:
-----------
trunk/blender/source/blender/blenkernel/BKE_customdata_file.h
trunk/blender/source/blender/blenkernel/intern/customdata_file.c
trunk/blender/source/blender/blenlib/BLI_pbvh.h
trunk/blender/source/blender/blenlib/intern/pbvh.c
trunk/blender/source/blender/editors/sculpt_paint/paint_undo.c
Modified: trunk/blender/release/scripts/op/object.py
===================================================================
--- trunk/blender/release/scripts/op/object.py 2009-12-11 15:02:46 UTC (rev 25317)
+++ trunk/blender/release/scripts/op/object.py 2009-12-11 15:30:38 UTC (rev 25318)
@@ -75,16 +75,16 @@
row.prop(props, "extend")
-class SubsurfSet(bpy.types.Operator):
+class SubdivisionSet(bpy.types.Operator):
'''Sets a Subdivision Surface Level (1-5)'''
- bl_idname = "object.subsurf_set"
- bl_label = "Subsurf Set"
+ bl_idname = "object.subdivision_set"
+ bl_label = "Subdivision Set"
bl_register = True
bl_undo = True
level = IntProperty(name="Level",
- default=1, min=0, max=6)
+ default=1, min=0, max=100, soft_min=0, soft_max=6)
def poll(self, context):
ob = context.active_object
@@ -94,7 +94,11 @@
level = self.properties.level
ob = context.active_object
for mod in ob.modifiers:
- if mod.type == 'SUBSURF':
+ if mod.type == 'MULTIRES' and ob.mode == 'SCULPT':
+ if mod.sculpt_levels != level:
+ mod.sculpt_levels = level
+ return ('FINISHED',)
+ elif mod.type == 'SUBSURF' or mod.type == 'MULTIRES':
if mod.levels != level:
mod.levels = level
return ('FINISHED',)
@@ -120,5 +124,6 @@
bpy.ops.add(SelectPattern)
-bpy.ops.add(SubsurfSet)
+bpy.ops.add(SubdivisionSet)
bpy.ops.add(Retopo)
+
Modified: trunk/blender/release/scripts/ui/properties_data_modifier.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_modifier.py 2009-12-11 15:02:46 UTC (rev 25317)
+++ trunk/blender/release/scripts/ui/properties_data_modifier.py 2009-12-11 15:30:38 UTC (rev 25318)
@@ -432,17 +432,34 @@
layout.row().prop(md, "subdivision_type", expand=True)
else:
layout.row().prop(md, "subdivision_type", text="")
- layout.prop(md, "level")
split = layout.split()
-
col = split.column()
- col.operator("object.multires_subdivide", text="Subdivide")
+ col.prop(md, "levels", text="Preview")
+ col.prop(md, "sculpt_levels", text="Sculpt")
+ col.prop(md, "render_levels", text="Render")
if wide_ui:
col = split.column()
+
+ col.enabled = ob.mode != 'EDIT'
+ col.operator("object.multires_subdivide", text="Subdivide")
col.operator("object.multires_higher_levels_delete", text="Delete Higher")
+ col.prop(md, "optimal_display")
+ layout.separator()
+
+ col = layout.column()
+ row = col.row()
+ if md.external:
+ row.operator("object.multires_pack_external", text="Pack External")
+ row.label()
+ row = col.row()
+ row.prop(md, "filename", text="")
+ else:
+ row.operator("object.multires_save_external", text="Save External...")
+ row.label()
+
def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui):
layout.prop(md, "object")
layout.prop(md, "particle_system_number", text="Particle System")
@@ -598,8 +615,7 @@
if wide_ui:
col = split.column()
col.label(text="Options:")
- col.prop(md, "optimal_draw", text="Optimal Display")
- col.prop(md, "subsurf_uv")
+ col.prop(md, "optimal_display")
def SURFACE(self, layout, ob, md, wide_ui):
layout.label(text="See Fields panel.")
Modified: trunk/blender/release/scripts/ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d_toolbar.py 2009-12-11 15:02:46 UTC (rev 25317)
+++ trunk/blender/release/scripts/ui/space_view3d_toolbar.py 2009-12-11 15:30:38 UTC (rev 25318)
@@ -553,6 +553,9 @@
if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'):
col.row().prop(brush, "direction", expand=True)
+ if brush.sculpt_tool in ('DRAW', 'INFLATE', 'LAYER'):
+ col.prop(brush, "use_accumulate")
+
if brush.sculpt_tool == 'LAYER':
col.prop(brush, "use_persistent")
col.operator("sculpt.set_persistent_base")
@@ -695,8 +698,8 @@
sculpt = context.tool_settings.sculpt
col = layout.column()
- col.prop(sculpt, "partial_redraw", text="Partial Refresh")
col.prop(sculpt, "show_brush")
+ col.prop(sculpt, "fast_navigate")
split = self.layout.split()
Modified: trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h 2009-12-11 15:02:46 UTC (rev 25317)
+++ trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h 2009-12-11 15:30:38 UTC (rev 25318)
@@ -60,12 +60,24 @@
struct ColorBand;
struct GPUVertexAttribs;
struct GPUDrawObject;
+struct ListBase;
+struct PBVH;
/* number of sub-elements each mesh element has (for interpolation) */
#define SUB_ELEMS_VERT 0
#define SUB_ELEMS_EDGE 2
#define SUB_ELEMS_FACE 4
+typedef struct DMGridData {
+ float co[3];
+ float no[3];
+} DMGridData;
+
+typedef struct DMGridAdjacency {
+ int index[4];
+ int rotation[4];
+} DMGridAdjacency;
+
typedef struct DerivedMesh DerivedMesh;
struct DerivedMesh {
/* Private DerivedMesh data, only for internal DerivedMesh use */
@@ -133,6 +145,13 @@
void *(*getEdgeDataArray)(DerivedMesh *dm, int type);
void *(*getFaceDataArray)(DerivedMesh *dm, int type);
+ /* optional grid access for subsurf */
+ int (*getNumGrids)(DerivedMesh *dm);
+ int (*getGridSize)(DerivedMesh *dm);
+ DMGridData **(*getGridData)(DerivedMesh *dm);
+ DMGridAdjacency *(*getGridAdjacency)(DerivedMesh *dm);
+ int *(*getGridOffset)(DerivedMesh *dm);
+
/* Iterate over each mapped vertex in the derived mesh, calling the
* given function with the original vert and the mapped vert's new
* coordinate and normal. For historical reasons the normal can be
@@ -181,6 +200,14 @@
/* Get vertex normal, undefined if index is not valid */
void (*getVertNo)(DerivedMesh *dm, int index, float no_r[3]);
+ /* Get a map of vertices to faces
+ */
+ struct ListBase *(*getFaceMap)(DerivedMesh *dm);
+
+ /* Get the BVH used for paint modes
+ */
+ struct PBVH *(*getPBVH)(struct Object *ob, DerivedMesh *dm);
+
/* Drawing Operations */
/* Draw all vertices as bgl points (no options) */
@@ -205,8 +232,8 @@
*
* Also called for *final* editmode DerivedMeshes
*/
- void (*drawFacesSolid)(DerivedMesh *dm,
- int (*setMaterial)(int, void *attribs));
+ void (*drawFacesSolid)(DerivedMesh *dm, float (*partial_redraw_planes)[4],
+ int fast, int (*setMaterial)(int, void *attribs));
/* Draw all faces
* o If useTwoSided, draw front and back using col arrays
Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h 2009-12-11 15:02:46 UTC (rev 25317)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h 2009-12-11 15:30:38 UTC (rev 25318)
@@ -43,7 +43,7 @@
struct ReportList;
#define BLENDER_VERSION 250
-#define BLENDER_SUBVERSION 8
+#define BLENDER_SUBVERSION 9
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
Modified: trunk/blender/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_customdata.h 2009-12-11 15:02:46 UTC (rev 25317)
+++ trunk/blender/source/blender/blenkernel/BKE_customdata.h 2009-12-11 15:30:38 UTC (rev 25318)
@@ -32,6 +32,7 @@
#ifndef BKE_CUSTOMDATA_H
#define BKE_CUSTOMDATA_H
+struct ID;
struct CustomData;
struct CustomDataLayer;
typedef unsigned int CustomDataMask;
@@ -278,4 +279,19 @@
void CustomData_to_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata);
void CustomData_from_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata, int total);
void CustomData_bmesh_init_pool(struct CustomData *data, int allocsize);
+
+/* External file storage */
+
+void CustomData_external_add(struct CustomData *data,
+ struct ID *id, int type, int totelem, const char *filename);
+void CustomData_external_remove(struct CustomData *data,
+ struct ID *id, int type, int totelem);
+int CustomData_external_test(struct CustomData *data, int type);
+
+void CustomData_external_write(struct CustomData *data,
+ struct ID *id, CustomDataMask mask, int totelem, int free);
+void CustomData_external_read(struct CustomData *data,
+ struct ID *id, CustomDataMask mask, int totelem);
+
#endif
+
Copied: trunk/blender/source/blender/blenkernel/BKE_customdata_file.h (from rev 25316, branches/sculpt25/source/blender/blenkernel/BKE_customdata_file.h)
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_customdata_file.h (rev 0)
+++ trunk/blender/source/blender/blenkernel/BKE_customdata_file.h 2009-12-11 15:30:38 UTC (rev 25318)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BKE_CUSTOMDATA_FILE_H
+#define BKE_CUSTOMDATA_FILE_H
+
+#define CDF_TYPE_IMAGE 0
+#define CDF_TYPE_MESH 1
+
+#define CDF_LAYER_NAME_MAX 64
+
+typedef struct CDataFile CDataFile;
+typedef struct CDataFileLayer CDataFileLayer;
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list