[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