[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25318] trunk/blender: 2. 5 Sculpt Branch Merge
Nicholas Bishop
nicholasbishop at gmail.com
Fri Dec 11 19:42:38 CET 2009
Nice work Brecht, thanks! :)
-Nicholas
On Fri, Dec 11, 2009 at 10:30 AM, Brecht Van Lommel <brecht at blender.org> wrote:
> 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. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
More information about the Bf-committers
mailing list