Blender  V3.3
Classes
sculpt_brush_types.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_dial_2d.h"
#include "BLI_ghash.h"
#include "BLI_gsqueue.h"
#include "BLI_hash.h"
#include "BLI_math.h"
#include "BLI_math_color.h"
#include "BLI_math_color_blend.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "PIL_time.h"
#include "DNA_brush_types.h"
#include "DNA_customdata_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BKE_brush.h"
#include "BKE_ccg.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_image.h"
#include "BKE_kelvinlet.h"
#include "BKE_key.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_mesh.h"
#include "BKE_mesh_mapping.h"
#include "BKE_mesh_mirror.h"
#include "BKE_modifier.h"
#include "BKE_multires.h"
#include "BKE_node.h"
#include "BKE_object.h"
#include "BKE_paint.h"
#include "BKE_particle.h"
#include "BKE_pbvh.h"
#include "BKE_pointcache.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BKE_subdiv_ccg.h"
#include "BKE_subsurf.h"
#include "DEG_depsgraph.h"
#include "IMB_colormanagement.h"
#include "WM_api.h"
#include "WM_message.h"
#include "WM_toolsystem.h"
#include "WM_types.h"
#include "ED_object.h"
#include "ED_screen.h"
#include "ED_sculpt.h"
#include "ED_view3d.h"
#include "paint_intern.h"
#include "sculpt_intern.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "bmesh.h"
#include "bmesh_tools.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>

Go to the source code of this file.

Classes

struct  SculptProjectVector
 
struct  ClaySampleData
 

Functions

Sculpt Draw Brush
static void do_draw_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_draw_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Fill Brush
static void do_fill_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_fill_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_scrape_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_scrape_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Clay Thumb Brush
static void do_clay_thumb_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
float SCULPT_clay_thumb_get_stabilized_pressure (StrokeCache *cache)
 
void SCULPT_do_clay_thumb_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Flatten Brush
static void do_flatten_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_flatten_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Crease & Blob Brush
static void do_crease_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_crease_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_pinch_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_pinch_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_grab_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_grab_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_elastic_deform_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict UNUSED(tls))
 
void SCULPT_do_elastic_deform_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Draw Sharp Brush
static void do_draw_sharp_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_draw_sharp_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Topology Brush
static void do_topology_slide_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_relax_vertex (SculptSession *ss, PBVHVertexIter *vd, float factor, bool filter_boundary_face_sets, float *r_final_pos)
 
static void do_topology_relax_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_slide_relax_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Multires Displacement Eraser Brush
static void do_displacement_eraser_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_displacement_eraser_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Multires Displacement Smear Brush
static void do_displacement_smear_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
static void do_displacement_smear_store_prev_disp_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict UNUSED(tls))
 
void SCULPT_do_displacement_smear_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
Sculpt Topology Rake (Shared Utility)
static void do_topology_rake_bmesh_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_bmesh_topology_rake (Sculpt *sd, Object *ob, PBVHNode **nodes, const int totnode, float bstrength)
 
Sculpt Mask Brush
static void do_mask_brush_draw_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_mask_brush_draw (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
void SCULPT_do_mask_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 

SculptProjectVector

Fast-path for project_plane_v3_v3v3

typedef struct SculptProjectVector SculptProjectVector
 
static bool plane_point_side_flip (const float co[3], const float plane[4], const bool flip)
 
static void sculpt_project_v3_cache_init (SculptProjectVector *spvc, const float plane[3])
 
static void sculpt_project_v3 (const SculptProjectVector *spvc, const float vec[3], float r_vec[3])
 
static void calc_sculpt_plane (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_no[3], float r_area_co[3])
 
static void sculpt_rake_rotate (const SculptSession *ss, const float sculpt_co[3], const float v_co[3], float factor, float r_delta[3])
 
static void sculpt_project_v3_normal_align (SculptSession *ss, const float normal_weight, float grab_delta[3])
 

Sculpt Clay Brush

typedef struct ClaySampleData ClaySampleData
 
static void calc_clay_surface_task_cb (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
static void calc_clay_surface_reduce (const void *__restrict UNUSED(userdata), void *__restrict chunk_join, void *__restrict chunk)
 
static void do_clay_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_clay_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_clay_strips_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_clay_strips_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_snake_hook_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_snake_hook_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_thumb_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_thumb_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_rotate_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_rotate_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_layer_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_layer_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_inflate_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_inflate_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
static void do_nudge_brush_task_cb_ex (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict tls)
 
void SCULPT_do_nudge_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 

Detailed Description

Implements the Sculpt Mode tools.

Definition in file sculpt_brush_types.c.

Typedef Documentation

◆ ClaySampleData

◆ SculptProjectVector

Function Documentation

◆ calc_clay_surface_reduce()

static void calc_clay_surface_reduce ( const void *__restrict   UNUSEDuserdata,
void *__restrict  chunk_join,
void *__restrict  chunk 
)
static

Definition at line 892 of file sculpt_brush_types.c.

References MIN2, and ClaySampleData::plane_dist.

Referenced by SCULPT_do_clay_brush().

◆ calc_clay_surface_task_cb()

static void calc_clay_surface_task_cb ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ calc_sculpt_plane()

static void calc_sculpt_plane ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode,
float  r_area_no[3],
float  r_area_co[3] 
)
static

◆ do_clay_brush_task_cb_ex()

static void do_clay_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_clay_strips_brush_task_cb_ex()

static void do_clay_strips_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_clay_thumb_brush_task_cb_ex()

static void do_clay_thumb_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_crease_brush_task_cb_ex()

static void do_crease_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_displacement_eraser_brush_task_cb_ex()

static void do_displacement_eraser_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_displacement_smear_brush_task_cb_ex()

static void do_displacement_smear_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_displacement_smear_store_prev_disp_task_cb_ex()

static void do_displacement_smear_store_prev_disp_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict   UNUSEDtls 
)
static

◆ do_draw_brush_task_cb_ex()

static void do_draw_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_draw_sharp_brush_task_cb_ex()

static void do_draw_sharp_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_elastic_deform_brush_task_cb_ex()

static void do_elastic_deform_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict   UNUSEDtls 
)
static

◆ do_fill_brush_task_cb_ex()

static void do_fill_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_flatten_brush_task_cb_ex()

static void do_flatten_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_grab_brush_task_cb_ex()

static void do_grab_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_inflate_brush_task_cb_ex()

static void do_inflate_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_layer_brush_task_cb_ex()

static void do_layer_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_mask_brush_draw_task_cb_ex()

static void do_mask_brush_draw_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_nudge_brush_task_cb_ex()

static void do_nudge_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_pinch_brush_task_cb_ex()

static void do_pinch_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_rotate_brush_task_cb_ex()

static void do_rotate_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_scrape_brush_task_cb_ex()

static void do_scrape_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_snake_hook_brush_task_cb_ex()

static void do_snake_hook_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_thumb_brush_task_cb_ex()

static void do_thumb_brush_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_topology_rake_bmesh_task_cb_ex()

static void do_topology_rake_bmesh_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_topology_relax_task_cb_ex()

static void do_topology_relax_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ do_topology_slide_task_cb_ex()

static void do_topology_slide_task_cb_ex ( void *__restrict  userdata,
const int  n,
const TaskParallelTLS *__restrict  tls 
)
static

◆ plane_point_side_flip()

static bool plane_point_side_flip ( const float  co[3],
const float  plane[4],
const bool  flip 
)
static

Definition at line 104 of file sculpt_brush_types.c.

References plane_point_side_v3().

Referenced by do_clay_strips_brush_task_cb_ex().

◆ SCULPT_bmesh_topology_rake()

void SCULPT_bmesh_topology_rake ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
const int  totnode,
float  bstrength 
)

◆ SCULPT_clay_thumb_get_stabilized_pressure()

float SCULPT_clay_thumb_get_stabilized_pressure ( StrokeCache cache)

◆ SCULPT_do_clay_brush()

void SCULPT_do_clay_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_clay_strips_brush()

void SCULPT_do_clay_strips_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_clay_thumb_brush()

void SCULPT_do_clay_thumb_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_crease_brush()

void SCULPT_do_crease_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_displacement_eraser_brush()

void SCULPT_do_displacement_eraser_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_displacement_smear_brush()

void SCULPT_do_displacement_smear_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_draw_brush()

void SCULPT_do_draw_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_draw_sharp_brush()

void SCULPT_do_draw_sharp_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_elastic_deform_brush()

void SCULPT_do_elastic_deform_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_fill_brush()

void SCULPT_do_fill_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_flatten_brush()

void SCULPT_do_flatten_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_grab_brush()

void SCULPT_do_grab_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_inflate_brush()

void SCULPT_do_inflate_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_layer_brush()

void SCULPT_do_layer_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_mask_brush()

void SCULPT_do_mask_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_mask_brush_draw()

void SCULPT_do_mask_brush_draw ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_nudge_brush()

void SCULPT_do_nudge_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_pinch_brush()

void SCULPT_do_pinch_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_rotate_brush()

void SCULPT_do_rotate_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_scrape_brush()

void SCULPT_do_scrape_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_slide_relax_brush()

void SCULPT_do_slide_relax_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_snake_hook_brush()

void SCULPT_do_snake_hook_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_thumb_brush()

void SCULPT_do_thumb_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ sculpt_project_v3()

static void sculpt_project_v3 ( const SculptProjectVector spvc,
const float  vec[3],
float  r_vec[3] 
)
static

◆ sculpt_project_v3_cache_init()

static void sculpt_project_v3_cache_init ( SculptProjectVector spvc,
const float  plane[3] 
)
static

◆ sculpt_project_v3_normal_align()

static void sculpt_project_v3_normal_align ( SculptSession ss,
const float  normal_weight,
float  grab_delta[3] 
)
static

Align the grab delta to the brush normal.

Parameters
grab_deltaTypically from ss->cache->grab_delta_symmetry.

Definition at line 257 of file sculpt_brush_types.c.

References SculptSession::cache, dot_v3v3(), fabsf, madd_v3_v3fl(), mul_v3_fl(), project_plane_v3_v3v3(), StrokeCache::sculpt_normal_symm, and StrokeCache::view_normal.

Referenced by SCULPT_do_elastic_deform_brush(), SCULPT_do_grab_brush(), and SCULPT_do_snake_hook_brush().

◆ sculpt_rake_rotate()

static void sculpt_rake_rotate ( const SculptSession ss,
const float  sculpt_co[3],
const float  v_co[3],
float  factor,
float  r_delta[3] 
)
static

◆ SCULPT_relax_vertex()

void SCULPT_relax_vertex ( SculptSession ss,
PBVHVertexIter vd,
float  factor,
bool  filter_boundary_face_sets,
float r_final_pos 
)