Commit: 4e032fd61e4ce15845db3b0840b4dbc359df7726 Author: Darshan Kadu Date: Mon Jul 24 16:36:18 2017 +0530 Branches: experimental-build https://developer.blender.org/rB4e032fd61e4ce15845db3b0840b4dbc359df7726
experimental build for soc-17 vpaint =================================================================== A p1.orig A p1.rej M release/scripts/startup/bl_ui/space_view3d.py A release/scripts/startup/bl_ui/space_view3d.py.orig M release/scripts/startup/bl_ui/space_view3d_toolbar.py A release/scripts/startup/bl_ui/space_view3d_toolbar.py.orig A release/scripts/startup/io_mesh_ply_soc/__init__.py A release/scripts/startup/io_mesh_ply_soc/export_ply_soc.py A release/scripts/startup/io_mesh_ply_soc/import_ply_soc.py A release/scripts/startup/io_scene_fbx_soc/__init__.py A release/scripts/startup/io_scene_fbx_soc/data_types.py A release/scripts/startup/io_scene_fbx_soc/encode_bin.py A release/scripts/startup/io_scene_fbx_soc/export_fbx_bin_soc.py A release/scripts/startup/io_scene_fbx_soc/export_fbx_soc.py A release/scripts/startup/io_scene_fbx_soc/fbx2json.py A release/scripts/startup/io_scene_fbx_soc/fbx_utils.py A release/scripts/startup/io_scene_fbx_soc/import_fbx_soc.py A release/scripts/startup/io_scene_fbx_soc/json2fbx.py A release/scripts/startup/io_scene_fbx_soc/parse_fbx.py M source/blender/blenkernel/BKE_paint.h A source/blender/blenkernel/BKE_paint.h.orig M source/blender/blenkernel/BKE_pbvh.h A source/blender/blenkernel/BKE_pbvh.h.orig M source/blender/blenkernel/intern/CCGSubSurf.c A source/blender/blenkernel/intern/CCGSubSurf.c.orig M source/blender/blenkernel/intern/DerivedMesh.c A source/blender/blenkernel/intern/DerivedMesh.c.orig M source/blender/blenkernel/intern/cdderivedmesh.c A source/blender/blenkernel/intern/cdderivedmesh.c.orig M source/blender/blenkernel/intern/object.c A source/blender/blenkernel/intern/object.c.orig M source/blender/blenkernel/intern/paint.c A source/blender/blenkernel/intern/paint.c.orig M source/blender/blenkernel/intern/pbvh.c A source/blender/blenkernel/intern/pbvh.c.orig M source/blender/blenkernel/intern/pbvh_intern.h A source/blender/blenkernel/intern/pbvh_intern.h.orig M source/blender/blenkernel/intern/subsurf_ccg.c A source/blender/blenkernel/intern/subsurf_ccg.c.orig M source/blender/blenloader/intern/versioning_270.c A source/blender/blenloader/intern/versioning_270.c.orig M source/blender/blenloader/intern/versioning_defaults.c A source/blender/blenloader/intern/versioning_defaults.c.orig M source/blender/collada/GeometryExporter.cpp A source/blender/collada/GeometryExporter.cpp.orig M source/blender/editors/sculpt_paint/paint_image.c A source/blender/editors/sculpt_paint/paint_image.c.orig M source/blender/editors/sculpt_paint/paint_intern.h A source/blender/editors/sculpt_paint/paint_intern.h.orig M source/blender/editors/sculpt_paint/paint_ops.c A source/blender/editors/sculpt_paint/paint_ops.c.orig M source/blender/editors/sculpt_paint/paint_vertex.c A source/blender/editors/sculpt_paint/paint_vertex.c.orig M source/blender/editors/sculpt_paint/sculpt.c A source/blender/editors/sculpt_paint/sculpt.c.orig M source/blender/editors/sculpt_paint/sculpt_intern.h A source/blender/editors/sculpt_paint/sculpt_intern.h.orig M source/blender/editors/space_view3d/drawobject.c A source/blender/editors/space_view3d/drawobject.c.orig M source/blender/editors/space_view3d/view3d_header.c A source/blender/editors/space_view3d/view3d_header.c.orig M source/blender/gpu/intern/gpu_buffers.c A source/blender/gpu/intern/gpu_buffers.c.orig M source/blender/makesdna/DNA_brush_types.h A source/blender/makesdna/DNA_brush_types.h.orig M source/blender/makesdna/DNA_object_types.h A source/blender/makesdna/DNA_object_types.h.orig M source/blender/makesdna/DNA_scene_types.h A source/blender/makesdna/DNA_scene_types.h.orig M source/blender/makesrna/intern/rna_brush.c A source/blender/makesrna/intern/rna_brush.c.orig M source/blender/makesrna/intern/rna_mesh.c A source/blender/makesrna/intern/rna_mesh.c.orig M source/blender/makesrna/intern/rna_sculpt_paint.c A source/blender/makesrna/intern/rna_sculpt_paint.c.orig A vpaint.txt A "\357\200\233OB\357\200\233OA" A "\357\200\233OB\357\200\233OA.pub" =================================================================== diff --git a/p1.orig b/p1.orig new file mode 100644 index 00000000000..e69de29bb2d diff --git a/p1.rej b/p1.rej new file mode 100644 index 00000000000..7461baad21d --- /dev/null +++ b/p1.rej @@ -0,0 +1,3708 @@ +--- space_view3d_toolbar.py ++++ space_view3d_toolbar.py +@@ -51,6 +51,19 @@ def draw_keyframing_tools(context, layout): + row.operator("anim.keyframe_delete_v3d", text="Remove") + + ++# Used by vertex & weight paint ++def draw_vpaint_symmetry(layout, vpaint): ++ col = layout.column(align=True) ++ col.label(text="Mirror:") ++ row = col.row(align=True) ++ ++ row.prop(vpaint, "use_symmetry_x", text="X", toggle=True) ++ row.prop(vpaint, "use_symmetry_y", text="Y", toggle=True) ++ row.prop(vpaint, "use_symmetry_z", text="Z", toggle=True) ++ ++ col = layout.column() ++ col.prop(vpaint, "radial_symmetry", text="Radial") ++ + # ********** default tools for object-mode **************** + + +@@ -1132,7 +1145,11 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel): + self.prop_unified_color_picker(col, context, brush, "color", value_slider=True) + if settings.palette: + col.template_palette(settings, "palette", color=True) +- self.prop_unified_color(col, context, brush, "color", text="") ++ row = col.row(align=True) ++ self.prop_unified_color(row, context, brush, "color", text="") ++ self.prop_unified_color(row, context, brush, "secondary_color", text="") ++ row.separator() ++ row.operator("paint.brush_colors_flip", icon='FILE_REFRESH', text="") + + col.separator() + row = col.row(align=True) +@@ -1713,6 +1730,19 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel): + props.data_type = 'VGROUP_WEIGHTS' + + ++class VIEW3D_PT_tools_weightpaint_symmetry(Panel, View3DPaintPanel): ++ bl_category = "Tools" ++ bl_context = "weightpaint" ++ bl_options = {'DEFAULT_CLOSED'} ++ bl_label = "Symmetry" ++ ++ def draw(self, context): ++ layout = self.layout ++ toolsettings = context.tool_settings ++ wpaint = toolsettings.weight_paint ++ draw_vpaint_symmetry(layout, wpaint) ++ ++ + class VIEW3D_PT_tools_weightpaint_options(Panel, View3DPaintPanel): + bl_category = "Options" + bl_context = "weightpaint" +@@ -1775,6 +1805,20 @@ class VIEW3D_PT_tools_vertexpaint(Panel, View3DPaintPanel): + #~ col.label(text="Multiply:") + #~ col.prop(vpaint, "mul", text="") + ++ ++class VIEW3D_PT_tools_vertexpaint_symmetry(Panel, View3DPaintPanel): ++ bl_category = "Tools" ++ bl_context = "vertexpaint" ++ bl_options = {'DEFAULT_CLOSED'} ++ bl_label = "Symmetry" ++ ++ def draw(self, context): ++ layout = self.layout ++ toolsettings = context.tool_settings ++ vpaint = toolsettings.vertex_paint ++ draw_vpaint_symmetry(layout, vpaint) ++ ++ + # ********** default tools for texture-paint **************** + + +@@ -2054,8 +2098,10 @@ classes = ( + VIEW3D_PT_sculpt_symmetry, + VIEW3D_PT_tools_brush_appearance, + VIEW3D_PT_tools_weightpaint, ++ VIEW3D_PT_tools_weightpaint_symmetry, + VIEW3D_PT_tools_weightpaint_options, + VIEW3D_PT_tools_vertexpaint, ++ VIEW3D_PT_tools_vertexpaint_symmetry, + VIEW3D_PT_tools_imagepaint_external, + VIEW3D_PT_tools_imagepaint_symmetry, + VIEW3D_PT_tools_projectpaint, +--- BKE_paint.h ++++ BKE_paint.h +@@ -201,10 +201,30 @@ typedef struct SculptSession { + + struct SculptStroke *stroke; + struct StrokeCache *cache; ++ ++ union { ++ struct { ++ int *vert_map_mem; ++ struct MeshElemMap *vert_to_loop; ++ int *poly_map_mem; ++ struct MeshElemMap *vert_to_poly; ++ ++ unsigned int (*total_color)[3]; ++ double *total_weight; ++ unsigned int *tot_loops_hit; ++ float *max_weight; ++ unsigned int *previous_color; ++ bool building_vp_handle; ++ } vwpaint; ++ //struct { ++ //ToDo: identify sculpt-only fields ++ //} sculpt; ++ } modes; + } SculptSession; + + void BKE_sculptsession_free(struct Object *ob); + void BKE_sculptsession_free_deformMats(struct SculptSession *ss); ++void BKE_sculptsession_free_vwpaint_data(struct SculptSession *ss); + void BKE_sculptsession_bm_to_me(struct Object *ob, bool reorder); + void BKE_sculptsession_bm_to_me_for_render(struct Object *object); + void BKE_sculpt_update_mesh_elements(struct Scene *scene, struct Sculpt *sd, struct Object *ob, +--- BKE_pbvh.h ++++ BKE_pbvh.h +@@ -32,6 +32,7 @@ + + struct CCGElem; + struct CCGKey; ++struct CCGDerivedMesh; + struct CustomData; + struct DMFlagMat; + struct MPoly; +@@ -71,7 +72,7 @@ void BKE_pbvh_build_grids(PBVH *bvh, struct CCGElem **grid_elems, + struct CCGKey *key, void **gridfaces, struct DMFlagMat *flagmats, + unsigned int **grid_hidden); + void BKE_pbvh_build_bmesh(PBVH *bvh, struct BMesh *bm, bool smooth_shading, struct BMLog *log, const int cd_vert_node_offset, const int cd_face_node_offset); +- ++void BKE_pbvh_add_ccgdm(PBVH *bvh, struct CCGDerivedMesh *ccgdm); + void BKE_pbvh_free(PBVH *bvh); + void BKE_pbvh_free_layer_disp(PBVH *bvh); + +@@ -118,6 +119,7 @@ void BKE_pbvh_raycast_project_ray_root( + void BKE_pbvh_node_draw(PBVHNode *node, void *data); + void BKE_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3], + int (*setMaterial)(int matnr, void *attribs), bool wireframe, bool fast); ++void BKE_pbvh_draw_BB(PBVH *bvh); + + /* PBVH Access */ + typedef enum { +@@ -141,6 +143,7 @@ int BKE_pbvh_count_grid_quads(BLI_bitmap **grid_hidden, + + /* multires level, only valid for type == PBVH_GRIDS */ + void BKE_pbvh_get_grid_key(const PBVH *pbvh, struct CCGKey *key); ++struct CCGDerivedMesh *BKE_pbvh_get_ccgdm(const PBVH *bvh); + + /* Only valid for type == PBVH_BMESH */ + struct BMesh *BKE_pbvh_get_bmesh(PBVH *pbvh); +@@ -189,6 +192,7 @@ void BKE_pbvh_node_num_verts( + void BKE_pbvh_node_get_verts( + PBVH *bvh, PBVHNode *node, + const int **r_vert_indices, struct MVert **r_verts); ++void BKE_pbvh_get_num_nodes(const PBVH *bvh, int *r_totnode); + + void BKE_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); + void BKE_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); +--- CCGSubSurf.c ++++ CCGSubSurf.c +@@ -1196,6 +1196,7 @@ int ccgSubSurf_getNumEdges(const CCGSubSurf *ss) + } + int ccgSubSurf_getNumFaces(const CCGSubSurf *ss) + { ++ + return ss->fMap->numEntries; + } + +--- DerivedMesh.c ++++ DerivedMesh.c +@@ -2641,7 +2641,7 @@ static void mesh_build_data( + ob->lastDataMask = dataMask; + ob->lastNeedMapping = need_mapping; + +- if ((ob->mode & OB_MODE_SCULPT) && ob->sculpt) { ++ if ((ob->mode & OB_MODE_ALL_SCULPT) && ob->sculpt) { + /* create PBVH immediately (would be created on the fly too, + * but this avoids waiting on first stroke) */ + +--- cdderivedmesh.c ++++ cdderivedmesh.c +@@ -660,6 +660,11 @@ static void cdDM_drawMappedFaces( + + const int *index_mp_to_orig = dm->getPolyDataArray(dm, CD_ORIGINDEX); + ++ if (cddm->pbvh) { ++ if (G.debug_value == 14) ++ BKE_pbvh_draw_BB(cddm->pbvh); ++ } ++ + /* fist, setup common buffers */ + GPU_vertex_setup(dm); + GPU_triangle_setup(dm); +--- object.c ++++ object.c +@@ -2679,7 +2679,7 @@ void BKE_object_sculpt_modifiers_changed(Object *ob) + { + SculptSession *ss = ob->sculpt; + +- if (ss) { ++ if (ss && ss->modes.vwpaint.building_vp_handle == false) { + if (!ss->cache) { + /* we free pbvh on changes, except during sculpt since it can't deal with + * changing PVBH node organization, we hope topology does not change in +@@ -2690,6 +2690,9 @@ void BKE_object_sculpt_modifiers_changed(Object *ob) + } + + BKE_sculptsession_free_deformMats(ob->sculpt); ++ ++ /* In vertex/weight paint, force maps to be rebuilt. */ ++ BKE_sculptsession_free_vwpaint_data(ob->sculpt); + } + else { + PBVHNode **nodes; +--- paint.c ++++ paint.c +@@ -656,6 +656,22 @@ void BKE_sculptsession_free_deformMats(SculptSession *ss) + MEM_SAFE_FREE(ss->deform_imats); + } + ++void BKE_sculptsession_free_vwpaint_data(struct SculptSession *ss) ++{ ++ /* Free maps */ ++ MEM_SAFE_FREE(ss->modes.vwpaint.vert_to_loop); ++ MEM_SAFE_FREE(ss->modes.vwpaint.vert_map_mem); ++ MEM_SAFE_FREE(ss->modes.vwpaint.vert_to_poly); ++ MEM_SAFE_FREE(ss->modes.vwpaint.poly_map_mem); ++ ++ /* Free average, blur, and spray brush arrays */ ++ MEM_SAFE_FREE(ss->modes.vwpaint.tot_loops_hit); ++ MEM_SAFE_FREE(ss->modes.vwpaint.total_color); ++ MEM_SAFE_FREE(ss->modes.vwpaint.total_weight); ++ MEM_SAFE_FREE(ss->modes.vwpaint.max_weight); ++ MEM_SAFE_FREE(ss->modes.vwpaint.previous_color); ++} ++ + /* Write out the sculpt dynamic-topology BMesh to the Mesh */ + static void sculptsession_bm_to_me_update_data_only(Object *ob, bool reorder) + { +@@ -697,10 +713,7 @@ void BKE_sculptsession_bm_to_me_for_render(Object *object) + */ + BKE_object_free_derived_caches(object); + +- if (object->sculpt->pbvh) { +- BKE_pbvh_free(object->sculpt->pbvh); +- object->sculpt->pbvh = NULL; +- } ++ MEM_SAFE_FREE(object->sculpt->pbvh); + + sculptsession_bm_to_me_update_data_only(object, false); + +@@ -747,6 +760,8 @@ void BKE_sculptsession_free(Object *ob) + if (ss->deform_imats) + MEM_freeN(ss->deform_imats); + ++ BKE_sculptsession_free_vwpaint_data(ob->sculpt); ++ + MEM_freeN(ss); + + ob->sculpt = NULL; +@@ -831,6 +846,9 @@ void BKE_sculpt_update_mesh_elements(Scene *scene, Sculpt *sd, Object *ob, + ss->modifiers_active = sculpt_modifiers_active(scene, sd, ob); + ss->show_diffuse_color = (sd->flags & SCULPT_SHOW_DIFFUSE) != 0; + ++ /* This flag prevents PBVH from being freed when creating the vp_handle for texture paint */ ++ ss->modes.vwpaint.building_vp_handle = false; ++ + if (need_mask) { + if (mmd == NULL) { + if (!CustomData_has_layer(&me->vdata, CD_PAINT_MASK)) { +@@ -859,7 +877,8 @@ void BKE_sculpt_update_mesh_elements(Scene *scene, Sculpt *sd, Object *ob, + + dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); + +- if (mmd) { ++ /* VWPaint require mesh info for loop lookup, so require sculpt mode here */ ++ if (mmd && ob- @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs